public void ReplaceWedge(Wedge vOld, Wedge vNew) { for (int i = 0; i != 3; i++) { if (vOld == m_wedges[i]) { m_wedges[i] = vNew; } } vNew.AddAdjacentTriangle(this); ComputeNormal(); }
/** * Build neighbourly relations between vertices and wedges using the triangles of the model **/ private void BuildNeighbourlyRelations(List <Wedge> wedges, Vertex[] vertices, List <int> tris) { for (int i = 0; i != tris.Count; i += 3) { Vertex v0 = vertices[tris[i]]; Vertex v1 = vertices[tris[i + 1]]; Vertex v2 = vertices[tris[i + 2]]; Triangle triangle = new Triangle(v0, v1, v2); //m_triangles.Add(triangle); //Set this triangle as an adjacent triangle for every vertex //v0.AddAdjacentTriangle(triangle); //v1.AddAdjacentTriangle(triangle); //v2.AddAdjacentTriangle(triangle); //for each triangle vertex, set the 2 opposite points as neighbors //v0.AddNeighbor(v1); //v0.AddNeighbor(v2); //v1.AddNeighbor(v0); //v1.AddNeighbor(v2); //v2.AddNeighbor(v0); //v2.AddNeighbor(v1); Wedge w0 = GetWedgeHoldingVertex(wedges, v0); Wedge w1 = GetWedgeHoldingVertex(wedges, v1); Wedge w2 = GetWedgeHoldingVertex(wedges, v2); w0.AddNeighbor(w1); w0.AddNeighbor(w2); w1.AddNeighbor(w0); w1.AddNeighbor(w2); w2.AddNeighbor(w0); w2.AddNeighbor(w1); WedgeTriangle wedgeTriangle = new WedgeTriangle(w0, w1, w2); wedgeTriangle.m_mappedVertexTriangle = triangle; //map here the vertex triangle to the wedge triangle if (wedges == m_initialWedges) //populate the m_originalTriangles using the m_initialWedges list only { m_originalTriangles.Add(wedgeTriangle); } w0.AddAdjacentTriangle(wedgeTriangle); w1.AddAdjacentTriangle(wedgeTriangle); w2.AddAdjacentTriangle(wedgeTriangle); } }