/** * Appends the tri nabors of the specified node to the specified list. * @param node the node for which to get nabors. * @param nabors the list to which nabors are appended. */ public synchronized void getTriNabors(Node node, TriList nabors) { clearTriMarks(); getTriNabors(node,node._tri,nabors); }
/** * Gets an array of tri nabors of the specified node. * @param node the node for which to get nabors. * @return the array of nabors. */ public synchronized Tri[] getTriNabors(Node node) { TriList nabors = new TriList(); getTriNabors(node,nabors); return nabors.trim(); }
/** * Gets an array of tri nabors of the specified edge. * @param edge the edge for which to get nabors. * @return the array of nabors. */ public synchronized Tri[] getTriNabors(Edge edge) { TriList nabors = new TriList(); getTriNabors(edge,nabors); return nabors.trim(); }
if (node==n0) { if (t1!=null && !isMarked(t1)) getTriNabors(node,t1,nabors); if (t2!=null && !isMarked(t2)) getTriNabors(node,t2,nabors); } else if (node==n1) { if (t2!=null && !isMarked(t2)) getTriNabors(node,t2,nabors); if (t0!=null && !isMarked(t0)) getTriNabors(node,t0,nabors); } else if (node==n2) { if (t0!=null && !isMarked(t0)) getTriNabors(node,t0,nabors); if (t1!=null && !isMarked(t1)) getTriNabors(node,t1,nabors); } else { assert false:"node is referenced by tri";
/** * Determines whether the specified node is an inner node. * @param node a node. * @return true, if inner; false, otherwise. */ public boolean isInner(Node node) { Tri tri = node.tri(); if (tri==null || isInner(tri)) return true; Tri[] tris = getTriNabors(node); int ntri = tris.length; for (int itri=0; itri<ntri; ++itri) { if (isInner(tris[itri])) return true; } return false; }
public void testNabors() { TriMesh tm = new TriMesh(); TriMesh.Node n0 = new TriMesh.Node(1.0f,0.0f); TriMesh.Node n1 = new TriMesh.Node(0.0f,1.0f); TriMesh.Node n2 = new TriMesh.Node(0.0f,0.0f); TriMesh.Node n3 = new TriMesh.Node(1.1f,1.1f); tm.addNode(n0); tm.addNode(n1); tm.addNode(n2); tm.addNode(n3); assertEquals(2,tm.getTriNabors(n0).length); assertEquals(2,tm.getTriNabors(n1).length); assertEquals(1,tm.getTriNabors(n2).length); assertEquals(1,tm.getTriNabors(n3).length); assertEquals(2,tm.getTriNabors(tm.findEdge(n0,n1)).length); assertEquals(1,tm.getTriNabors(tm.findEdge(n0,n2)).length); assertEquals(1,tm.getTriNabors(tm.findEdge(n1,n2)).length); assertEquals(1,tm.getTriNabors(tm.findEdge(n0,n3)).length); assertEquals(1,tm.getTriNabors(tm.findEdge(n1,n3)).length); assertEquals(3,tm.getEdgeNabors(n0).length); assertEquals(3,tm.getEdgeNabors(n1).length); assertEquals(2,tm.getEdgeNabors(n2).length); assertEquals(2,tm.getEdgeNabors(n3).length); assertEquals(3,tm.getNodeNabors(n0).length); assertEquals(3,tm.getNodeNabors(n1).length); assertEquals(2,tm.getNodeNabors(n2).length); assertEquals(2,tm.getNodeNabors(n3).length); }
Tri[] tris = getTriNabors(node); int ntri = tris.length; for (int itri=0; itri<ntri; ++itri) {