public IEnumerable <int> GetVertices(PolygonDirection direction) { yield return(A); yield return(B); yield return(C); }
public void SetConvex(Vertex prev, Vertex next, PolygonDirection direction) { var a = Position - prev.Position; var b = next.Position - Position; var sign = (int)Mathf.Sign(a.x * b.y - a.y * b.x); IsConvex = sign >= 0 ^ direction == PolygonDirection.ClockWise; }
public static PolygonDirection TriangleArea2(Vector2 p1, Vector2 p2, Vector2 p3, ref float area) { GeoPointsArray2 array = new GeoPointsArray2(); array.mPointArray.Add(p1); array.mPointArray.Add(p2); array.mPointArray.Add(p3); PolygonDirection dir = GeoPolygonUtils.CalculatePolygonArea(array, ref area); area = area < 0 ? -area : area; return(dir); }
public void Initialize() { float area = 0.0f; mDirection = GeoPolygonUtils.CalculatePolygonArea(mPolygon, ref area); if (mDirection == PolygonDirection.CW) { Reverse(); mDirection = PolygonDirection.CCW; } else { area = -area; InitializeArray(); } }
public static int[] Triangulate(IEnumerable <Vector3> points, PolygonDirection direction) => Triangulate(points.Select(p => p.XZ()), direction);
private Triangulator(IEnumerable <Vector2> points, PolygonDirection direction) { Vertices = new LinkedList <Vertex>(points.Select((p, i) => new Vertex(p, i))); Direction = direction; }
public static int[] Triangulate(IEnumerable <Vector2> points, PolygonDirection direction) { var triangulator = new Triangulator(points, direction); return(triangulator.Triangulate()); }