while (mfi.hasNext()) { TetMesh.Face meshFacei = mfi.next(); Node nodeA = (Node)meshFacei.nodeA().data; Node nodeB = (Node)meshFacei.nodeB().data; Node nodeC = (Node)meshFacei.nodeC().data;
/** * Beginning with any face on the hull, recursively adds all faces * on the hull to the specified set of faces. */ private void getFacesOnHull(Face face, HashSet<Face> faces) { if (!faces.contains(face)) { faces.add(face); getFacesOnHull(getNextFaceOnHull(face.nodeA(),face),faces); getFacesOnHull(getNextFaceOnHull(face.nodeB(),face),faces); getFacesOnHull(getNextFaceOnHull(face.nodeC(),face),faces); } }
_faceSet.add(meshFacei); trace(" init: added face"+meshFacei); trace(" node A="+meshFacei.nodeA()); trace(" node B="+meshFacei.nodeB()); trace(" node C="+meshFacei.nodeC());
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());
TetMesh.Node fa = mf.nodeA(); TetMesh.Node fb = mf.nodeB(); TetMesh.Node fc = mf.nodeC();
Node fa = face.nodeA(); Node fb = face.nodeB(); Node fc = face.nodeC();
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(" 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());
static float normalVector(TetMesh.Face meshFace, float[] v) { TetMesh.Node na = meshFace.nodeA(); TetMesh.Node nb = meshFace.nodeB(); TetMesh.Node nc = meshFace.nodeC();
private static TetMesh.Node otherNode( TetMesh.Face face, TetMesh.Node na, TetMesh.Node nb) TetMesh.Node fa = face.nodeA(); TetMesh.Node fb = face.nodeB(); TetMesh.Node fc = face.nodeC();
static double normalVector(TetMesh.Face meshFace, double[] v) { TetMesh.Node na = meshFace.nodeA(); TetMesh.Node nb = meshFace.nodeB(); TetMesh.Node nc = meshFace.nodeC();
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); }
/** * Appends the tet nabors of the specified face to the specified list. * @param face the face for which to get nabors. * @param nabors the list to which nabors are appended. */ public synchronized void getTetNabors(Face face, TetList nabors) { Tet tetLeft = face.tetLeft(); Tet tetRight = face.tetRight(); if (tetLeft==null && tetRight==null) { Node na = face.nodeA(); Node nb = face.nodeB(); Node nc = face.nodeC(); face = findFace(na,nb,nc); tetLeft = face.tetLeft(); tetRight = face.tetRight(); } if (tetLeft!=null) nabors.add(tetLeft); if (tetRight!=null) nabors.add(tetRight); }
/** * Returns the node A referenced by this face. * @return the node A. */ public final Node nodeA() { return (Node)_meshFace.nodeA().data; }