/// <summary> /// Returns whether x is in triangle(abc) /// </summary> public static bool TriangleTest(VecRat2 a, VecRat2 b, VecRat2 c, VecRat2 x) { int s1 = Rational.Sign(TurnTest(a, b, c)); int s2 = Rational.Sign(TurnTest(a, b, x)); if (s1 != s2) { return(false); } int s3 = Rational.Sign(TurnTest(b, c, x)); if (s2 != s3) { return(false); } int s4 = Rational.Sign(TurnTest(c, a, x)); return(s3 == s4); }
public static int TurnTest(VecRat2 a, VecRat2 b, VecRat2 c) { return(Rational.Sign(TriangleTwiceSignedArea(a, b, c))); }