Added raycast against trianglemesh. Will be extended to object cast soon.

Thanks John Rowe (JMC)
This commit is contained in:
ejcoumans
2007-11-29 21:24:51 +00:00
parent 174f6009bb
commit f2c9588969
8 changed files with 238 additions and 25 deletions

View File

@@ -65,6 +65,41 @@ SIMD_FORCE_INLINE int btOutcode(const btVector3& p,const btVector3& halfExtent)
}
SIMD_FORCE_INLINE bool btRayAabb2(const btVector3& rayFrom,
const btVector3& rayInvDirection,
const unsigned int raySign[3],
const btVector3 bounds[2],
btScalar& tmin,
btScalar lambda_min,
btScalar lambda_max)
{
btScalar tmax, tymin, tymax, tzmin, tzmax;
tmin = (bounds[raySign[0]][0] - rayFrom[0]) * rayInvDirection[0];
tmax = (bounds[1-raySign[0]][0] - rayFrom[0]) * rayInvDirection[0];
tymin = (bounds[raySign[1]][1] - rayFrom[1]) * rayInvDirection[1];
tymax = (bounds[1-raySign[1]][1] - rayFrom[1]) * rayInvDirection[1];
if ( (tmin > tymax) || (tymin > tmax) )
return false;
if (tymin > tmin)
tmin = tymin;
if (tymax < tmax)
tmax = tymax;
tzmin = (bounds[raySign[2]][2] - rayFrom[2]) * rayInvDirection[2];
tzmax = (bounds[1-raySign[2]][2] - rayFrom[2]) * rayInvDirection[2];
if ( (tmin > tzmax) || (tzmin > tmax) )
return false;
if (tzmin > tmin)
tmin = tzmin;
if (tzmax < tmax)
tmax = tzmax;
return ( (tmin < lambda_max) && (tmax > lambda_min) );
}
SIMD_FORCE_INLINE bool btRayAabb(const btVector3& rayFrom,
const btVector3& rayTo,
const btVector3& aabbMin,
@@ -123,3 +158,4 @@ SIMD_FORCE_INLINE bool btRayAabb(const btVector3& rayFrom,
#endif