View Javadoc
1 /***************************************************************************** 2 * Virtual Mockup for Machine Vision 3 * Copyright (C) 2001-2003 Fabio R. de Miranda, João E. Kogler Jr., 4 * Carlos S. Santos. 5 * Virtual Mockup for Machine Vision Project funded by SENAC-SP 6 * 7 * Permission is granted to redistribute and/or modify this 8 * software under the terms of the GNU Lesser General Public 9 * License as published by the Free Software Foundation; either 10 * version 2.1 of the License, or (at your option) any later version. 11 * 12 * This software is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * Lesser General Public License (http://www.gnu.org/copyleft/lesser.html) 16 * for more details. 17 * 18 *****************************************************************************/ 19 20 package camera3d; 21 22 import javax.vecmath.*; 23 import java.awt.GraphicsEnvironment; 24 import java.awt.Frame; 25 import javax.media.j3d.*; 26 import javax.media.j3d.GeometryArray; 27 //import com.sun.j3d.utils.*; 28 import com.sun.j3d.utils.universe.*; 29 import java.io.*; 30 import com.sun.j3d.utils.behaviors.keyboard.*; 31 import java.util.*; 32 import java.net.URL; 33 import javax.media.j3d.J3DGraphics2D; 34 import java.awt.Color; 35 import java.text.NumberFormat; 36 import javax.swing.ImageIcon; 37 38 /*** 39 * AvatarManager creates and manages, in a transparent way, geometry that is used as 40 * avatars to lights and cameras. 41 * 42 * @author Fábio Roberto de Miranda, Carlos da Silva dos Santos 43 * @version 1.0 44 */ 45 public class AvatarManager { 46 47 static private AvatarManager avatarManager = null; 48 49 private Appearance cameraAppearance; 50 private Appearance lightAppearance; 51 52 private Shape3D cameraShape; 53 private Shape3D spotLightShape; 54 private Shape3D directLightShape; 55 private Shape3D pointLightShape; 56 private Vector avatarTGs = new Vector(30, 10); 57 58 private TransparencyAttributes normalTransparencyAttributes; 59 private RenderingAttributes renderAttributes; 60 private PolygonAttributes normalPolyAttributes; 61 62 private ColoringAttributes cameraColoringAttributes; 63 private ColoringAttributes lightColoringAttributes; 64 65 66 private AvatarManager() { 67 normalTransparencyAttributes = new TransparencyAttributes(); 68 normalTransparencyAttributes.setTransparency(0.0f); 69 renderAttributes = new RenderingAttributes(); 70 renderAttributes.setCapability(RenderingAttributes.ALLOW_VISIBLE_READ); 71 renderAttributes.setCapability(RenderingAttributes.ALLOW_VISIBLE_WRITE); 72 renderAttributes.setVisible(true); 73 74 normalPolyAttributes = new PolygonAttributes(PolygonAttributes.POLYGON_LINE, PolygonAttributes.CULL_BACK, 0.0f); 75 76 cameraAppearance = new Appearance(); 77 cameraAppearance.setPolygonAttributes(normalPolyAttributes); 78 //cameraAppearance.setCapability(Appearance.ALLOW_TRANSPARENCY_ATTRIBUTES_READ); 79 //cameraAppearance.setCapability(Appearance.ALLOW_TRANSPARENCY_ATTRIBUTES_WRITE); 80 //cameraAppearance.setCapability(Appearance.ALLOW_POLYGON_ATTRIBUTES_WRITE); 81 cameraAppearance.setTransparencyAttributes(normalTransparencyAttributes); 82 cameraAppearance.setRenderingAttributes(renderAttributes); 83 // Defines colors for camera avatars 84 Color3f cameraAvatarColor = new Color3f(0.09f, 0.73f, 1.f); 85 cameraColoringAttributes = new ColoringAttributes(cameraAvatarColor, ColoringAttributes.FASTEST); 86 cameraAppearance.setColoringAttributes(cameraColoringAttributes); 87 88 cameraShape = createCameraGeometry(cameraAppearance); 89 90 lightAppearance = new Appearance(); 91 lightAppearance.setPolygonAttributes(normalPolyAttributes); 92 lightAppearance.setRenderingAttributes(renderAttributes); 93 // Defines colors for light avatars 94 Color3f lightAvatarColor = new Color3f(1.f, 1.f, 0.f); 95 lightColoringAttributes = new ColoringAttributes(lightAvatarColor, ColoringAttributes.FASTEST); 96 lightAppearance.setColoringAttributes(lightColoringAttributes); 97 98 spotLightShape = createSpotLightGeometry(lightAppearance); 99 directLightShape = createDirectLightGeometry(lightAppearance); 100 pointLightShape = createPointLightGeometry(lightAppearance); 101 } 102 103 /*** 104 * Returns singleton instance of AvatarManager. 105 */ 106 public static AvatarManager getAvatarManager(){ 107 if (avatarManager == null){ 108 avatarManager = new AvatarManager(); 109 } 110 return avatarManager; 111 } 112 113 void debug(String s){ 114 if (GUIControl.debugflag){ 115 System.out.println(s); 116 } 117 } 118 119 /*** 120 * Traverses the scene graph under n and set all geometries to wireframe. 121 * @param n root node for method execution. 122 * @param app Appearance used by geometries. 123 */ 124 private void traverseAndSetToWire(Node n, Appearance app){ 125 n.setCapability(Node.ALLOW_LOCAL_TO_VWORLD_READ); 126 if (n instanceof Group){ 127 ((Group)n).setCapability(Group.ALLOW_CHILDREN_EXTEND); 128 ((Group)n).setCapability(Group.ALLOW_CHILDREN_READ); 129 ((Group)n).setCapability(Group.ALLOW_CHILDREN_WRITE); 130 Enumeration enum = ((Group)n).getAllChildren(); 131 while (enum.hasMoreElements()){ 132 Node child = (Node)enum.nextElement(); 133 traverseAndSetToWire(child, app); 134 } 135 } else if (n instanceof Shape3D){ 136 Shape3D shape = (Shape3D)n; 137 shape.setCapability(Shape3D.ALLOW_GEOMETRY_READ); 138 shape.setCapability(Shape3D.ALLOW_GEOMETRY_WRITE); 139 shape.setAppearance(app); 140 Geometry geometry = shape.getGeometry(); 141 Transform3D t3d = new Transform3D(); 142 //Beginning of segment uncommented in 12/11/2001 to allow PickTool.GEOMETRY picking 143 if (geometry!=null){ 144 geometry.setCapability(Geometry.ALLOW_INTERSECT); 145 if (geometry instanceof GeometryArray){ 146 GeometryArray geometryArray = (GeometryArray)geometry; 147 geometryArray.setCapability(GeometryArray.ALLOW_COUNT_READ); 148 geometryArray.setCapability(GeometryArray.ALLOW_FORMAT_READ); 149 geometryArray.setCapability(GeometryArray.ALLOW_COORDINATE_READ); 150 } 151 } 152 // 153 } 154 } 155 156 157 /*** 158 * Returns a Shape3D containing the camera avatar geometry. 159 * @return the camera avatar shape. 160 */ 161 public Shape3D getCameraAvatarShape(){ 162 Shape3D clone = (Shape3D)this.cameraShape.cloneTree(); 163 //Link link = new Link(sharedCamera); 164 //clone.addChild(link); 165 avatarTGs.addElement(clone); 166 //clone.setCapability(TransformGroup.ALLOW_CHILDREN_EXTEND); 167 //clone.setCapability(TransformGroup.ALLOW_CHILDREN_WRITE); 168 //clone.setCapability(TransformGroup.ALLOW_CHILDREN_READ); 169 return clone; 170 } 171 172 /*** 173 * Returns a Shape3D containing the spot light avatar geometry. 174 * @return the spot light avatar shape. 175 */ 176 public Shape3D getSpotLightAvatarShape(){ 177 Shape3D clone = (Shape3D)this.spotLightShape.cloneTree(); 178 avatarTGs.addElement(clone); 179 return clone; 180 } 181 182 /*** 183 * Returns a Shape3D containing the direct light avatar geometry. 184 * @return the direct light avatar shape. 185 */ 186 public Shape3D getDirectLightAvatarShape(){ 187 Shape3D clone = (Shape3D)this.directLightShape.cloneTree(); 188 avatarTGs.addElement(clone); 189 return clone; 190 } 191 192 /*** 193 * Returns a Shape3D containing the point light avatar geometry. 194 * @return the point light avatar shape. 195 */ 196 public Shape3D getPointLightAvatarShape(){ 197 Shape3D clone = (Shape3D)this.pointLightShape.cloneTree(); 198 avatarTGs.addElement(clone); 199 return clone; 200 } 201 202 void debugln(String s){ 203 if (GUIControl.debugflag){ 204 System.out.println(s); 205 } 206 } 207 208 /*** 209 * Makes all the camera and lights avatars invisible. 210 */ 211 public void hideAllAvatars(){ 212 renderAttributes.setVisible(false); 213 // cameraAppearance.setPolygonAttributes(invisiblePolyAttributes); 214 // cameraAppearance.setTransparencyAttributes(invisibleTransparencyAttributes); 215 // cameraBG.detach(); 216 } 217 218 /*** 219 * Makes all the camera and lights avatars visible. 220 */ 221 public void showAllAvatars(){ 222 renderAttributes.setVisible(true); 223 // cameraAppearance.setPolygonAttributes(normalPolyAttributes); 224 // cameraAppearance.setTransparencyAttributes(normalTransparencyAttributes); 225 } 226 227 228 private Shape3D createCameraGeometry(Appearance app){ 229 double[] camCoord = new double[]{-0.346, -0.327, 0.546,//0 230 -0.346, -0.327, -0.029,//1 231 0.354, -0.327, -0.029,//2 232 0.354, -0.327, 0.546,//3 233 -0.346, 0.373, 0.546,//4 234 0.354, 0.373, 0.546,//5 235 0.354, 0.373, -0.029,//6 236 -0.346, 0.373, -0.029,//7 end of box 237 -0.000, 0.016, 0.234,// start of cone 238 0.104, -0.088, 0.234,//1. 239 -0.104, -0.088, 0.234,//2 240 -0.104, 0.120, 0.234,//3 241 0.104, 0.120, 0.234,//4 242 0.370, -0.355, -0.530,//5. 243 -0.370, -0.355, -0.530,//6 244 -0.371, 0.387, -0.530,//7 245 0.370, 0.387, -0.530,//8 246 -0.000, 0.016, -0.530,//9 247 }; 248 249 250 int[] camIndex = new int[]{0, 1, 2, 251 2, 3, 0, 252 4, 5, 6, 253 6, 7, 4, 254 0, 3, 5, 255 5, 4, 0, 256 3, 2, 6, 257 6, 5, 3, 258 2, 1, 7, 259 7, 6, 2, 260 1, 0, 4, 261 4, 7, 1,// end of box 262 8, 10, 9,// start of cone 263 8, 11, 10, 264 8, 12, 11, 265 8, 9, 12, 266 9, 14, 13, 267 9, 10, 14, 268 10, 15, 14, 269 10, 11, 15, 270 11, 16, 15, 271 11, 12, 16, 272 12, 13, 16, 273 12, 9, 13, 274 17, 13, 14, 275 17, 14, 15, 276 17, 15, 16, 277 17, 16, 13}; 278 279 Shape3D cameraShape = new Shape3D(); 280 /* vertexCount 281 vertexMode 282 indexCount 283 */ 284 IndexedTriangleArray cameraArray = new IndexedTriangleArray(camCoord.length, 285 GeometryArray.COORDINATES, 286 camIndex.length); 287 cameraArray.setCoordinates(0,camCoord); 288 cameraArray.setCoordinateIndices(0,camIndex); 289 cameraShape.setGeometry(cameraArray); 290 traverseAndSetToWire(cameraShape,app); 291 return(cameraShape); 292 } 293 294 private Shape3D createSpotLightGeometry(Appearance app){ 295 double[] spotCoord = new double[]{-0, 0, 0.006, //0 296 -0.112, -0.122, -0.394, //1 297 0.017, -0.167, -0.393, //2 298 0.133, -0.094, -0.395, //3 299 0.148, 0.041, -0.398, //4 300 0.052, 0.138, -0.401, //5 301 -0.084, 0.123, -0.4, //6 302 -0.157, 0.007, -0.397, //7 303 -0, -0.01, -0.397}; //8 304 int[] spotIndex = new int[]{1, 2, 0, 305 2, 0, 0, 306 2, 3, 0, 307 3, 0, 0, 308 3, 4, 0, 309 4, 0, 0, 310 4, 5, 0, 311 5, 0, 0, 312 5, 6, 0, 313 6, 0, 0, 314 6, 7, 0, 315 7, 0, 0, 316 7, 1, 0, 317 1, 0, 0, 318 2, 1, 8, 319 3, 2, 8, 320 4, 3, 8, 321 5, 4, 8, 322 6, 5, 8, 323 7, 6, 8, 324 1, 7, 8}; 325 326 IndexedTriangleArray spotArray = new IndexedTriangleArray(spotCoord.length, 327 GeometryArray.COORDINATES, 328 spotIndex.length); 329 spotArray.setCoordinates(0,spotCoord); 330 spotArray.setCoordinateIndices(0,spotIndex); 331 Shape3D spotShape = new Shape3D(); 332 spotShape.setGeometry(spotArray); 333 traverseAndSetToWire(spotShape,app); 334 return(spotShape); 335 } 336 337 private Shape3D createDirectLightGeometry(Appearance app){ 338 // coordinates vector 339 double[] directCoord = new double[]{// Part A 340 0.005, 0.004, 0.084, 341 0.189, -0.129, 0.084, 342 0.232, 0.004, 0.084, 343 0.005, 0.004, 0.084, 344 0.075, -0.212, 0.084, 345 0.189, -0.129, 0.084, 346 0.005, 0.004, 0.084, 347 -0.065, -0.212, 0.084, 348 0.075, -0.212, 0.084, 349 0.005, 0.004, 0.084, 350 -0.179, -0.129, 0.084, 351 -0.065, -0.212, 0.084, 352 0.005, 0.004, 0.084, 353 -0.222, 0.004, 0.084, 354 -0.179, -0.129, 0.084, 355 0.005, 0.004, 0.084, 356 -0.179, 0.138, 0.084, 357 -0.222, 0.004, 0.084, 358 0.005, 0.004, 0.084, 359 -0.065, 0.22, 0.084, 360 -0.179, 0.138, 0.084, 361 0.005, 0.004, 0.084, 362 0.075, 0.22, 0.084, 363 -0.065, 0.22, 0.084, 364 0.005, 0.004, 0.084, 365 0.189, 0.138, 0.084, 366 0.075, 0.22, 0.084, 367 0.005, 0.004, 0.084, 368 0.232, 0.004, 0.084, 369 0.189, 0.138, 0.084, 370 0.232, 0.004, 0.084, 371 0.189, -0.129, -0.156, 372 0.232, 0.004, -0.156, 373 0.232, 0.004, 0.084, 374 0.189, -0.129, 0.084, 375 0.189, -0.129, -0.156, 376 0.189, -0.129, 0.084, 377 0.075, -0.212, -0.156, 378 0.189, -0.129, -0.156, 379 0.189, -0.129, 0.084, 380 0.075, -0.212, 0.084, 381 0.075, -0.212, -0.156, 382 0.075, -0.212, 0.084, 383 -0.065, -0.212, -0.156, 384 0.075, -0.212, -0.156, 385 0.075, -0.212, 0.084, 386 -0.065, -0.212, 0.084, 387 -0.065, -0.212, -0.156, 388 -0.065, -0.212, 0.084, 389 -0.179, -0.129, -0.156, 390 -0.065, -0.212, -0.156, 391 -0.065, -0.212, 0.084, 392 -0.179, -0.129, 0.084, 393 -0.179, -0.129, -0.156, 394 -0.179, -0.129, 0.084, 395 -0.222, 0.004, -0.156, 396 -0.179, -0.129, -0.156, 397 -0.179, -0.129, 0.084, 398 -0.222, 0.004, 0.084, 399 -0.222, 0.004, -0.156, 400 -0.222, 0.004, 0.084, 401 -0.179, 0.138, -0.156, 402 -0.222, 0.004, -0.156, 403 -0.222, 0.004, 0.084, 404 -0.179, 0.138, 0.084, 405 -0.179, 0.138, -0.156, 406 -0.179, 0.138, 0.084, 407 -0.065, 0.22, -0.156, 408 -0.179, 0.138, -0.156, 409 -0.179, 0.138, 0.084, 410 -0.065, 0.22, 0.084, 411 -0.065, 0.22, -0.156, 412 -0.065, 0.22, 0.084, 413 0.075, 0.22, -0.156, 414 -0.065, 0.22, -0.156, 415 -0.065, 0.22, 0.084, 416 0.075, 0.22, 0.084, 417 0.075, 0.22, -0.156, 418 0.075, 0.22, 0.084, 419 0.189, 0.138, -0.156, 420 0.075, 0.22, -0.156, 421 0.075, 0.22, 0.084, 422 0.189, 0.138, 0.084, 423 0.189, 0.138, -0.156, 424 0.189, 0.138, 0.084, 425 0.232, 0.004, -0.156, 426 0.189, 0.138, -0.156, 427 0.189, 0.138, 0.084, 428 0.232, 0.004, 0.084, 429 0.232, 0.004, -0.156, 430 0.005, 0.004, -0.156, 431 0.232, 0.004, -0.156, 432 0.189, -0.129, -0.156, 433 0.005, 0.004, -0.156, 434 0.189, -0.129, -0.156, 435 0.075, -0.212, -0.156, 436 0.005, 0.004, -0.156, 437 0.075, -0.212, -0.156, 438 -0.065, -0.212, -0.156, 439 0.005, 0.004, -0.156, 440 -0.065, -0.212, -0.156, 441 -0.179, -0.129, -0.156, 442 0.005, 0.004, -0.156, 443 -0.179, -0.129, -0.156, 444 -0.222, 0.004, -0.156, 445 0.005, 0.004, -0.156, 446 -0.222, 0.004, -0.156, 447 -0.179, 0.138, -0.156, 448 0.005, 0.004, -0.156, 449 -0.179, 0.138, -0.156, 450 -0.065, 0.22, -0.156, 451 0.005, 0.004, -0.156, 452 -0.065, 0.22, -0.156, 453 0.075, 0.22, -0.156, 454 0.005, 0.004, -0.156, 455 0.075, 0.22, -0.156, 456 0.189, 0.138, -0.156, 457 0.005, 0.004, -0.156, 458 0.189, 0.138, -0.156, 459 0.232, 0.004, -0.156, 460 // Part B 461 -0.016, -0.008, -0.295, 462 -0.016, 0.015, -0.295, 463 0.016, 0.015, -0.295, 464 0.016, 0.015, -0.295, 465 0.016, -0.008, -0.295, 466 -0.016, -0.008, -0.295, 467 -0.016, -0.008, 0.087, 468 0.016, -0.008, 0.087, 469 0.016, 0.015, 0.087, 470 0.016, 0.015, 0.087, 471 -0.016, 0.015, 0.087, 472 -0.016, -0.008, 0.087, 473 -0.016, -0.008, -0.295, 474 0.016, -0.008, -0.295, 475 0.016, -0.008, 0.087, 476 0.016, -0.008, 0.087, 477 -0.016, -0.008, 0.087, 478 -0.016, -0.008, -0.295, 479 0.016, -0.008, -0.295, 480 0.016, 0.015, -0.295, 481 0.016, 0.015, 0.087, 482 0.016, 0.015, 0.087, 483 0.016, -0.008, 0.087, 484 0.016, -0.008, -0.295, 485 0.016, 0.015, -0.295, 486 -0.016, 0.015, -0.295, 487 -0.016, 0.015, 0.087, 488 -0.016, 0.015, 0.087, 489 0.016, 0.015, 0.087, 490 0.016, 0.015, -0.295, 491 -0.016, 0.015, -0.295, 492 -0.016, -0.008, -0.295, 493 -0.016, -0.008, 0.087, 494 -0.016, -0.008, 0.087, 495 -0.016, 0.015, 0.087, 496 -0.016, 0.015, -0.295, 497 // part C 498 -0, 0, -0.64, 499 -0, 0, -0.64, 500 -0, 0, -0.64, 501 -0, 0, -0.64, 502 -0, 0, -0.64, 503 -0, 0, -0.64, 504 -0, 0, -0.64, 505 -0, 0, -0.64, 506 -0, 0, -0.64, 507 -0, 0, -0.64, 508 -0, 0, -0.64, 509 -0, 0, -0.64, 510 -0, 0, -0.64, 511 -0.084, 0.089, -0.292, 512 0.079, 0.093, -0.292, 513 -0, 0, -0.64, 514 -0, 0, -0.64, 515 -0.084, 0.089, -0.292, 516 -0, 0, -0.64, 517 -0.08, -0.075, -0.288, 518 -0.084, 0.089, -0.292, 519 -0, 0, -0.64, 520 -0, 0, -0.64, 521 -0.08, -0.075, -0.288, 522 -0, 0, -0.64, 523 0.084, -0.07, -0.288, 524 -0.08, -0.075, -0.288, 525 -0, 0, -0.64, 526 -0, 0, -0.64, 527 0.084, -0.07, -0.288, 528 -0, 0, -0.64, 529 0.079, 0.093, -0.292, 530 0.084, -0.07, -0.288, 531 -0, 0, -0.64, 532 -0, 0, -0.64, 533 0.079, 0.093, -0.292, 534 -0, 0.009, -0.29, 535 0.079, 0.093, -0.292, 536 -0.084, 0.089, -0.292, 537 -0, 0.009, -0.29, 538 -0.084, 0.089, -0.292, 539 -0.08, -0.075, -0.288, 540 -0, 0.009, -0.29, 541 -0.08, -0.075, -0.288, 542 0.084, -0.07, -0.288, 543 -0, 0.009, -0.29, 544 0.084, -0.07, -0.288, 545 0.079, 0.093, -0.292}; 546 TriangleArray directArray = new TriangleArray(directCoord.length,GeometryArray.COORDINATES); 547 Shape3D directShape = new Shape3D(); 548 directArray.setCoordinates(0,directCoord); 549 directShape.setGeometry(directArray); 550 traverseAndSetToWire(directShape,app); 551 return(directShape); 552 } 553 554 private Shape3D createPointLightGeometry(Appearance app){ 555 double[] pointCoord = new double[]{0.059, 0.061, -0.112, 556 0.059, -0.049, -0.112, 557 -0.05, -0.049, -0.112, 558 0.059, 0.061, 0.107, 559 -0.05, 0.061, 0.107, 560 -0.05, -0.049, 0.107, 561 0.059, -0.103, 0.053, 562 -0.05, -0.103, 0.053, 563 -0.05, -0.103, -0.057, 564 0.114, 0.061, 0.053, 565 0.114, -0.049, 0.053, 566 0.114, -0.049, -0.057, 567 -0.05, 0.116, 0.053, 568 0.059, 0.116, 0.053, 569 0.059, 0.116, -0.057, 570 -0.105, -0.049, 0.053, 571 -0.105, 0.061, 0.053, 572 -0.105, 0.061, -0.057, 573 -0.05, -0.049, -0.112, 574 -0.105, 0.061, -0.057, 575 -0.05, 0.061, -0.112, 576 -0.05, -0.103, -0.057, 577 0.059, -0.049, -0.112, 578 0.059, -0.103, -0.057, 579 -0.105, -0.049, -0.057, 580 -0.05, -0.103, 0.053, 581 -0.105, -0.049, 0.053, 582 -0.05, -0.049, -0.112, 583 -0.05, -0.103, -0.057, 584 -0.105, -0.049, -0.057, 585 0.114, -0.049, -0.057, 586 0.059, 0.061, -0.112, 587 0.114, 0.061, -0.057, 588 0.059, -0.103, -0.057, 589 0.114, -0.049, 0.053, 590 0.059, -0.103, 0.053, 591 0.114, -0.049, -0.057, 592 0.059, -0.103, -0.057, 593 0.059, -0.049, -0.112, 594 -0.05, 0.116, -0.057, 595 -0.105, 0.061, 0.053, 596 -0.05, 0.116, 0.053, 597 -0.05, 0.061, -0.112, 598 0.059, 0.116, -0.057, 599 0.059, 0.061, -0.112, 600 -0.105, 0.061, -0.057, 601 -0.05, 0.116, -0.057, 602 -0.05, 0.061, -0.112, 603 0.114, 0.061, -0.057, 604 0.059, 0.116, 0.053, 605 0.114, 0.061, 0.053, 606 0.059, 0.116, -0.057, 607 0.114, 0.061, -0.057, 608 0.059, 0.061, -0.112, 609 -0.05, -0.049, 0.107, 610 0.059, -0.103, 0.053, 611 0.059, -0.049, 0.107, 612 -0.105, -0.049, 0.053, 613 -0.05, 0.061, 0.107, 614 -0.105, 0.061, 0.053, 615 -0.05, -0.049, 0.107, 616 -0.105, -0.049, 0.053, 617 -0.05, -0.103, 0.053, 618 0.059, -0.049, 0.107, 619 0.114, 0.061, 0.053, 620 0.059, 0.061, 0.107, 621 0.059, -0.103, 0.053, 622 0.114, -0.049, 0.053, 623 0.059, -0.049, 0.107, 624 -0.05, 0.116, 0.053, 625 0.059, 0.061, 0.107, 626 0.059, 0.116, 0.053, 627 -0.05, 0.116, 0.053, 628 -0.105, 0.061, 0.053, 629 -0.05, 0.061, 0.107, 630 0.114, 0.061, 0.053, 631 0.059, 0.116, 0.053, 632 0.059, 0.061, 0.107, 633 -0.05, -0.049, -0.112, 634 -0.05, 0.061, -0.112, 635 0.059, 0.061, -0.112, 636 -0.05, -0.049, 0.107, 637 0.059, -0.049, 0.107, 638 0.059, 0.061, 0.107, 639 -0.05, -0.103, -0.057, 640 0.059, -0.103, -0.057, 641 0.059, -0.103, 0.053, 642 0.114, -0.049, -0.057, 643 0.114, 0.061, -0.057, 644 0.114, 0.061, 0.053, 645 0.059, 0.116, -0.057, 646 -0.05, 0.116, -0.057, 647 -0.05, 0.116, 0.053, 648 -0.105, 0.061, -0.057, 649 -0.105, -0.049, -0.057, 650 -0.105, -0.049, 0.053, 651 -0.05, -0.049, -0.112, 652 -0.105, -0.049, -0.057, 653 -0.105, 0.061, -0.057, 654 -0.05, -0.103, -0.057, 655 -0.05, -0.049, -0.112, 656 0.059, -0.049, -0.112, 657 -0.105, -0.049, -0.057, 658 -0.05, -0.103, -0.057, 659 -0.05, -0.103, 0.053, 660 0.114, -0.049, -0.057, 661 0.059, -0.049, -0.112, 662 0.059, 0.061, -0.112, 663 0.059, -0.103, -0.057, 664 0.114, -0.049, -0.057, 665 0.114, -0.049, 0.053, 666 -0.05, 0.116, -0.057, 667 -0.105, 0.061, -0.057, 668 -0.105, 0.061, 0.053, 669 -0.05, 0.061, -0.112, 670 -0.05, 0.116, -0.057, 671 0.059, 0.116, -0.057, 672 0.114, 0.061, -0.057, 673 0.059, 0.116, -0.057, 674 0.059, 0.116, 0.053, 675 -0.05, -0.049, 0.107, 676 -0.05, -0.103, 0.053, 677 0.059, -0.103, 0.053, 678 -0.105, -0.049, 0.053, 679 -0.05, -0.049, 0.107, 680 -0.05, 0.061, 0.107, 681 0.059, -0.049, 0.107, 682 0.114, -0.049, 0.053, 683 0.114, 0.061, 0.053, 684 -0.05, 0.116, 0.053, 685 -0.05, 0.061, 0.107, 686 0.059, 0.061, 0.107}; 687 688 TriangleArray pointArray = new TriangleArray(pointCoord.length,GeometryArray.COORDINATES); 689 Shape3D pointShape = new Shape3D(); 690 pointArray.setCoordinates(0,pointCoord); 691 pointShape.setGeometry(pointArray); 692 traverseAndSetToWire(pointShape,app); 693 return(pointShape); 694 } 695 696 }

This page was automatically generated by Maven