Author: tomithy
Date: 2010-07-10 10:17:21 -0700 (Sat, 10 Jul 2010)
New Revision: 20895
Added:
cytoscapeweb/branches/gsoc2010/demos/src/GBEB/GeometryUtil.as
Log:
Version 0.3 - Mesh is able to merge shape;
- DataDisplay shows different Shapes in Mesh;
- Able to calculate Mesh for different Layouts.
Added: cytoscapeweb/branches/gsoc2010/demos/src/GBEB/GeometryUtil.as
===================================================================
--- cytoscapeweb/branches/gsoc2010/demos/src/GBEB/GeometryUtil.as
(rev 0)
+++ cytoscapeweb/branches/gsoc2010/demos/src/GBEB/GeometryUtil.as
2010-07-10 17:17:21 UTC (rev 20895)
@@ -0,0 +1,73 @@
+package GBEB
+{
+ import flash.geom.Point;
+
+ public class GeometryUtil
+ {
+ public function GeometryUtil()
+ {
+ }
+
+
+
+
+ //Intersection of 2 lines Source:
http://keith-hair.net/blog/2008/08/04/find-intersection-point-of-two-lines-in-as3
+
//---------------------------------------------------------------
+ //Checks for intersection of Segment if as_seg is true.
+ //Checks for intersection of Line if as_seg is false.
+ //Return intersection of Segment AB and Segment EF as a
Point
+ //Return null if there is no intersection
+
//---------------------------------------------------------------
+ public static function
lineIntersectLine(A:Point,B:Point,E:Point,F:Point,as_seg:Boolean=true):Point {
+ var ip:Point;
+ var a1:Number;
+ var a2:Number;
+ var b1:Number;
+ var b2:Number;
+ var c1:Number;
+ var c2:Number;
+
+ a1= B.y-A.y;
+ b1= A.x-B.x;
+ c1= B.x*A.y - A.x*B.y;
+ a2= F.y-E.y;
+ b2= E.x-F.x;
+ c2= F.x*E.y - E.x*F.y;
+
+ var denom:Number=a1*b2 - a2*b1;
+ if (denom == 0) {
+ return null;
+ }
+ ip=new Point();
+ ip.x=(b1*c2 - b2*c1)/denom;
+ ip.y=(a2*c1 - a1*c2)/denom;
+
+
//---------------------------------------------------
+ //Do checks to see if intersection to endpoints
+ //distance is longer than actual Segments.
+ //Return null if it is with any.
+
//---------------------------------------------------
+ if(as_seg){
+ if(Math.pow(ip.x - B.x, 2) +
Math.pow(ip.y - B.y, 2) > Math.pow(A.x - B.x, 2) + Math.pow(A.y - B.y, 2))
+ {
+ return null;
+ }
+ if(Math.pow(ip.x - A.x, 2) +
Math.pow(ip.y - A.y, 2) > Math.pow(A.x - B.x, 2) + Math.pow(A.y - B.y, 2))
+ {
+ return null;
+ }
+
+ if(Math.pow(ip.x - F.x, 2) +
Math.pow(ip.y - F.y, 2) > Math.pow(E.x - F.x, 2) + Math.pow(E.y - F.y, 2))
+ {
+ return null;
+ }
+ if(Math.pow(ip.x - E.x, 2) +
Math.pow(ip.y - E.y, 2) > Math.pow(E.x - F.x, 2) + Math.pow(E.y - F.y, 2))
+ {
+ return null;
+ }
+ }
+ return ip;
+ }
+
+ }
+}
\ No newline at end of file
--
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.