コード例 #1
0
    public static MeshPrimitive GetCircularTabMesh(Point p0, Point p1, Direction normal, double angle, bool isMale)
    {
        Circle circle = GetCircularTabCircle(p0, p1, normal, angle, isMale);

        double centerParam = Math.PI / 2;

        if (!isMale)
        {
            angle       *= -1;
            centerParam += Math.PI;
        }

        ITrimmedCurve circleSegment = CurveSegment.Create(circle, Interval.Create(centerParam - angle / 2, centerParam + angle / 2));
        IList <Point> points        = circleSegment.GetPolyline();

        Debug.Assert(points.Count > 3, "Not enough points for tab faceting.");

        var facets = new List <Facet>();

        for (int i = 1; i < points.Count - 1; i++)
        {
            facets.Add(new Facet(0, i, i + 1));
        }

        return(MeshPrimitive.Create(points, normal, facets));
    }