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