Example #1
0
        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();
        }
Example #2
0
        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();
        }
Example #3
0
 public Contour(ITriangulatable parent, IList <TriangulationPoint> points, Point2DList.WindingOrderType windingOrder)
 {
     // Currently assumes that input is pre-checked for validity
     mParent = parent;
     AddRange(points, windingOrder);
 }