Esempio n. 1
0
 public void Remove()
 {
     isRemoved = true;
     v0.triangles.Remove(this);
     v1.triangles.Remove(this);
     v2.triangles.Remove(this);
     v0.RemoveNeighbor(v1);
     v0.RemoveNeighbor(v2);
     v1.RemoveNeighbor(v2);
 }
    public void RemoveNeighbor(SimplifyVertex vertex)
    {
        if (!neighbors.Contains(vertex))
        {
            return;
        }
        foreach (SimplifyTriangle triangle in triangles)
        {
            if (triangle.Contains(vertex))
            {
                return;
            }
        }

        neighbors.Remove(vertex);
        vertex.RemoveNeighbor(this);
    }
Esempio n. 3
0
    public void ReplaceSimplifyVertex(SimplifyVertex vold, SimplifyVertex vnew)
    {
        if (vold == null || vnew == null)
        {
            return;
        }
        if (vold != v0 && vold != v1 && vold != v2)
        {
            return;
        }
        if (vnew == v0 || vnew == v1 || vnew == v2)
        {
            return;
        }

        if (vold == v0)
        {
            v0 = vnew;
        }

        if (vold == v1)
        {
            v1 = vnew;
        }

        if (vold == v2)
        {
            v2 = vnew;
        }

        int i;

        vold.triangles.Remove(this);

        if (vnew.triangles.Contains(this))
        {
            return;
        }

        vnew.triangles.Add(this);

        vold.RemoveNeighbor(v0);
        vold.RemoveNeighbor(v1);
        vold.RemoveNeighbor(v2);

        if (v0.GetSimplifyTriangleCount(this) == 1)
        {
            v0.AppendUniqueNeighbor(v1);
            v0.AppendUniqueNeighbor(v2);
        }

        if (v1.GetSimplifyTriangleCount(this) == 1)
        {
            v1.AppendUniqueNeighbor(v0);
            v1.AppendUniqueNeighbor(v2);
        }

        if (v2.GetSimplifyTriangleCount(this) == 1)
        {
            v2.AppendUniqueNeighbor(v0);
            v2.AppendUniqueNeighbor(v1);
        }

        ComputeNormal();
    }