rayο
Header: cglm/ray.h
This is for collision-checks used by ray-tracers and the like.
Table of contents (click to go):ο
Functions:
Functions documentationο
-
bool glm_ray_triangle(vec3 origin, vec3 direction, vec3 v0, vec3 v1, vec3 v2, float *d)ο
MΓΆllerβTrumbore ray-triangle intersection algorithm
- Parameters:
- [in] origin origin of ray[in] direction direction of ray[in] v0 first vertex of triangle[in] v1 second vertex of triangle[in] v2 third vertex of triangle[in, out] d float pointer to save distance to intersection[out] intersection whether there is intersection
-
bool glm_ray_sphere(vec3 origin, vec3 dir, vec4 s, float *__restrict t1, float *__restrict t2)ο
ray sphere intersection
t1 > 0, t2 > 0: ray intersects the sphere at t1 and t2 both ahead of the origin
t1 < 0, t2 > 0: ray starts inside the sphere, exits at t2
t1 < 0, t2 < 0: no intersection ahead of the ray
the caller can check if the intersection points (t1 and t2) fall within a specific range (for example, tmin < t1, t2 < tmax) to determine if the intersections are within a desired segment of the ray
- Parameters:
- [in] origin ray origin[in] dir normalized ray direction[in] s sphere [center.x, center.y, center.z, radii][out] t1 near point1 (closer to origin)[out] t2 far point2 (farther from origin)
- Return:
- whether there is intersection
-
bool glm_ray_at(vec3 orig, vec3 dir, float t, vec3 point)ο
point using t by π(π‘)=π+π‘π
- Parameters:
- [in] origin ray origin[in] dir ray direction[out] t parameter[out] point point at t
- Return:
- point at t