/** * Determines whether this box contains the specified point. * @param p the point. * @return true, if this box contains the point; false, otherwise. */ public boolean contains(Point3 p) { return contains(p.x,p.y,p.z); }
/** * Determines whether this box contains the specified bounding box. * @param bb the bounding box. * @return true, if this box contains the specified box; false, otherwise. */ public boolean contains(BoundingBox bb) { return contains(bb._xmin,bb._ymin,bb._zmin) && contains(bb._xmax,bb._ymax,bb._zmax); }
public void testBox() { BoundingBox bb = new BoundingBox(); bb.expandBy(0,0,0); bb.expandBy(1,1,1); double a = 10.0*DBL_EPSILON; double b = 1.0-a; assertTrue(bb.contains(new Point3(a,a,a))); assertTrue(bb.contains(new Point3(a,a,b))); assertTrue(bb.contains(new Point3(a,b,a))); assertTrue(bb.contains(new Point3(a,b,b))); assertTrue(bb.contains(new Point3(b,a,a))); assertTrue(bb.contains(new Point3(b,a,b))); assertTrue(bb.contains(new Point3(b,b,a))); assertTrue(bb.contains(new Point3(b,b,b))); a = -10.0*DBL_EPSILON; b = 1.0-a; assertTrue(!bb.contains(new Point3(a,a,a))); assertTrue(!bb.contains(new Point3(a,a,b))); assertTrue(!bb.contains(new Point3(a,b,a))); assertTrue(!bb.contains(new Point3(a,b,b))); assertTrue(!bb.contains(new Point3(b,a,a))); assertTrue(!bb.contains(new Point3(b,a,b))); assertTrue(!bb.contains(new Point3(b,b,a))); assertTrue(!bb.contains(new Point3(b,b,b))); }
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); } } }
public void testBoxExpand() { int ntrial = 100; for (int itrial=0; itrial<ntrial; ++itrial) { BoundingBox bb = new BoundingBox(); assertTrue(bb.isEmpty()); int nexpand = 100; for (int iexpand=0; iexpand<nexpand; ++iexpand) { Point3 c = randomPoint3(); double r = randomDouble(); BoundingSphere bs = new BoundingSphere(c,r); bb.expandBy(bs); assertTrue(!bb.isEmpty()); int npoint=100; for (int ipoint=0; ipoint<npoint; ++ipoint) { Point3 p = randomPoint3(); if (bs.contains(p)) assertTrue(bb.contains(p)); } } } }
public void testSphereExpand() { int ntrial = 100; for (int itrial=0; itrial<ntrial; ++itrial) { BoundingSphere bs = new BoundingSphere(); assertTrue(bs.isEmpty()); int nexpand = 100; for (int iexpand=0; iexpand<nexpand; ++iexpand) { Point3 p = randomPoint3(); Point3 q = randomPoint3(); BoundingBox bb = new BoundingBox(p,q); if (randomDouble()>0.5) { bs.expandBy(bb); } else { bs.expandRadiusBy(bb); } assertTrue(!bs.isEmpty()); int npoint=100; for (int ipoint=0; ipoint<npoint; ++ipoint) { Point3 r = randomPoint3(); if (bb.contains(r)) assertTrue(bs.contains(r)); } } } }