From 99076be6bb8c8d3e5d2bb44835ed252f4a832091 Mon Sep 17 00:00:00 2001 From: Uwila Date: Fri, 3 Apr 2020 12:56:50 +0200 Subject: [PATCH] Improve code style in ray.h - 2 spaces instead of 4, for indentation - Newline after return - Check if pointer is null --- include/cglm/ray.h | 49 +++++++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/include/cglm/ray.h b/include/cglm/ray.h index c2433cb..eac5140 100644 --- a/include/cglm/ray.h +++ b/include/cglm/ray.h @@ -30,37 +30,46 @@ CGLM_INLINE bool glm_ray_triangle(vec3 origin, vec3 direction, vec3 v0, vec3 v1, vec3 v2, float *d) { - const float epsilon = 0.000001; - vec3 edge1, edge2, p, t, q; - float det, inv_det, u, v; + vec3 edge1, edge2, p, t, q; + float det, inv_det, u, v, dist; + const float epsilon = 0.000001; - glm_vec3_sub(v1, v0, edge1); - glm_vec3_sub(v2, v0, edge2); + glm_vec3_sub(v1, v0, edge1); + glm_vec3_sub(v2, v0, edge2); - glm_vec3_cross(direction, edge2, p); + glm_vec3_cross(direction, edge2, p); - det = glm_vec3_dot(edge1, p); + det = glm_vec3_dot(edge1, p); - if (det > -epsilon && det < epsilon) - return 0; - inv_det = 1.0 / det; + if (det > -epsilon && det < epsilon) + return 0; - glm_vec3_sub(origin, v0, t); + inv_det = 1.0 / det; - u = inv_det * glm_vec3_dot(t, p); + glm_vec3_sub(origin, v0, t); - if (u < 0.0 || u > 1.0) - return 0; + u = inv_det * glm_vec3_dot(t, p); - glm_vec3_cross(t, edge1, q); + if (u < 0.0 || u > 1.0) + return 0; - v = inv_det * glm_vec3_dot(direction, q); + glm_vec3_cross(t, edge1, q); - if (v < 0.0 || u + v > 1.0) - return 0; + v = inv_det * glm_vec3_dot(direction, q); - *d = inv_det * glm_vec3_dot(edge2, q); - return *d > epsilon; + if (v < 0.0 || u + v > 1.0) + return 0; + + dist = inv_det * glm_vec3_dot(edge2, q); + if (dist > epsilon) { + if (d != NULL) { + *d = dist; + } + + return 1; + } + + return 0; } #endif