示例#1
0
        static ProjectedEdge CreateClippingEdge(ProjectedEdge baseEdge, Vector3 edgeEnd, Plane facePlane)
        {
            var triangle   = baseEdge.PlanarEdge.Face;
            var oppVert    = baseEdge.PlanarEdge.GetOppositeVertex(edgeEnd);
            var outlineDir = (edgeEnd - oppVert).Normalized();

            var interEdge = new HardEdge(
                edgeEnd,
                edgeEnd + baseEdge.PlanarEdge.OutlineDirection,
                facePlane.Normal,
                outlineDir);

            interEdge.CorrectOrder();
            var planarEndEdge  = new PlanarEdge(interEdge, triangle, facePlane);
            var interProjected = planarEndEdge.ProjectTriangle(triangle, edgeEnd);

            interProjected.NeedsToBeClipped = true;

            baseEdge.CombineWith       = interProjected;
            interProjected.CombineWith = baseEdge;

            return(interProjected);
        }