private void test(BoundingBoxTree.Node node, int minSize, float[] x, float[] y, float[] z) { int[] i = node.getIndices(); int n = i.length; assertTrue(minSize<=n); BoundingBox bb = node.getBoundingBox(); for (int j=0; j<n; ++j) { int ij = i[j]; assertTrue(bb.contains(x[ij],y[ij],z[ij])); } BoundingBoxTree.Node left = node.getLeft(); BoundingBoxTree.Node right = node.getRight(); if (left!=null) { assertTrue(bb.contains(left.getBoundingBox())); assertTrue(bb.contains(right.getBoundingBox())); test(left,minSize,x,y,z); test(right,minSize,x,y,z); } else { assertTrue(n/2<minSize); } } }
private void buildTree( Group parent, BoundingBoxTree.Node bbtNode, float[] xyz, float[] rgb) { if (bbtNode.isLeaf()) { PointNode pn; if (_size>0.0f) { pn = new PointNode(bbtNode,_size,xyz,rgb); } else { pn = new PointNode(bbtNode,xyz,rgb); } parent.addChild(pn); } else { Group group = new Group(); parent.addChild(group); buildTree(group,bbtNode.getLeft(),xyz,rgb); buildTree(group,bbtNode.getRight(),xyz,rgb); } }
private void buildTree(Group parent, BoundingBoxTree.Node bbtNode, int[] ijk, float[] xyz, float[] uvw, float[] rgb) { if (bbtNode.isLeaf()) { TriangleNode tn = new TriangleNode(bbtNode,ijk,xyz,uvw,rgb); parent.addChild(tn); } else { Group group = new Group(); parent.addChild(group); buildTree(group,bbtNode.getLeft(),ijk,xyz,uvw,rgb); buildTree(group,bbtNode.getRight(),ijk,xyz,uvw,rgb); } }
private void buildTree(Group parent, BoundingBoxTree.Node bbtNode, int[] ijkl, float[] xyz, float[] uvw, float[] rgb) { if (bbtNode.isLeaf()) { QuadNode qn = new QuadNode(bbtNode,ijkl,xyz,uvw,rgb); parent.addChild(qn); } else { Group group = new Group(); parent.addChild(group); buildTree(group,bbtNode.getLeft(),ijkl,xyz,uvw,rgb); buildTree(group,bbtNode.getRight(),ijkl,xyz,uvw,rgb); } }