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 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); }
linkFaces(face,nodeC,edge.faceRight(),edge.nodeRight()); linkFaces(face,nodeB,edge2.faceRight(),edge2.nodeRight()); Edge edgeCB = makeEdge(nodeC,nodeB,face); nodeC.setEdgeAfter(edgeCB); nodeB.setEdgeBefore(edgeCB); linkFaces(face,nodeC,edge.faceRight(),edge.nodeRight()); linkFaces(face,nodeA,edge1.faceRight(),edge1.nodeRight()); Edge edgeAC = makeEdge(nodeA,nodeC,face); nodeA.setEdgeAfter(edgeAC); nodeC.setEdgeBefore(edgeAC);
Edge edgeAD = makeEdge(nodeA,nodeD,faceTwin); nodeA.setEdgeAfter(edgeAD); nodeD.setEdgeBefore(edgeAD); Edge edgeCB = makeEdge(nodeC,nodeB,face); nodeC.setEdgeAfter(edgeCB); nodeB.setEdgeBefore(edgeCB); Edge edgeDB = makeEdge(nodeD,nodeB,faceTwin); nodeD.setEdgeAfter(edgeDB); nodeB.setEdgeBefore(edgeDB); Edge edgeAC = makeEdge(nodeA,nodeC,face); nodeA.setEdgeAfter(edgeAC); nodeC.setEdgeBefore(edgeAC);