void add_edge_vert(int graph_eid, int mesh_tri, int mesh_edge, int mesh_vert) { GraphEdgeInfo einfo = new GraphEdgeInfo() { caseType = TriangleCase.EdgeVertex, mesh_edges = new Index2i(mesh_edge, mesh_vert), mesh_tri = mesh_tri }; GraphEdges.insertAt(einfo, graph_eid); }
void add_on_edge(int graph_eid, int mesh_tri, int mesh_edge) { GraphEdgeInfo einfo = new GraphEdgeInfo() { caseType = TriangleCase.OnEdge, mesh_edges = new Index2i(mesh_edge, -1), mesh_tri = mesh_tri }; GraphEdges.insertAt(einfo, graph_eid); }
void add_edge_edge(int graph_eid, int mesh_tri, Index2i mesh_edges) { GraphEdgeInfo einfo = new GraphEdgeInfo() { caseType = TriangleCase.EdgeEdge, mesh_edges = mesh_edges, mesh_tri = mesh_tri }; GraphEdges.insertAt(einfo, graph_eid); }
/// <summary> /// DGraph3 edges are not oriented, which means they cannot inherit orientation from mesh. /// This function returns true if, for a given graph_eid, the vertex pair returned by /// Graph.GetEdgeV(graph_eid) should be reversed to be consistent with mesh orientation. /// Mainly inteded to be passed to DGraph3Util.ExtractCurves /// </summary> public bool ShouldReverseGraphEdge(int graph_eid) { if (GraphEdges == null) { throw new Exception("MeshIsoCurves.OrientEdge: must track edge graph info to orient edge"); } Index2i graph_ev = Graph.GetEdgeV(graph_eid); GraphEdgeInfo einfo = GraphEdges[graph_eid]; if (graph_ev.b == einfo.order.a && graph_ev.a == einfo.order.b) { return(true); } Util.gDevAssert(graph_ev.a == einfo.order.a && graph_ev.b == einfo.order.b); return(false); }