public static float Cos(VectorF first, VectorF second) { if (first.Length() == 0 || second.Length() == 0) { return(0); } return(ScalarMultiply(first, second) / (first.Length() * second.Length())); }
public static PointPosition Classify(VectorF s, VectorF e, VectorF p) { VectorF a = e - s; VectorF b = p - s; double d = a.X * b.Y - b.X * a.Y; if (d > 0.0) { return(PointPosition.LEFT); } if (d < 0.0) { return(PointPosition.RIGHT); } if ((a.X * b.X < 0.0) || (a.Y * b.Y < 0.0)) { return(PointPosition.BEHIND); } if (a.Length() < b.Length()) { return(PointPosition.FRONT); } if (p == s) { return(PointPosition.ORIGIN); } if (p == e) { return(PointPosition.DESTINATION); } return(PointPosition.BETWEEN); }