Ray utility. More...
Classes | |
struct | KzcRay |
Structure for ray. More... | |
Functions | |
KZ_INLINE void | kzcRaySet (const struct KzcVector3 origin, const struct KzcVector3 direction, struct KzcRay *out_ray) |
Constructs a ray from point and direction vector. More... | |
KANZI_API kzBool | kzcRaySphereIntersection (const struct KzcRay *ray, const struct KzcVector3 *spherePosition, const kzFloat sphereRadius, kzFloat *out_distance) |
Test intersection between ray and sphere and return distance. More... | |
KANZI_API kzBool | kzcRayBoundingBoxIntersection (const struct KzcRay *ray, const struct KzcVector3 *boundingBoxMinimum, const struct KzcVector3 *boundingBoxMaximum, const struct KzcMatrix4x4 *boxOrientation, kzFloat *out_distance, struct KzcVector3 *out_hitPoint) |
Test intersection between ray and bounding box. More... | |
KANZI_API kzBool | kzcRayBoundingBoxBackfaceIntersection (const struct KzcRay *ray, const struct KzcVector3 *boundingBoxMinimum, const struct KzcVector3 *boundingBoxMaximum, const struct KzcMatrix4x4 *boxOrientation, kzFloat *out_distance, struct KzcVector3 *out_hitPoint) |
Test intersection between ray and bounding box back faces. More... | |
KANZI_API kzBool | kzcRayCylinderIntersection (const struct KzcRay *ray, kzFloat cylinderRadius, kzFloat cylinderHeight, const struct KzcVector3 *cylinderAxis, const struct KzcMatrix4x4 *cylinderTransform, kzFloat *out_distance) |
Tests intersection between ray and cylinder aligned in the given unit-axis, ranging [-height/2, height/2]. More... | |
KANZI_API void | kzcRayTransform (struct KzcRay *ray, const struct KzcMatrix4x4 *transform) |
Transform a ray by a 4x4 matrix. More... | |
Ray utility.
Copyright 2008-2017 by Rightware. All rights reserved.
KZ_INLINE void kzcRaySet | ( | const struct KzcVector3 | origin, |
const struct KzcVector3 | direction, | ||
struct KzcRay * | out_ray | ||
) |
Constructs a ray from point and direction vector.
Normalizes the direction vector
KANZI_API kzBool kzcRaySphereIntersection | ( | const struct KzcRay * | ray, |
const struct KzcVector3 * | spherePosition, | ||
const kzFloat | sphereRadius, | ||
kzFloat * | out_distance | ||
) |
Test intersection between ray and sphere and return distance.
KANZI_API kzBool kzcRayBoundingBoxIntersection | ( | const struct KzcRay * | ray, |
const struct KzcVector3 * | boundingBoxMinimum, | ||
const struct KzcVector3 * | boundingBoxMaximum, | ||
const struct KzcMatrix4x4 * | boxOrientation, | ||
kzFloat * | out_distance, | ||
struct KzcVector3 * | out_hitPoint | ||
) |
Test intersection between ray and bounding box.
KANZI_API kzBool kzcRayBoundingBoxBackfaceIntersection | ( | const struct KzcRay * | ray, |
const struct KzcVector3 * | boundingBoxMinimum, | ||
const struct KzcVector3 * | boundingBoxMaximum, | ||
const struct KzcMatrix4x4 * | boxOrientation, | ||
kzFloat * | out_distance, | ||
struct KzcVector3 * | out_hitPoint | ||
) |
Test intersection between ray and bounding box back faces.
KANZI_API kzBool kzcRayCylinderIntersection | ( | const struct KzcRay * | ray, |
kzFloat | cylinderRadius, | ||
kzFloat | cylinderHeight, | ||
const struct KzcVector3 * | cylinderAxis, | ||
const struct KzcMatrix4x4 * | cylinderTransform, | ||
kzFloat * | out_distance | ||
) |
Tests intersection between ray and cylinder aligned in the given unit-axis, ranging [-height/2, height/2].
The cylinder is first transformed with the given transformation matrix.
KANZI_API void kzcRayTransform | ( | struct KzcRay * | ray, |
const struct KzcMatrix4x4 * | transform | ||
) |
Transform a ray by a 4x4 matrix.