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)); }