示例#1
0
        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
        private void toolStripTriangulate_Delaunay_Click(object sender, EventArgs e)
        {
            if (this.glControl1.GLrender.RenderableObjects.Count > 0)
            {
                PointCloud pc = this.glControl1.GLrender.RenderableObjects[0].PointCloud;
                OpenTKExtension.Triangulation.Mesh m = OpenTKExtension.Triangulation.Mesh.Triangulate(pc, 6);
                pc.CreateIndicesFromTriangles(m.Triangles);

                RemoveAllPointClouds();
                this.glControl1.GLrender.ClearAllObjects();
                ShowPointCloud(pc);
            }


            return;
        }