diff --git a/kazmath/ray3.c b/kazmath/ray3.c index 4d5e130..4576bf3 100644 --- a/kazmath/ray3.c +++ b/kazmath/ray3.c @@ -21,12 +21,19 @@ kmRay3* kmRay3FromPointAndDirection(kmRay3* ray, const kmVec3* point, const kmVe kmBool kmRay3IntersectPlane(kmVec3* pOut, const kmRay3* ray, const kmPlane* plane) { //t = - (A*org.x + B*org.y + C*org.z + D) / (A*dir.x + B*dir.y + C*dir.z ) - double t = -(plane->a * ray->start.x + - plane->b * ray->start.y + - plane->c * ray->start.z + plane->d) / ( - plane->a * ray->dir.x + - plane->b * ray->dir.y + - plane->c * ray->dir.z); + + kmScalar d = (plane->a * ray->dir.x + + plane->b * ray->dir.y + + plane->c * ray->dir.z); + + if(d == 0) + { + return KM_FALSE; + } + + kmScalar t = -(plane->a * ray->start.x + + plane->b * ray->start.y + + plane->c * ray->start.z + plane->d) / d; if(t < 0) {