addEdge(edgeCB); linkFaces(face,nodeB,faceTwin,nodeD); linkFaces(face,nodeC,edge.faceRight(),edge.nodeRight()); linkFaces(faceTwin,nodeA,edgeTwin.faceRight(),edgeTwin.nodeRight()); addEdge(edgeAC); linkFaces(face,nodeA,faceTwin,nodeD); linkFaces(face,nodeC,edge.faceRight(),edge.nodeRight()); linkFaces(faceTwin,nodeB,edgeTwin.faceRight(),edgeTwin.nodeRight());
Node node2 = edge2.nodeB(); if (node2==nodeA) { linkFaces(face,nodeC,edge.faceRight(),edge.nodeRight()); linkFaces(face,nodeB,edge2.faceRight(),edge2.nodeRight()); Edge edgeCB = makeEdge(nodeC,nodeB,face); nodeC.setEdgeAfter(edgeCB); addEdge(edgeCB); } else if (node1==nodeB) { linkFaces(face,nodeC,edge.faceRight(),edge.nodeRight()); linkFaces(face,nodeA,edge1.faceRight(),edge1.nodeRight()); Edge edgeAC = makeEdge(nodeA,nodeC,face); nodeA.setEdgeAfter(edgeAC);
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); }