예제 #1
0
        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();
        }
예제 #2
0
        /**
         * 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);
            }
        }