/// <summary> /// Creates the triangles of a side. /// </summary> /// <param name="points">Collection of Point3D (may be an other collection than Points (i.e. a side collection).</param> /// <param name="tsk">TriangleSideKind Value.</param> protected void CreateSideTriangles(Point3DCollection points, TriangleSideKind tsk) { for (int i = 0; i < points.Count - 2; i++) { if (tsk == TriangleSideKind.Front) { this.Triangles.Add(new Point3DTriplet(points[0], points[i + 1], points[i + 2])); } else { this.Triangles.Add(new Point3DTriplet(points[0], points[i + 2], points[i + 1])); } } }
/// <summary> /// Build the triangles, with a specific side orientation. /// </summary> /// <param name="tsk">TriangleSideKind value (triangle orientation).</param> public virtual void BuildTriangles(TriangleSideKind tsk) { RoundCorner(); // _circumference = 0.0; // forces a refresh of the Circumference property this.Triangles.Clear(); if (Points.Count < 3) { throw new ArgumentException("Points.Count < 3"); } if (!_centered) { CreateSideTriangles(Points, tsk); } else { // center based triangles for (int i = 0; i <= Points.Count - 1; i++) { if (tsk == TriangleSideKind.Front) { if (i < Points.Count - 1) { this.Triangles.Add(new Point3DTriplet(_center, Points[i], Points[i + 1])); } else { this.Triangles.Add(new Point3DTriplet(_center, Points[i], Points[0])); } } else { if (i < Points.Count - 1) { this.Triangles.Add(new Point3DTriplet(_center, Points[i + 1], Points[i])); } else { this.Triangles.Add(new Point3DTriplet(_center, Points[0], Points[i])); } } } } }
/// <summary> /// Build the triangles, with a specific side orientation. /// </summary> /// <param name="tsk">TriangleSideKind value (triangle orientation).</param> public void BuildTriangles(TriangleSideKind tsk) { RoundCorner(); this.Triangles.Clear(); if (Points.Count < 3) { throw new ArgumentException("Points.Count < 3"); } if (!_centered) { CreateSideTriangles(Points, tsk); } else { // triangles basés sur le centre for (int i = 0; i <= Points.Count - 1; i++) { if (tsk == TriangleSideKind.Front) { if (i < Points.Count - 1) { this.Triangles.Add(new Point3DTriplet(_center, Points[i], Points[i + 1])); } else { this.Triangles.Add(new Point3DTriplet(_center, Points[i], Points[0])); } } else { if (i < Points.Count - 1) { this.Triangles.Add(new Point3DTriplet(_center, Points[i + 1], Points[i])); } else { this.Triangles.Add(new Point3DTriplet(_center, Points[0], Points[i])); } } } } }