Author: paperwing
Date: 2011-12-28 14:14:09 -0800 (Wed, 28 Dec 2011)
New Revision: 27877

Modified:
   
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/coordinator/BirdsEyeCoordinatorProcessor.java
   
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/coordinator/MainCoordinatorProcessor.java
   
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/coordinator/ViewingCoordinator.java
   
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/BoundsInputHandler.java
   
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/NetworkChangeInputHandler.java
   
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/utility/GraphicsUtility.java
Log:
birds eye view updated, looks like for bounding box will need to work with 
birds eye camera's distance value instead of main camera

Modified: 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/coordinator/BirdsEyeCoordinatorProcessor.java
===================================================================
--- 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/coordinator/BirdsEyeCoordinatorProcessor.java
 2011-12-28 20:58:07 UTC (rev 27876)
+++ 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/coordinator/BirdsEyeCoordinatorProcessor.java
 2011-12-28 22:14:09 UTC (rev 27877)
@@ -29,15 +29,13 @@
                        SimpleCamera camera = graphicsData.getCamera();
                        CoordinatorData coordinatorData = 
graphicsData.getCoordinatorData();
                        
-                       // Check if bounds have changed
-                       if 
(coordinator.compareBirdsEyeBoundsChanged(coordinatorData.getBounds())) {
-                               
coordinator.updateBirdsEyeBounds(coordinatorData.getBounds());
-                       
-                       // Check if the main camera moved
-                       } else if (coordinator.mainCameraChanged()) {
+                       if (coordinator.mainCameraChanged()) {
                                
coordinatorData.setBounds(ViewingCoordinator.extractBounds(coordinator.getCurrentMainCamera(),
                                                
coordinator.getMainVerticalFov(), coordinator.getMainAspectRatio()));
                        
+                               System.out.println("New Bounds: " + 
ViewingCoordinator.extractBounds(coordinator.getCurrentMainCamera(),
+                                               
coordinator.getMainVerticalFov(), coordinator.getMainAspectRatio()));
+                               
                                // Update the birds eye view camera
                                
camera.copyOrientation(coordinator.getCurrentMainCamera());
                                
@@ -47,12 +45,25 @@
                                Vector3 farthestNode = 
GraphicsUtility.findFarthestNodeFromCenter(graphicsData.getNetworkView(), 
networkCenter, graphicsData.getDistanceScale());
                                
                                double newDistance = 
farthestNode.distance(networkCenter);
+                               
+                               // Further increase the distance needed
+                               newDistance *= 4;
+                               
+                               System.out.println("NewDistance: " + 
newDistance);
                                Vector3 offset = 
camera.getDirection().multiply(-newDistance);
                                
-                               
camera.moveTo(camera.getPosition().plus(offset));
+                               System.out.println("NetworkCenter: " + 
networkCenter);
+                               System.out.println("FarthestNode: " + 
farthestNode);
+                               System.out.println("Map camera new position: " 
+ networkCenter.plus(offset));                           
+
+                               camera.moveTo(networkCenter.plus(offset));
                                camera.setDistance(newDistance);
                                
+                               System.out.println("Camera Displacement from 
center: " + camera.getPosition().distance(networkCenter));
+                               
                                coordinator.updateMainCamera();
+                       } else if 
(coordinator.compareBirdsEyeBoundsChanged(coordinatorData.getBounds())) {
+                               
coordinator.updateBirdsEyeBounds(coordinatorData.getBounds());
                        }
                }
 

Modified: 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/coordinator/MainCoordinatorProcessor.java
===================================================================
--- 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/coordinator/MainCoordinatorProcessor.java
     2011-12-28 20:58:07 UTC (rev 27876)
+++ 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/coordinator/MainCoordinatorProcessor.java
     2011-12-28 22:14:09 UTC (rev 27877)
@@ -12,31 +12,36 @@
                        GraphicsData graphicsData) {
                coordinator.claimMain();
                
coordinator.setInitialMainCameraOrientation(graphicsData.getCamera());
-               
-               double verticalFov = graphicsData.getVerticalFov();
-               double aspectRatio = graphicsData.getScreenWidth() / 
(Math.max(graphicsData.getScreenHeight(), 1));
-               
-               coordinator.setMainVerticalFov(verticalFov);
-               coordinator.setMainAspectRatio(aspectRatio);
-               
coordinator.setInitialBirdsEyeBounds(ViewingCoordinator.extractBounds(graphicsData.getCamera(),
 
-                               verticalFov, 
-                               aspectRatio));
-               
-               //debug
-               System.out.println("Initial bounds: " + 
coordinator.getCurrentBirdsEyeBounds());
        }
        
        @Override
        public void extractData(ViewingCoordinator coordinator,
                        GraphicsData graphicsData) {
                
+               if (!coordinator.isBoundsInitialized()) {
+                       double verticalFov = graphicsData.getVerticalFov();
+                       double aspectRatio = (float) 
graphicsData.getScreenWidth() / (Math.max(graphicsData.getScreenHeight(), 1));
+                       
+                       coordinator.setMainVerticalFov(verticalFov);
+                       coordinator.setMainAspectRatio(aspectRatio);
+                       
+                       System.out.println("ScreenWidth: " + 
graphicsData.getScreenWidth() + ", ScreenHeight: " + 
graphicsData.getScreenHeight());
+                       System.out.println("Initialing birds eye bounds: fov " 
+ verticalFov + ", aspectRatio " + aspectRatio);
+                       
coordinator.setInitialBirdsEyeBounds(ViewingCoordinator.extractBounds(graphicsData.getCamera(),
 
+                                       verticalFov, 
+                                       aspectRatio));
+                       
+                       //debug
+                       System.out.println("Initial bounds: " + 
coordinator.getCurrentBirdsEyeBounds());
+               }
+               
                if (coordinator.isBirdsEyeClaimed()) {
                        SimpleCamera camera = graphicsData.getCamera();
                        Vector3 newPosition;
                        
                        // TODO: consider moving these somewhere else
                        
coordinator.setMainVerticalFov(graphicsData.getVerticalFov());
-                       
coordinator.setMainAspectRatio(graphicsData.getScreenWidth() / 
(Math.max(graphicsData.getScreenHeight(), 1)));
+                       coordinator.setMainAspectRatio((float) 
graphicsData.getScreenWidth() / (Math.max(graphicsData.getScreenHeight(), 1)));
                        
                        if (coordinator.compareMainCameraChanged(camera)) {
                                coordinator.updateMainCamera(camera);

Modified: 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/coordinator/ViewingCoordinator.java
===================================================================
--- 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/coordinator/ViewingCoordinator.java
   2011-12-28 20:58:07 UTC (rev 27876)
+++ 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/coordinator/ViewingCoordinator.java
   2011-12-28 22:14:09 UTC (rev 27877)
@@ -47,7 +47,7 @@
        // Camera direction must be a unit vector
        public static Vector3 extractCameraPosition(ViewingCoordinator 
coordinator, Vector3 cameraDirection, double cameraDistance) {
                Vector3 offset = cameraDirection.copy();
-               offset.multiplyLocal(cameraDistance);
+               offset.multiplyLocal(-cameraDistance);
                
                Quadrilateral bounds = coordinator.getCurrentBirdsEyeBounds();
                

Modified: 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/BoundsInputHandler.java
===================================================================
--- 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/BoundsInputHandler.java
 2011-12-28 20:58:07 UTC (rev 27876)
+++ 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/BoundsInputHandler.java
 2011-12-28 22:14:09 UTC (rev 27877)
@@ -22,6 +22,9 @@
                if (mouse.getPressed().contains(MouseEvent.BUTTON1)) {
                        Vector3 mousePosition = 
GraphicsUtility.convertMouseTo3d(mouse, graphicsData, 
graphicsData.getCamera().getDistance());
                        
+                       // The y-coordinate needs to be inverted
+                       mousePosition.set(mousePosition.x(), 
-mousePosition.y(), mousePosition.z());
+                       
                        coordinatorData.getBounds().moveTo(mousePosition);
                }
        }

Modified: 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/NetworkChangeInputHandler.java
===================================================================
--- 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/NetworkChangeInputHandler.java
  2011-12-28 20:58:07 UTC (rev 27876)
+++ 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/NetworkChangeInputHandler.java
  2011-12-28 22:14:09 UTC (rev 27877)
@@ -34,13 +34,16 @@
                CyNetworkView networkView = graphicsData.getNetworkView();
                SimpleCamera camera = graphicsData.getCamera();
                
-               // Project mouse coordinates into 3d space to determine where 
to put the node
-               Vector3 projection = GraphicsUtility.convertScreenTo3d(
-                               mouse.x(), mouse.y(), 
graphicsData.getScreenWidth(),
-                               graphicsData.getScreenHeight(), 
camera.getDistance(), camera);
-               
                // Create a new node
                if (pressed.contains(KeyEvent.VK_N)) {
+                       
+                       // Project mouse coordinates into 3d space to determine 
where to put the node
+                       Vector3 projection = GraphicsUtility.convertScreenTo3d(
+                                       mouse.x(), mouse.y(), 
graphicsData.getScreenWidth(),
+                                       graphicsData.getScreenHeight(), 
camera.getDistance(), camera);
+                       
+                       System.out.println("Node created at: " + projection);
+                       
                        CyNode added = networkView.getModel().addNode();
                        networkView.updateView();
 

Modified: 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/utility/GraphicsUtility.java
===================================================================
--- 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/utility/GraphicsUtility.java
  2011-12-28 20:58:07 UTC (rev 27876)
+++ 
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/utility/GraphicsUtility.java
  2011-12-28 22:14:09 UTC (rev 27877)
@@ -121,7 +121,7 @@
                zOffset.multiplyLocal(planeDistance);
                
                Vector3 yOffset = cameraUp.copy();
-               yOffset.multiplyLocal(planeDistance * Math.tan(verticalFov));
+               yOffset.multiplyLocal(planeDistance * Math.tan(verticalFov / 
360.0 * Math.PI));
                
                Vector3 xOffset = cameraDirection.copy(); // xOffset will be 
the camera's right vector
                xOffset.crossLocal(cameraUp);
@@ -203,6 +203,7 @@
                        
currentPosition.set(nodeView.getVisualProperty(RichVisualLexicon.NODE_X_LOCATION),
                                        
nodeView.getVisualProperty(RichVisualLexicon.NODE_Y_LOCATION),
                                        
nodeView.getVisualProperty(RichVisualLexicon.NODE_Z_LOCATION));
+                       currentPosition.divideLocal(distanceScale);
                        
                        currentDistanceSquared = 
networkCenter.distanceSquared(currentPosition);
                        

-- 
You received this message because you are subscribed to the Google Groups 
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/cytoscape-cvs?hl=en.

Reply via email to