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); }
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); }
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); }
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); }