Ejemplo n.º 1
0
        static ACTC_var unmapEdgeTriangle(ref ACTCData tc, ref ACTCEdge edge, ACTCVertex v3)
        {
            int i;

            for (i = 0; i < edge.Triangles.Length; i++)
            {
                if (edge.Triangles[i].FinalVert == v3)
                {
                    break;
                }
            }

            if (i == edge.Triangles.Length)
            {
                //(int)ACTC_.DEBUG(
                //    fprintf(stderr, "ACTC::unmapEdgeTriangle : Couldn't find third vertex"
                //        " from edge in order to delete it?!?\n");
                //    abortWithOptionalDump(tc);
                //)
                return(tc.Error = ACTC_var.DATABASE_CORRUPT);
            }

            edge.Triangles[i] = edge.Triangles[edge.Triangles.Length - 1];
            //Array.Resize<ACTCTriangle>(ref edge.Triangles, edge.Triangles.Length - 1);
            //edge.TriangleCount--;

            return(ACTC_var.NO_ERROR);
        }
Ejemplo n.º 2
0
        static ACTC_var mapVertexEdge(ACTCVertex v1, ACTCVertex v2, out ACTCEdge edge)
        {
            uint     i;
            ACTCEdge tmp = new ACTCEdge();

            for (i = 0; i < v1.Edges.Length; i++)
            {
                if (v1.Edges[i].V2 == v2)
                {
                    v1.Edges[i].Count++;
                    break;
                }
            }

            if (i == v1.Edges.Length)
            {
                tmp.V2        = v2;
                tmp.Count     = 1;
                tmp.Triangles = new ACTCTriangle[0];

                //Add the edge to the end of the first vertex edge array.
                if (v1.Edges == null)
                {
                    v1.Edges = new ACTCEdge[0];
                }

                Array.Resize <ACTCEdge>(ref v1.Edges, v1.Edges.Length + 1);
                v1.Edges[v1.Edges.Length - 1] = tmp;
            }

            edge = v1.Edges[i];

            return(ACTC_var.NO_ERROR);
        }
Ejemplo n.º 3
0
        static ACTC_var findEdge(ACTCVertex v1, ACTCVertex v2, out ACTCEdge edge)
        {
            int i;

            for (i = 0; i < v1.Edges.Length; i++)
            {
                if (v1.Edges[i].V2 == v2)
                {
                    edge = v1.Edges[i];
                    return(ACTC_var.TRUE);
                }
            }
            edge = null;
            return(ACTC_var.FALSE);
        }
Ejemplo n.º 4
0
        static ACTC_var mapEdgeTriangle(ref ACTCEdge edge, ACTCVertex v3)
        {
            ACTCTriangle tmp = new ACTCTriangle();

            tmp.FinalVert = v3;

            if (edge.Triangles == null)
            {
                edge.Triangles = new ACTCTriangle[0];
            }

            Array.Resize <ACTCTriangle>(ref edge.Triangles, edge.Triangles.Length + 1);
            edge.Triangles[edge.Triangles.Length - 1] = tmp;

            return(ACTC_var.NO_ERROR);
        }