TetMesh.Face meshFacei = mfi.next(); Node nodeA = (Node)meshFacei.nodeA().data; Node nodeB = (Node)meshFacei.nodeB().data; Node nodeC = (Node)meshFacei.nodeC().data; if (nodeA.isInSurface() || nodeB.isInSurface() || nodeC.isInSurface()) {
/** * 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); } }
trace(" init: added face"+meshFacei); trace(" node A="+meshFacei.nodeA()); trace(" node B="+meshFacei.nodeB()); trace(" node C="+meshFacei.nodeC());
TetMesh.Node fb = mf.nodeB(); TetMesh.Node fc = mf.nodeC(); Node nodeC;
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()); Node nodeA = edge.nodeA();
Node fb = face.nodeB(); Node fc = face.nodeC();
trace(" meshEdge B="+edge._meshEdge.nodeB()); trace(" meshFace A="+face._meshFace.nodeA()); trace(" meshFace B="+face._meshFace.nodeB()); trace(" meshFace C="+face._meshFace.nodeC()); Node nodeA = edge.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()); Edge edgeAB = edge;
static float normalVector(TetMesh.Face meshFace, float[] v) { TetMesh.Node na = meshFace.nodeA(); TetMesh.Node nb = meshFace.nodeB(); TetMesh.Node nc = meshFace.nodeC(); double xa = na.x();
TetMesh.Node fb = face.nodeB(); TetMesh.Node fc = face.nodeC(); if (na==fa) {
static double normalVector(TetMesh.Face meshFace, double[] v) { TetMesh.Node na = meshFace.nodeA(); TetMesh.Node nb = meshFace.nodeB(); TetMesh.Node nc = meshFace.nodeC(); double xa = na.x();
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 B referenced by this face. * @return the node B. */ public final Node nodeB() { return (Node)_meshFace.nodeB().data; }