Isis 3 Programmer Reference
|
Bullet ray tracing callback for closest hit on target surface. More...
#include <BulletClosestRayCallback.h>
Public Member Functions | |
BulletClosestRayCallback () | |
Default constructor. | |
BulletClosestRayCallback (const BulletClosestRayCallback &result, const btVector3 &point, const btVector3 &normal) | |
Construct a callback from another callback, an intersection point, and a surface normal. | |
BulletClosestRayCallback (const btVector3 &observer, const btVector3 &lookdir) | |
Construct a callback from a ray start and end. | |
BulletClosestRayCallback (const btVector3 &observer, const btVector3 &lookdir, const btCollisionWorld::RayResultCallback &source, btCollisionWorld::LocalRayResult &rayResult, bool nornmalInWorldSpace) | |
This constructor is used to create a single ray hit. | |
virtual | ~BulletClosestRayCallback () |
Destory a callback. | |
bool | isValid () const |
Checks if the callback is valid/has a valid intersection. | |
btVector3 | observer () const |
Return the beginning of the ray. | |
btVector3 | lookdir () const |
Return the end of the ray. | |
btScalar | fraction () const |
Return the intersection hit fraction or fractional distance along the ray of the intersection. | |
btVector3 | point () const |
Return the intersection point, if one exists. | |
btVector3 | normal () const |
Return the local surface normal at the intersection, if an intersection exists. | |
int | triangleIndex () const |
Return the 0-based index of the intersected triangle. | |
int | partId () const |
Return the Bullet ID of the intersected collision object. | |
btScalar | distance () const |
Returns the distance from the intersection point to the beginning of the ray. | |
btScalar | distance (const BulletClosestRayCallback &other) const |
Returns the distance from the intersection point of this callback to the intersection point of another callback. | |
btScalar | distance (const btVector3 &other) const |
Returns the distance from the intersection point to another point. | |
bool | operator== (const BulletClosestRayCallback &other) const |
Equality operator to check if this callback is equivalent to another callback. | |
bool | isVisible (const BulletClosestRayCallback &other, const btScalar tolerance=DBL_MAX) const |
Check if the intersection in this is visible based on another callback. | |
const BulletTargetShape * | body () const |
@breif Return pointer to target shape | |
Protected Member Functions | |
virtual btScalar | addSingleResult (btCollisionWorld::LocalRayResult &rayResult, bool normalInWorldSpace) |
! The Bullet ID of the intersected collision object. | |
Protected Attributes | |
btVector3 | m_point |
btVector3 | m_normal |
! The intersection point in body fixed (x, y, z) kilometers. | |
int | m_triangleIndex |
! The local surface normal at the intersection point in body fixed (x, y, z). | |
int | m_partId |
! The 0-based index of the intersected triangle. | |
Private Member Functions | |
unsigned int | defaultFlags () const |
Return the default ray cast flags. | |
void | copyRayResult (btCollisionWorld::RayResultCallback &dest, const btCollisionWorld::RayResultCallback &source) |
Easy way to copy one callback into another. | |
Bullet ray tracing callback for closest hit on target surface.
Stores the results of a raycast to find the closest intersection to the start of a ray. If no raycast has been preformed, or a raycast was unsuccessful, then the callback will be flagged as invalid.
Definition at line 33 of file BulletClosestRayCallback.h.
Isis::BulletClosestRayCallback::BulletClosestRayCallback | ( | ) |
Default constructor.
The ray beginning and end, intersection point, and normal default to the origin. The triangle index and part ID default to -1.
Definition at line 31 of file BulletClosestRayCallback.cpp.
References defaultFlags().
Isis::BulletClosestRayCallback::BulletClosestRayCallback | ( | const BulletClosestRayCallback & | result, |
const btVector3 & | point, | ||
const btVector3 & | normal ) |
Construct a callback from another callback, an intersection point, and a surface normal.
result | The callback to to construct a copy of. The intersection point and normal will not be copied. |
point | The intersection point to store. |
normal | The surface normal to store. |
Definition at line 50 of file BulletClosestRayCallback.cpp.
Isis::BulletClosestRayCallback::BulletClosestRayCallback | ( | const btVector3 & | observer, |
const btVector3 & | lookdir ) |
Construct a callback from a ray start and end.
observer | The beginning of the ray. |
lookdir | The end of the ray. |
Definition at line 67 of file BulletClosestRayCallback.cpp.
References defaultFlags().
Isis::BulletClosestRayCallback::BulletClosestRayCallback | ( | const btVector3 & | observer, |
const btVector3 & | lookdir, | ||
const btCollisionWorld::RayResultCallback & | source, | ||
btCollisionWorld::LocalRayResult & | rayResult, | ||
bool | normalInWorldSpace ) |
This constructor is used to create a single ray hit.
This constructor is intended to be used in a multi-ray hit environment such as the BulletAllRayHitsRayCallback object to provide the same features provided in this single hit object.
observer | The beginning of the ray. |
lookdir | The end of the ray. |
source | The original callback this is being created from. |
rayResult | The local intersection result. |
normalInWorldSpace | Is the normal in the local result in the local coordinate system or the world coordinate system? |
Definition at line 94 of file BulletClosestRayCallback.cpp.
References addSingleResult(), and copyRayResult().
|
virtual |
Destory a callback.
Definition at line 110 of file BulletClosestRayCallback.cpp.
|
protectedvirtual |
! The Bullet ID of the intersected collision object.
Add a local intersection result to this callback during ray casting.
Because this callback only stores the single closest result, this overwrites any currently stored result.
rayResult | The local intersection result for the ray cast. |
normalInWorldSpace | If the normal stored in the local result is in local coordinates or world coordinates. |
Definition at line 333 of file BulletClosestRayCallback.cpp.
References m_normal, m_partId, and m_triangleIndex.
Referenced by BulletClosestRayCallback().
const BulletTargetShape * Isis::BulletClosestRayCallback::body | ( | ) | const |
@breif Return pointer to target shape
This method assumes the creators have properly set the user pointer in (at least) the btCollisionObject.
Definition at line 313 of file BulletClosestRayCallback.cpp.
References isValid().
|
private |
Easy way to copy one callback into another.
dest | The callback to copy over. |
source | The callback to copy from. |
Definition at line 365 of file BulletClosestRayCallback.cpp.
Referenced by BulletClosestRayCallback().
|
private |
Return the default ray cast flags.
The flags come from the EFlags enumeration in the Bullet class btTriangleRaycastCallback.
Definition at line 353 of file BulletClosestRayCallback.cpp.
Referenced by BulletClosestRayCallback(), and BulletClosestRayCallback().
btScalar Isis::BulletClosestRayCallback::distance | ( | ) | const |
Returns the distance from the intersection point to the beginning of the ray.
Definition at line 221 of file BulletClosestRayCallback.cpp.
References distance(), isValid(), observer(), and point().
Referenced by distance(), distance(), distance(), isVisible(), and Isis::BulletShapeModel::sortHits().
btScalar Isis::BulletClosestRayCallback::distance | ( | const btVector3 & | other | ) | const |
Returns the distance from the intersection point to another point.
other | The point to calculate the distance to. |
Definition at line 252 of file BulletClosestRayCallback.cpp.
References distance(), isValid(), and point().
btScalar Isis::BulletClosestRayCallback::distance | ( | const BulletClosestRayCallback & | other | ) | const |
Returns the distance from the intersection point of this callback to the intersection point of another callback.
other | The other callback to find the distance to. |
Definition at line 238 of file BulletClosestRayCallback.cpp.
References distance(), isValid(), and point().
btScalar Isis::BulletClosestRayCallback::fraction | ( | ) | const |
Return the intersection hit fraction or fractional distance along the ray of the intersection.
This is where along the ray the intersection was found. If the hit fraction is 0, then the intersection was found at the very beginning of the ray. If the hit fraction is 1, then the intersection was found at the very end of the ray. The intersection point can be calculates as:
(1 - hitFraction) * rayStart + hitFraction * rayEnd
Definition at line 157 of file BulletClosestRayCallback.cpp.
bool Isis::BulletClosestRayCallback::isValid | ( | ) | const |
Checks if the callback is valid/has a valid intersection.
Definition at line 120 of file BulletClosestRayCallback.cpp.
Referenced by body(), distance(), distance(), distance(), Isis::BulletShapeModel::isOccluded(), isVisible(), Isis::BulletShapeModel::isVisibleFrom(), operator==(), and Isis::BulletShapeModel::updateShapeModel().
bool Isis::BulletClosestRayCallback::isVisible | ( | const BulletClosestRayCallback & | other, |
const btScalar | tolerance = DBL_MAX ) const |
Check if the intersection in this is visible based on another callback.
Three things are checked to confirm visibility. First, both callbacks must intersect the same triangle on the same collision object. Second, the angle between this callback's local normal and the vector from the other callback's beginning to this callback's intersection must be less than or equal to 90 degrees. Finally, the distance between the intersections of the two callbacks must be less than the tolerance.
other | The callback for checking visibility. This should represent the observer's look ray. |
tolerance | The tolerance for the final check of the distance between intersection points. |
Definition at line 291 of file BulletClosestRayCallback.cpp.
References distance(), isValid(), partId(), and triangleIndex().
Referenced by Isis::BulletShapeModel::isVisibleFrom().
btVector3 Isis::BulletClosestRayCallback::lookdir | ( | ) | const |
Return the end of the ray.
Definition at line 140 of file BulletClosestRayCallback.cpp.
btVector3 Isis::BulletClosestRayCallback::normal | ( | ) | const |
Return the local surface normal at the intersection, if an intersection exists.
Definition at line 183 of file BulletClosestRayCallback.cpp.
References m_normal, and Isis::IException::Programmer.
Referenced by BulletClosestRayCallback(), Isis::BulletShapeModel::isOccluded(), Isis::BulletShapeModel::isVisibleFrom(), Isis::BulletShapeModel::setLocalNormalFromIntercept(), and Isis::BulletShapeModel::updateShapeModel().
btVector3 Isis::BulletClosestRayCallback::observer | ( | ) | const |
Return the beginning of the ray.
Definition at line 130 of file BulletClosestRayCallback.cpp.
Referenced by distance().
bool Isis::BulletClosestRayCallback::operator== | ( | const BulletClosestRayCallback & | other | ) | const |
Equality operator to check if this callback is equivalent to another callback.
other | The callback to compare with. |
Definition at line 266 of file BulletClosestRayCallback.cpp.
References isValid(), partId(), and triangleIndex().
int Isis::BulletClosestRayCallback::partId | ( | ) | const |
Return the Bullet ID of the intersected collision object.
Definition at line 210 of file BulletClosestRayCallback.cpp.
References m_partId.
Referenced by isVisible(), and operator==().
btVector3 Isis::BulletClosestRayCallback::point | ( | ) | const |
Return the intersection point, if one exists.
Definition at line 167 of file BulletClosestRayCallback.cpp.
References Isis::IException::Programmer.
Referenced by BulletClosestRayCallback(), distance(), distance(), distance(), Isis::BulletShapeModel::isOccluded(), Isis::BulletShapeModel::isVisibleFrom(), Isis::BulletShapeModel::localRadius(), and Isis::BulletShapeModel::updateShapeModel().
int Isis::BulletClosestRayCallback::triangleIndex | ( | ) | const |
Return the 0-based index of the intersected triangle.
Definition at line 200 of file BulletClosestRayCallback.cpp.
References m_triangleIndex.
Referenced by isVisible(), and operator==().
|
protected |
! The intersection point in body fixed (x, y, z) kilometers.
Definition at line 68 of file BulletClosestRayCallback.h.
Referenced by addSingleResult(), BulletClosestRayCallback(), and normal().
|
protected |
! The 0-based index of the intersected triangle.
Definition at line 71 of file BulletClosestRayCallback.h.
Referenced by addSingleResult(), and partId().
|
protected |
Definition at line 67 of file BulletClosestRayCallback.h.
|
protected |
! The local surface normal at the intersection point in body fixed (x, y, z).
Definition at line 70 of file BulletClosestRayCallback.h.
Referenced by addSingleResult(), and triangleIndex().