Пример #1
0
 public bool intersects(BoundingBox box)
 {
     // this could be optimized
     BoundingBox b = new BoundingBox();
     b.include(new Point3(minX, minY, minZ));
     b.include(new Point3(maxX, maxY, maxZ));
     if (b.intersects(box))
     {
         // the box is overlapping or enclosed
         if (!b.contains(new Point3(box.getMinimum().x, box.getMinimum().y, box.getMinimum().z)))
             return true;
         if (!b.contains(new Point3(box.getMinimum().x, box.getMinimum().y, box.getMaximum().z)))
             return true;
         if (!b.contains(new Point3(box.getMinimum().x, box.getMaximum().y, box.getMinimum().z)))
             return true;
         if (!b.contains(new Point3(box.getMinimum().x, box.getMaximum().y, box.getMaximum().z)))
             return true;
         if (!b.contains(new Point3(box.getMaximum().x, box.getMinimum().y, box.getMinimum().z)))
             return true;
         if (!b.contains(new Point3(box.getMaximum().x, box.getMinimum().y, box.getMaximum().z)))
             return true;
         if (!b.contains(new Point3(box.getMaximum().x, box.getMaximum().y, box.getMinimum().z)))
             return true;
         if (!b.contains(new Point3(box.getMaximum().x, box.getMaximum().y, box.getMaximum().z)))
             return true;
         // all vertices of the box are inside - the surface of the box is
         // not intersected
     }
     return false;
 }