Author: paperwing
Date: 2011-07-21 07:10:23 -0700 (Thu, 21 Jul 2011)
New Revision: 26234
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/Graphics.java
Log:
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/Graphics.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/Graphics.java
2011-07-21 13:55:12 UTC (rev 26233)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/Graphics.java
2011-07-21 14:10:23 UTC (rev 26234)
@@ -64,7 +64,9 @@
private static final float EDGE_CURVE_FACTOR = 0.43f; //0.31f
private static final int EDGES_PER_RADIUS = 3;
- private static final int NODE_SLICES_DETAIL = 10; // 24, 24, 12 used to
be default values for slices/stacks/slices
+ private static final int QUADRATIC_EDGE_SEGMENTS = 5;
+
+ private static final int NODE_SLICES_DETAIL = 10; //10, 10, 4 // 24,
24, 12 used to be default values for slices/stacks/slices
private static final int NODE_STACKS_DETAIL = 10;
private static final int EDGE_SLICES_DETAIL = 4;
private static final int EDGE_STACKS_DETAIL = 1;
@@ -1219,7 +1221,7 @@
if (distanceMultiplier == 0) {
drawQuadraticEdge(gl, p0, p1, p2, 1, modifier);
} else {
- drawQuadraticEdge(gl, p0, p1, p2, 5, modifier);
+ drawQuadraticEdge(gl, p0, p1, p2,
QUADRATIC_EDGE_SEGMENTS, modifier);
}
}
@@ -1256,6 +1258,43 @@
Vector3 current;
Vector3[] points = new Vector3[numSegments + 1];
+
+ points[0] = new Vector3(p0);
+ for (int i = 1; i < numSegments; i++) {
+ // Obtain points along the Bezier curve
+ parameter = (double) i / numSegments;
+
+ current = p0.multiply(Math.pow(1 - parameter, 2));
+ current.addLocal(p1.multiply(2 * (1 - parameter) *
parameter));
+ current.addLocal(p2.multiply(parameter * parameter));
+
+ points[i] = new Vector3(current);
+ }
+
+ points[numSegments] = new Vector3(p2);
+
+ for (int i = 0; i < numSegments; i++) {
+
+ drawSingleEdge(gl,
+ points[i],
+ points[i + 1],
+ modifier);
+ }
+ }
+
+ private void drawQuadraticEdgeOld(GL2 gl, Vector3 p0, Vector3 p1,
Vector3 p2, int numSegments, DrawStateModifier modifier) {
+ // TODO: Allow the minimum distance to be changed
+ if (p0.distanceSquared(p2) <
MINIMUM_EDGE_DRAW_DISTANCE_SQUARED) {
+ return;
+ }
+
+ // Equation for Quadratic Bezier curve:
+ // B(t) = (1 - t)^2P0 + 2(1 - t)tP1 + t^2P2, t in [0, 1]
+
+ double parameter;
+
+ Vector3 current;
+ Vector3[] points = new Vector3[numSegments + 1];
double[] pointAngle = new double[numSegments + 1];
Vector3 lastDirection = null;
--
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.