コード例 #1
0
ファイル: PointCloud.cs プロジェクト: whigg/PointClouds
        public static PointCloud FromTriangleVectors(List <TriangleVectors> listTriangleVectors)
        {
            List <Triangle> listTriangles = new List <Triangle>();
            List <Vector3>  newVectors    = new List <Vector3>();

            for (int i = 0; i < listTriangleVectors.Count; i++)
            {
                Triangle        t  = new Triangle(newVectors.Count, newVectors.Count + 1, newVectors.Count + 2);
                TriangleVectors tv = listTriangleVectors[i];

                listTriangles.Add(t);
                //if(!newVectors.Contains(tv.A))
                //    newVectors.Add(tv.A);
                //if (!newVectors.Contains(tv.B))
                //    newVectors.Add(tv.B);
                //if (!newVectors.Contains(tv.C))
                //    newVectors.Add(tv.C);

                newVectors.Add(tv.A.Vector);
                newVectors.Add(tv.B.Vector);
                newVectors.Add(tv.C.Vector);
            }


            PointCloud pcNew = PointCloud.FromListVector3(newVectors);

            pcNew.Triangles = listTriangles;
            pcNew.CreateIndicesFromTriangles();

            return(pcNew);
        }
コード例 #2
0
        /// <summary>
        /// Copy constructor.
        /// </summary>
        /// <param name="src"></param>
        public TriangleVectors(TriangleVectors src)
        {
            A = src.A;
            B = src.B;
            C = src.C;



            AB    = src.AB;
            BC    = src.BC;
            CA    = src.CA;
            Index = m_index;
            m_index++;
        }
コード例 #3
0
 /// <summary>
 /// Set the edge by index.
 /// </summary>
 /// <param name="i"></param>
 /// <param name="t"></param>
 public void SetEdge(int i, TriangleVectors t)
 {
     i = i < 0 ? i + 3 : i > 2 ? i - 3 : i;
     if (i == 0)
     {
         AB = t;
     }
     if (i == 1)
     {
         BC = t;
     }
     if (i == 2)
     {
         CA = t;
     }
 }
コード例 #4
0
ファイル: PointCloud.cs プロジェクト: whigg/PointClouds
        public void CreateIndicesFromTriangles(List <TriangleVectors> listTriangleVectors)
        {
            List <Triangle> listTriangles = new List <Triangle>();


            for (int i = 0; i < listTriangleVectors.Count; i++)
            {
                TriangleVectors tv = listTriangleVectors[i];
                Triangle        t  = new Triangle(tv.A.Index, tv.B.Index, tv.C.Index);

                listTriangles.Add(t);
            }



            this.Triangles = listTriangles;
            this.CreateIndicesFromTriangles();
        }
コード例 #5
0
 /// <summary>
 /// Repair any Edge links, both ways.
 /// </summary>
 /// <param name="a"></param>
 /// <returns></returns>
 public void RepairEdges(TriangleVectors a)
 {
     // Check if a.AB is in this.
     if (this.Index == a.Index)
     {
         return;
     }
     if (bothIn(a, a.A, a.B))
     {
         a.AB = this; return;
     }
     if (bothIn(a, a.B, a.C))
     {
         a.BC = this; return;
     }
     if (bothIn(a, a.C, a.A))
     {
         a.CA = this; return;
     }
 }
コード例 #6
0
 /// <summary>
 /// Are both Vector3es in?
 /// </summary>
 /// <param name="t"></param>
 /// <param name="vt"></param>
 /// <param name="a"></param>
 /// <param name="b"></param>
 /// <returns></returns>
 protected bool bothIn(TriangleVectors t, Vertex a, Vertex b)
 {
     if (a == A)
     {
         if (b == B)
         {
             AB = t; return(true);
         }
         if (b == C)
         {
             CA = t; return(true);
         }
     }
     if (a == B)
     {
         if (b == A)
         {
             AB = t; return(true);
         }
         if (b == C)
         {
             BC = t; return(true);
         }
     }
     if (a == C)
     {
         if (b == A)
         {
             CA = t; return(true);
         }
         if (b == B)
         {
             BC = t; return(true);
         }
     }
     return(false);
 }
コード例 #7
0
ファイル: Circle.cs プロジェクト: whigg/PointClouds
 public Circle(TriangleVectors t)
     : this(t.A.Vector, t.B.Vector, t.C.Vector)
 {
 }