/** * Determines whether the specified nodes are an internal edge. * An internal edge is not on the boundary; it has two nabor faces. */ private boolean hasInternalEdge(Node nodeA, Node nodeB) { Face face = findFace(nodeA,nodeB); if (face==null) return false; face = face.faceNabor(otherNode(face,nodeA,nodeB)); if (face==null) return false; return true; }
if (n1==na) { if (n2==nb || n2==nc || fb!=null && !isMarked(fb) && (face=findFace(fb,n1,n2))!=null || fc!=null && !isMarked(fc) && (face=findFace(fc,n1,n2))!=null) return face; } else if (n1==nb) { if (n2==nc || n2==na || fc!=null && !isMarked(fc) && (face=findFace(fc,n1,n2))!=null || fa!=null && !isMarked(fa) && (face=findFace(fa,n1,n2))!=null) return face; } else if (n1==nc) { if (n2==na || n2==nb || fa!=null && !isMarked(fa) && (face=findFace(fa,n1,n2))!=null || fb!=null && !isMarked(fb) && (face=findFace(fb,n1,n2))!=null) return face; } else {
/** * Returns a face that references the specified nodes. * @param node1 a node. * @param node2 a node. * @param node3 a node. * @return a face that references the specified nodes; or null, * if a node is not in the surface or the surface has no faces. */ public synchronized Face findFace(Node node1, Node node2, Node node3) { Face face = findFace(node1,node2); // if (face!=null) { // clearFaceMarks(); // face = findFace(face,node1,node2,node3); // } if (face!=null) { if (face.references(node3)) return face; face = face.faceNabor(node3); if (face!=null && face.references(node3)) return face; } return null; }
if (n2==nb) { if (n3==nc || fc!=null && !isMarked(fc) && (face=findFace(fc,n1,n2,n3))!=null) return face; } else if (n2==nc) { if (n3==nb || fb!=null && !isMarked(fb) && (face=findFace(fb,n1,n2,n3))!=null) return face; } else { if (n2==na) { if (n3==nc || fc!=null && !isMarked(fc) && (face=findFace(fc,n1,n2,n3))!=null) return face; } else if (n2==nc) { if (n3==na || fa!=null && !isMarked(fa) && (face=findFace(fa,n1,n2,n3))!=null) return face; } else { if (n2==na) { if (n3==nb || fb!=null && !isMarked(fb) && (face=findFace(fb,n1,n2,n3))!=null) return face; } else if (n2==nb) { if (n3==na || fa!=null && !isMarked(fa) && (face=findFace(fa,n1,n2,n3))!=null) return face; } else {
Face face = findFace(node1); if (face!=null) {
/** * Returns a directed edge AB that references the specified nodes. * @param nodeA a node. * @param nodeB a node. * @return a directed edge that references the specified nodes; * or null, if nodes A and B are not adjacent in the surface. */ public synchronized Edge findEdge(Node nodeA, Node nodeB) { TetMesh.Edge meshEdge = findMeshEdge(nodeA,nodeB); Edge edge = getEdge(meshEdge); if (meshEdge!=null && edge==null) { Face face = findFace(nodeA,nodeB); if (face!=null) { Node nodeC = otherNode(face,nodeA,nodeB); if (nodesInOrder(face,nodeA,nodeB,nodeC)) edge = new Edge(meshEdge,face); } } return edge; }