Java Reference
In-Depth Information
Figure 16. First code segment for ManualEyeApp.java
1. public BranchGroup createViewGraph() {
2. final int numberOfViews = 2; canvas3D = new Canvas3D[numberOfViews];
3. String caption[] = {"Left Eye View", "Right Eye View"};
4. TransformGroup viewPlatform; viewManager = new ViewManager(this, 1, 2);
5. label = new ArrayList(); minus = new ArrayList();
6. value = new ArrayList(); plus = new ArrayList();
7. jPanels = new ArrayList(); eye = new Point3d();
8. BranchGroup viewRoot = new BranchGroup();
9. TransformGroup transformGroup = new TransformGroup();
10. viewRoot.addChild(transformGroup);
11. GraphicsConfiguration config = viewManager.getPreferredGraphicsConfiguration();
12. for (int i = 0; i < numberOfViews; i++) { canvas3D[i] = new Canvas3D(config);
13. jPanels.add(viewManager.add(canvas3D[i], caption[i])); createPanel(i); }
14. canvas3D[0].setMonoscopicViewPolicy(View.LEFT_EYE_VIEW);
15. canvas3D[1].setMonoscopicViewPolicy(View.RIGHT_EYE_VIEW);
16. viewPlatform = createViewPlatform(canvas3D, ZOOM_OUT);
17. transformGroup.addChild(viewPlatform);
18. return viewRoot; }
19.
20. public TransformGroup createViewPlatform(Canvas3D[] canvas3D, int mode) {
21. Transform3D transform3D = vpTransform3D(mode);
22. ViewPlatform viewPlatform = new ViewPlatform();
23. TransformGroup objTransform = new TransformGroup(transform3D);
24. objTransform.addChild(viewPlatform);
25. View view = new View();
26. view.setWindowEyepointPolicy(View.RELATIVE_TO_SCREEN);
27. view.attachViewPlatform(viewPlatform);
28. view.setPhysicalBody(new PhysicalBody());
29. view.setPhysicalEnvironment(new PhysicalEnvironment());
30. for (int i = 0; i < canvas3D.length; i++) view.addCanvas3D(canvas3D[i]);
31.
return objTransform; }
32.
33. public Transform3D vpTransform3D(int mode) {
34. Transform3D transform3D = new Transform3D();
35. switch (mode) {
36. case FRONT_VIEW: transform3D.setTranslation(new Vector3f(0.0f, 0.0f, 1.5f)); break;
37. case SIDE_VIEW: transform3D.rotY(Math.PI / 2.0d);
38. transform3D.setTranslation(new Vector3f(1.5f, 0.0f, 0.0f)); break;
39. case PLAN_VIEW: transform3D.rotX(-1 * Math.PI / 2.0d);
40. transform3D.setTranslation(new Vector3f(0.0f, 1.5f, 0.0f)); break;
41. case ZOOM_OUT: transform3D.setTranslation(new Vector3f(0.0f, 0.0f, 20.0f)); break; }
42. return transform3D; }
the various JLabels variables. Similarly, in Figure 18, lines 71 to 74 retrieves the appropri-
ate eye position so that this can be subsequently updated in the Canvas3D object to give a
refreshed view based on the button pressed.
Search WWH ::




Custom Search