Simbody
3.3
|
This class represents a rectangular box with arbitrary position and orientation. More...
#include <OrientedBoundingBox.h>
Public Member Functions | |
OrientedBoundingBox () | |
OrientedBoundingBox (const Transform &transform, const Vec3 &size) | |
Create an OrientedBoundingBox. More... | |
OrientedBoundingBox (const Vector_< Vec3 > &points) | |
Create an OrientedBoundingBox which encloses a set of points. More... | |
const Transform & | getTransform () const |
Get the position and orientation of the box. More... | |
const Vec3 & | getSize () const |
Get the dimensions of the box. More... | |
bool | containsPoint (const Vec3 &point) const |
Determine whether a point is inside the box. More... | |
bool | intersectsBox (const OrientedBoundingBox &box) const |
Determine whether this box intersects another bounding box at any point. More... | |
bool | intersectsRay (const Vec3 &origin, const UnitVec3 &direction, Real &distance) const |
Determine whether a ray intersects this bounding box. More... | |
Vec3 | findNearestPoint (const Vec3 &position) const |
Given a point in space, find the point inside the bounding box which is nearest to it. More... | |
void | getCorners (Vec3 corners[8]) const |
Get the locations of the eight corners of the box. More... | |
This class represents a rectangular box with arbitrary position and orientation.
It is used in collision detection as a bounding volume for geometry of various types.
An OrientedBoundingBox is defined by a Transform that specifies its position and orientation, and a Vec3 that specifies its size. In the reference frame defined by the Transform, one corner is at the origin and the opposite corner is at the point returned by getSize().
SimTK::OrientedBoundingBox::OrientedBoundingBox | ( | ) |
Create an OrientedBoundingBox.
transform | specifies the position and orientation of the box |
size | specifies the dimensions of the box |
Create an OrientedBoundingBox which encloses a set of points.
const Transform& SimTK::OrientedBoundingBox::getTransform | ( | ) | const |
Get the position and orientation of the box.
const Vec3& SimTK::OrientedBoundingBox::getSize | ( | ) | const |
Get the dimensions of the box.
bool SimTK::OrientedBoundingBox::containsPoint | ( | const Vec3 & | point | ) | const |
Determine whether a point is inside the box.
bool SimTK::OrientedBoundingBox::intersectsBox | ( | const OrientedBoundingBox & | box | ) | const |
Determine whether this box intersects another bounding box at any point.
bool SimTK::OrientedBoundingBox::intersectsRay | ( | const Vec3 & | origin, |
const UnitVec3 & | direction, | ||
Real & | distance | ||
) | const |
Determine whether a ray intersects this bounding box.
origin | the position at which the ray begins |
direction | the ray direction |
distance | if an intersection is found, the distance from the ray origin to the intersection point is stored in this. Otherwise, it is left unchanged. |
Given a point in space, find the point inside the bounding box which is nearest to it.
void SimTK::OrientedBoundingBox::getCorners | ( | Vec3 | corners[8] | ) | const |
Get the locations of the eight corners of the box.
corners | the corner locations are stored in this array |