public int hashCode() { return nodeA().hashCode()^nodeB().hashCode(); } private TetMesh.Edge _meshEdge;
Node nodeA = edge.nodeA(); Node nodeB = edge.nodeB();
trace(" meshFace B="+face._meshFace.nodeB()); trace(" meshFace C="+face._meshFace.nodeC()); Node nodeA = edge.nodeA(); Node nodeB = edge.nodeB(); Node nodeC = otherNode(face,nodeA,nodeB); Edge edge1 = nodeC.edgeBefore(); Edge edge2 = nodeC.edgeAfter(); Node node1 = edge1.nodeA(); Node node2 = edge2.nodeB(); if (node2==nodeA) {
Face face = edgeFace.face; double grade = edgeFace.grade; Node nodeA = edge.nodeA(); Node nodeB = edge.nodeB(); Node nodeC = otherNode(face,nodeA,nodeB); assert nodeB.isOnBoundary(); assert nodeC.isOnBoundary(); Node node1 = nodeC.edgeBefore().nodeA(); assert node1!=nodeA; assert node1!=nodeB; if (node2.isOnBoundary()) { Edge edgeTwin = node2.edgeBefore(); assert nodeC==edgeTwin.nodeA(); removeEdge(edgeTwin); EdgeFace edgeFaceTwin = addEdge(edgeTwin);
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); }
private void validate() { assert _meshNode!=null; assert _face==null || _face.references(this); if (_edgeBefore==null) { assert _edgeAfter==null; } else { assert this==_edgeBefore.nodeB(); assert this==_edgeAfter.nodeA(); assert this==_edgeBefore.nodeA().edgeAfter().nodeB(); assert this==_edgeAfter.nodeB().edgeBefore().nodeA(); } assert _edgeBefore==null && _edgeAfter==null || _edgeBefore!=null && this==_edgeBefore.nodeB() && _edgeAfter!=null && this==_edgeAfter.nodeA(); } private void init() {
public Edge edgeBefore() { return nodeA()._edgeBefore; } public Edge edgeAfter() {
public Node nodeRight() { return (_faceRight!=null)?otherNode(_faceRight,nodeA(),nodeB()):null; } public Edge edgeBefore() {
public Node nodeLeft() { return (_faceLeft!=null)?otherNode(_faceLeft,nodeA(),nodeB()):null; } public Node nodeRight() {