# rayο

This is for collision-checks used by ray-tracers and the like.

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

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