Exemplo n.º 1
0
 public static bool IsCCW(PointF pt1, PointF pt2, PointF pt3)
 {
     Vector V21 = new Vector(pt2, pt1);
     Vector v23 = new Vector(pt2, pt3);
     return V21.CrossProduct(v23) > 0;  // sin(angle pt2 pt1 pt3) < 0, 180<angle pt2 pt1 pt3 <360
 }
Exemplo n.º 2
0
 public static double DistancePointLine(PointF pt, PointF lnA, PointF lnB)
 {
     Vector v1 = new Vector(lnA, lnB);
     Vector v2 = new Vector(lnA, pt);
     v1 /= v1.Magnitude;
     return Math.Abs(v2.CrossProduct(v1));
 }
Exemplo n.º 3
0
 // A * B =|A|.|B|.sin(angle AOB)
 public double CrossProduct(Vector v)
 {
     return _x * v.Y - v.X * _y;
 }
Exemplo n.º 4
0
 // A. B=|A|.|B|.cos(angle AOB)
 public double DotProduct(Vector v)
 {
     return _x * v.X + _y * v.Y;
 }
Exemplo n.º 5
0
 public static bool IsClockwise(PointF pt1, PointF pt2, PointF pt3)
 {
     Vector V21 = new Vector(pt2, pt1);
     Vector v23 = new Vector(pt2, pt3);
     return V21.CrossProduct(v23) < 0; // sin(angle pt1 pt2 pt3) > 0, 0<angle pt1 pt2 pt3 <180
 }