예제 #1
0
    public void InsertPoint(Edge2 edge, Point2 point)
    {
        int edgeAndPointIndex = _edges.IndexOf (edge);

        if (edgeAndPointIndex < 0)
            return;

        Point2 nextPoint = edge.GetNextPoint2 ();
        Edge2 newEdge = new Edge2 (point, nextPoint);
        edge.SetNextPoint2 (point);
        point.SetEdges (edge, newEdge);
        nextPoint.SetPrevEdge (newEdge);

        _edges.Insert (edgeAndPointIndex + 1, newEdge);
        _points.Insert (edgeAndPointIndex + 1, point);

        Point2 prevPoint = edge.GetPrevPoint2 ();
        prevPoint.Update (false);
        point.Update (false);
        nextPoint.Update (false);

        UpdateBounds ();
    }
예제 #2
0
    public void AddPoint(Point2 point)
    {
        if (_points.Count > 0)
        {
            Point2 lastPoint = _points[_points.Count - 1];
            Edge2 edge = new Edge2 (lastPoint, point);
            _edges.Add (edge);

            lastPoint.SetNextEdge (edge);
            point.SetPrevEdge (edge);
        }

        _points.Add (point);
        point.Update ();

        UpdateBounds ();
    }