public void AddRange(IList <TriangulationPoint> points, Point2DList.WindingOrderType windingOrder) { if (points == null || points.Count < 1) { return; } if (mWindingOrder == Point2DList.WindingOrderType.Unknown && Count == 0) { mWindingOrder = windingOrder; } int numPoints = points.Count; bool bReverseReadOrder = (WindingOrder != WindingOrderType.Unknown) && (windingOrder != WindingOrderType.Unknown) && (WindingOrder != windingOrder); for (int i = 0; i < numPoints; ++i) { int idx = i; if (bReverseReadOrder) { idx = points.Count - i - 1; } Add(points[idx], -1, false); } if (mWindingOrder == WindingOrderType.Unknown) { mWindingOrder = CalculateWindingOrder(); } mEpsilon = CalculateEpsilon(); }
public void AddRange(Vector2[] points, Point2DList.WindingOrderType windingOrder) { if (points == null) { return; } int numPoints = points.Length; if (numPoints < 1) { return; } if (mWindingOrder == Point2DList.WindingOrderType.Unknown && Count == 0) { mWindingOrder = windingOrder; } bool bReverseReadOrder = (WindingOrder != WindingOrderType.Unknown) && (windingOrder != WindingOrderType.Unknown) && (WindingOrder != windingOrder); for (int i = 0; i < numPoints; ++i) { int idx = i; if (bReverseReadOrder) { idx = numPoints - i - 1; } PolygonPoint point = new PolygonPoint(points [idx].x, points [idx].y); Add(point, -1, false); } if (mWindingOrder == WindingOrderType.Unknown) { mWindingOrder = CalculateWindingOrder(); } mEpsilon = CalculateEpsilon(); }
public Contour(ITriangulatable parent, IList <TriangulationPoint> points, Point2DList.WindingOrderType windingOrder) { // Currently assumes that input is pre-checked for validity mParent = parent; AddRange(points, windingOrder); }