示例#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 ();
    }