ray¶
Header: cglm/ray.h
This is for collision-checks used by ray-tracers and the like.
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
returns false if there is no intersection if true:
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 ( returns false )
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