private Face getFaceOnHull(Tet tet) { ArrayList<Tet> stack = new ArrayList<Tet>(128); stack.add(tet); while (!stack.isEmpty()) { Tet t = stack.remove(stack.size()-1); mark(t); if (t._t0==null) return new Face(t,t._n0); if (t._t1==null) return new Face(t,t._n1); if (t._t2==null) return new Face(t,t._n2); if (t._t3==null) return new Face(t,t._n3); if (!isMarked(t._t0)) stack.add(t._t0); if (!isMarked(t._t1)) stack.add(t._t1); if (!isMarked(t._t2)) stack.add(t._t2); if (!isMarked(t._t3)) stack.add(t._t3); } return null; }
TetMesh.Node d = tet.nodeD(); TetMesh.Face[] meshFaces = { new TetMesh.Face(a,b,c,tet), new TetMesh.Face(b,d,c,tet), new TetMesh.Face(c,d,a,tet), new TetMesh.Face(d,b,a,tet), }; for (int i=0; i<4; ++i) {
if (nb==n1) { if (nc==n2) { return new Face(tet,n3); } else if (nc==n3) { return new Face(tet,n2); } else { return null; return new Face(tet,n3); } else if (nc==n3) { return new Face(tet,n1); } else { return null; return new Face(tet,n2); } else if (nc==n2) { return new Face(tet,n1); } else { return null; if (nb==n0) { if (nc==n2) { return new Face(tet,n3); } else if (nc==n3) { return new Face(tet,n2); } else { return null; return new Face(tet,n3);
return new PointLocation(new Edge(tet,n0,n1)); } else if (d0==0.0) { return new PointLocation(new Face(tet,n0)); } else if (d1==0.0) { return new PointLocation(new Face(tet,n1)); } else if (d2==0.0) { return new PointLocation(new Face(tet,n2)); } else if (d3==0.0) { return new PointLocation(new Face(tet,n3));
face = new Face(ta,tb,tc,tet); } else if (ea==tb && eb==td || ea==td && eb==tc || ea==tc && eb==tb) { face = new Face(tb,td,tc,tet); } else if (ea==tc && eb==td || ea==td && eb==ta || ea==ta && eb==tc) { face = new Face(tc,td,ta,tet); } else if (ea==td && eb==tb || ea==tb && eb==ta || ea==ta && eb==td) { face = new Face(td,tb,ta,tet); } else { assert false:"tet references edge"; tetBack = tet.tetNabor(node); face = new Face(null,null,tet,node); } else { face = new Face(tet,node);
TetMesh.Face f102 = new TetMesh.Face(n1,n0,n2,tet); assertTrue(face.equals(f102)); face = tm.findFace(n0,n1,n3); TetMesh.Face f301 = new TetMesh.Face(n3,n0,n1,tet); assertTrue(face.equals(f301)); face = tm.findFace(n0,n2,n3); TetMesh.Face f320 = new TetMesh.Face(n3,n2,n0,tet); assertTrue(face.equals(f320)); assertTrue(null==tm.findFace(n0,n1,n4));
/** * Given a node referenced by one face of the hull, gets the next * face on the hull that is opposite that node. */ private Face getNextFaceOnHull(Node node, Face face) { Tet tet = face.tetLeft(); Node next = face.nodeLeft(); for (Tet tnext=tet.tetNabor(node); tnext!=null; tnext=tet.tetNabor(node)) { node = next; next = tet.nodeNabor(tnext); tet = tnext; } return new Face(tet,node); }
/** * Returns the mate of this face. * @return the mate of this face. */ public Face mate() { return new Face(_b,_a,_c,_tetRight,_nodeRight,_tetLeft,_nodeLeft); }