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.

Reply via email to