Ejemplo n.º 1
0
 /// <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]));
         }
     }
 }
Ejemplo n.º 2
0
 /// <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]));
                 }
             }
         }
     }
 }
Ejemplo n.º 3
0
 /// <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]));
                 }
             }
         }
     }
 }