public Rational CycleArea() { Rational twiceSignedArea = 0; VecRat2 origin = Origin.Position; foreach (DCEL_HalfEdge halfEdge in CycleNext) { twiceSignedArea += GeomAid.TriangleTwiceSignedArea(origin, halfEdge.Origin.Position, halfEdge.Destination.Position); } return(Rational.Abs(twiceSignedArea) / 2); }
public static VecRat2 AbsoluteDifference(VecRat2 u, VecRat2 v) { return(new VecRat2(Rational.Abs(u.X - v.X), Rational.Abs(u.Y - v.Y))); }
public static Rational ManhattanDist(VecRat2 u, VecRat2 v) { return(Rational.Abs(u.X - v.X) + Rational.Abs(u.Y - v.Y)); }
public static Rational TriangleTwiceArea(VecRat2 a, VecRat2 b, VecRat2 c) { return(Rational.Abs(TriangleTwiceSignedArea(a, b, c))); }