commit 893bbf705f95b2e060bd90fcc63a2db963530601
parent 8ffa05559455d15853615a71e92388a902571add
Author: Vincent Forest <vincent.forest@meso-star.com>
Date: Thu, 5 Jan 2017 10:21:14 +0100
Fix the punched_shape_<trace_ray|project_point> functions
Fix the transformation from world space to local punched surface space.
Diffstat:
1 file changed, 6 insertions(+), 14 deletions(-)
diff --git a/src/ssol_shape.c b/src/ssol_shape.c
@@ -803,13 +803,9 @@ punched_shape_project_point
ASSERT(shape->type == SHAPE_PUNCHED);
/* Compute world<->quadric space transformations */
- if(d33_is_identity(shape->quadric.transform)) {
- d33_set(R, transform);
- d3_set (T, transform+9);
- } else {
- d33_muld33(R, shape->quadric.transform, transform);
- d33_muld3 (T, shape->quadric.transform, transform+9);
- }
+ d33_muld33(R, shape->quadric.transform, transform);
+ d33_muld3 (T, shape->quadric.transform, transform+9);
+ d3_add(T, shape->quadric.transform + 9, T);
d33_invtrans(R_invtrans, R);
d3_minus(T_inv, T);
@@ -853,13 +849,9 @@ punched_shape_trace_ray
ASSERT(shape->type == SHAPE_PUNCHED);
/* Compute world<->quadric space transformations */
- if(d33_is_identity(shape->quadric.transform)) {
- d33_set(R, transform);
- d3_set (T, transform+9);
- } else {
- d33_muld33(R, shape->quadric.transform, transform);
- d33_muld3 (T, shape->quadric.transform, transform+9);
- }
+ d33_muld33(R, shape->quadric.transform, transform);
+ d33_muld3 (T, shape->quadric.transform, transform+9);
+ d3_add(T, shape->quadric.transform + 9, T);
d33_invtrans(R_invtrans, R);
d3_minus(T_inv, T);