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.