private void rebuild() { trace("rebuild"); init(); while (surf()) ; }
private void init() { trace(" init: ntets="+_mesh.countTets()); _faceSet.clear(); _faceMap.clear(); if (!_faceSet.contains(meshFacei.mate())) { _faceSet.add(meshFacei); trace(" init: added face"+meshFacei); trace(" node A="+meshFacei.nodeA()); trace(" node B="+meshFacei.nodeB()); trace(" node C="+meshFacei.nodeC()); ((Node)d.data).init(); trace(" init: _faceSet size="+_faceSet.size());
private void extend(Edge edge, Face face) { trace("extend: edge="+edge+" face="+face); trace(" meshEdge A="+edge._meshEdge.nodeA()); trace(" meshEdge B="+edge._meshEdge.nodeB()); trace(" meshFace A="+face._meshFace.nodeA()); trace(" meshFace B="+face._meshFace.nodeB()); trace(" meshFace C="+face._meshFace.nodeC()); assert edge.isOnBoundary(); Node nodeA = edge.nodeA(); Node nodeB = edge.nodeB(); Node nodeC = otherNode(face,nodeA,nodeB); nodeC.setFace(face); linkFaces(face,nodeC,edge.faceRight(),edge.nodeRight()); Edge edgeAC = makeEdge(nodeA,nodeC,face); Edge edgeCB = makeEdge(nodeC,nodeB,face); nodeA.setEdgeAfter(edgeAC); nodeB.setEdgeBefore(edgeCB); nodeC.setEdgeAfter(edgeCB); nodeC.setEdgeBefore(edgeAC); removeEdge(edge); addFace(face); addEdge(edgeAC); addEdge(edgeCB); }
trace(" surf: stitching"); EdgeFace edgeFace = getBestEdgeFace(); while (edgeFace!=null && edgeFace.face!=null) { trace(" surf: removing faces"); ArrayList<TetMesh.Face> faceList = new ArrayList<TetMesh.Face>(); mfi = _faceSet.iterator(); trace(" surf: more faces = "+(countFaces()>nface)); return countFaces()>nface;
private void init(Face face) { trace("init: face="+face); trace(" meshFace A="+face._meshFace.nodeA()); trace(" meshFace B="+face._meshFace.nodeB()); trace(" meshFace C="+face._meshFace.nodeC()); face._faceA = null; face._faceB = null; face._faceC = null; Node nodeA = face.nodeA(); Node nodeB = face.nodeB(); Node nodeC = face.nodeC(); nodeA.setFace(face); nodeB.setFace(face); nodeC.setFace(face); Edge edgeCB = makeEdge(nodeC,nodeB,face); Edge edgeBA = makeEdge(nodeB,nodeA,face); Edge edgeAC = makeEdge(nodeA,nodeC,face); nodeA.setEdgeBefore(edgeBA); nodeB.setEdgeBefore(edgeCB); nodeC.setEdgeBefore(edgeAC); nodeA.setEdgeAfter(edgeAC); nodeB.setEdgeAfter(edgeBA); nodeC.setEdgeAfter(edgeCB); addEdge(edgeCB); addEdge(edgeBA); addEdge(edgeAC); addFace(face); }
private void fillHole(Edge edge, Face face) { trace("fillHole: edge="+edge+" face="+face); trace(" meshEdge A="+edge._meshEdge.nodeA()); trace(" meshEdge B="+edge._meshEdge.nodeB()); trace(" meshFace A="+face._meshFace.nodeA()); trace(" meshFace B="+face._meshFace.nodeB()); trace(" meshFace C="+face._meshFace.nodeC()); Edge edgeAB = edge; Edge edgeBC = edge.edgeAfter();
private void fillEar(Edge edge, Face face) { trace("fillEar: edge="+edge+" face="+face); trace(" meshEdge A="+edge._meshEdge.nodeA()); trace(" meshEdge B="+edge._meshEdge.nodeB()); trace(" meshFace A="+face._meshFace.nodeA()); trace(" meshFace B="+face._meshFace.nodeB()); trace(" meshFace C="+face._meshFace.nodeC()); Node nodeA = edge.nodeA(); Node nodeB = edge.nodeB();
trace("glue: edge="+edge+" face="+face); trace(" meshEdge A="+edge._meshEdge.nodeA()); trace(" meshEdge B="+edge._meshEdge.nodeB()); trace(" meshFace A="+face._meshFace.nodeA()); trace(" meshFace B="+face._meshFace.nodeB()); trace(" meshFace C="+face._meshFace.nodeC()); trace(" meshEdgeTwin A="+edgeTwin._meshEdge.nodeA()); trace(" meshEdgeTwin B="+edgeTwin._meshEdge.nodeB()); trace(" meshFaceTwin A="+faceTwin._meshFace.nodeA()); trace(" meshFaceTwin B="+faceTwin._meshFace.nodeB()); trace(" meshFaceTwin C="+faceTwin._meshFace.nodeC()); Node nodeA = edge.nodeA(); Node nodeB = edge.nodeB();