| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- from panda3d.core import Plane, BoundingPlane, BoundingSphere, BoundingVolume
- def test_plane_contains_sphere():
- plane = BoundingPlane((0, 0, 1, 0))
- # Sphere above plane
- assert plane.contains(BoundingSphere((0, 0, 2), 1)) == BoundingVolume.IF_no_intersection
- # Sphere intersecting surface of plane
- assert plane.contains(BoundingSphere((0, 0, 0), 1)) == BoundingVolume.IF_possible | BoundingVolume.IF_some
- # Sphere below plane
- assert plane.contains(BoundingSphere((0, 0, -2), 1)) == BoundingVolume.IF_possible | BoundingVolume.IF_some | BoundingVolume.IF_all
- def test_plane_contains_plane():
- # Plane should always fully contain itself.
- a = BoundingPlane((1, 0, 0, 1))
- assert a.contains(a) == BoundingVolume.IF_possible | BoundingVolume.IF_some | BoundingVolume.IF_all
- # Plane with its mirror image
- a = BoundingPlane((1, 0, 0, 1))
- b = BoundingPlane((-1, 0, 0, -1))
- assert a.contains(b) == BoundingVolume.IF_no_intersection
- assert b.contains(a) == BoundingVolume.IF_no_intersection
- # One plane above the other
- a = BoundingPlane(Plane((1, 0, 0), (1, 0, 0)))
- b = BoundingPlane(Plane((1, 0, 0), (2, 0, 0)))
- assert a.contains(b) == BoundingVolume.IF_possible | BoundingVolume.IF_some
- assert b.contains(a) == BoundingVolume.IF_possible | BoundingVolume.IF_some | BoundingVolume.IF_all
- # Opposing planes with distance between them.
- a = BoundingPlane(Plane((1, 0, 0), (1, 0, 0)))
- b = BoundingPlane(Plane((-1, 0, 0), (2, 0, 0)))
- assert a.contains(b) == BoundingVolume.IF_no_intersection
- assert b.contains(a) == BoundingVolume.IF_no_intersection
- # Planes overlapping in the same axis.
- a = BoundingPlane(Plane((1, 0, 0), (2, 0, 0)))
- b = BoundingPlane(Plane((-1, 0, 0), (1, 0, 0)))
- assert a.contains(b) == BoundingVolume.IF_possible | BoundingVolume.IF_some
- assert b.contains(a) == BoundingVolume.IF_possible | BoundingVolume.IF_some
- # Planes overlapping due to not sharing a normal vector.
- a = BoundingPlane(Plane((1, 0, 0), (2, 0, 0)))
- b = BoundingPlane(Plane((0.8, 0.6, 0), (4, 0, 0)))
- assert a.contains(b) == BoundingVolume.IF_possible | BoundingVolume.IF_some
- assert b.contains(a) == BoundingVolume.IF_possible | BoundingVolume.IF_some
- # Same as above.
- a = BoundingPlane(Plane((1, 0, 0), (2, 0, 0)))
- b = BoundingPlane(Plane((-0.8, -0.6, 0), (4, 0, 0)))
- assert a.contains(b) == BoundingVolume.IF_possible | BoundingVolume.IF_some
- assert b.contains(a) == BoundingVolume.IF_possible | BoundingVolume.IF_some
- # Planes pointing along different major axes.
- a = BoundingPlane(Plane((1, 0, 0, 0)))
- b = BoundingPlane(Plane((0, 1, 0, 0)))
- c = BoundingPlane(Plane((0, 0, 1, 0)))
- assert a.contains(b) == BoundingVolume.IF_possible | BoundingVolume.IF_some
- assert b.contains(c) == BoundingVolume.IF_possible | BoundingVolume.IF_some
- assert a.contains(c) == BoundingVolume.IF_possible | BoundingVolume.IF_some
|