public Model(Mesh source) { vertices = new List <Vertex>(); edges = new List <Edge3>(); this.triangles = new List <Triangle3>(); Vector3[] points = source.vertices; for (int i = 0, n = points.Length; i < n; i++) { Vertex v = new Vertex(points[i], i); vertices.Add(v); } int[] triangles = source.triangles; for (int i = 0, n = triangles.Length; i < n; i += 3) { int i0 = triangles[i], i1 = triangles[i + 1], i2 = triangles[i + 2]; Vertex v0 = vertices[i0], v1 = vertices[i1], v2 = vertices[i2]; Edge3 e0 = GetEdge(edges, v0, v1); Edge3 e1 = GetEdge(edges, v1, v2); Edge3 e2 = GetEdge(edges, v2, v0); Triangle3 f = new Triangle3(v0, v1, v2, e0, e1, e2); this.triangles.Add(f); v0.AddTriangle(f); v1.AddTriangle(f); v2.AddTriangle(f); e0.AddTriangle(f); e1.AddTriangle(f); e2.AddTriangle(f); } }
public void AddTriangle(Vertex v0, Vertex v1, Vertex v2) { if (!vertices.Contains(v0)) { vertices.Add(v0); } if (!vertices.Contains(v1)) { vertices.Add(v1); } if (!vertices.Contains(v2)) { vertices.Add(v2); } Edge3 e0 = GetEdge(v0, v1); Edge3 e1 = GetEdge(v1, v2); Edge3 e2 = GetEdge(v2, v0); Triangle3 f = new Triangle3(v0, v1, v2, e0, e1, e2); this.triangles.Add(f); v0.AddTriangle(f); v1.AddTriangle(f); v2.AddTriangle(f); e0.AddTriangle(f); e1.AddTriangle(f); e2.AddTriangle(f); }