commit 70ea68b2d4f2f65069d117dee16114aa4064b8a2
parent 80854d021aca1f10e21c7d397879e72cd52af39d
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date: Wed, 14 Sep 2016 09:54:33 +0200
BugFix on quadrics omputations (position and normal)
Diffstat:
2 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/src/ssol_shape.c b/src/ssol_shape.c
@@ -708,13 +708,13 @@ punched_shape_set_z_local(const struct ssol_shape* shape, double pt[3]) {
}
case SSOL_QUADRIC_PARABOLIC_CYLINDER: {
const struct ssol_quadric_parabolic_cylinder* quad
- = (struct ssol_quadric_parabolic_cylinder*)&shape->quadric;
+ = (struct ssol_quadric_parabolic_cylinder*)&shape->quadric.data;
pt[2] = (pt[1] * pt[1]) / (4.0 * quad->focal);
break;
}
case SSOL_QUADRIC_PARABOL: {
const struct ssol_quadric_parabol* quad
- = (struct ssol_quadric_parabol*)&shape->quadric;
+ = (struct ssol_quadric_parabol*)&shape->quadric.data;
pt[2] = (pt[0] * pt[0] + pt[1] * pt[1]) / (4.0 * quad->focal);
break;
}
@@ -737,13 +737,13 @@ punched_shape_set_normal_local
}
case SSOL_QUADRIC_PARABOLIC_CYLINDER: {
const struct ssol_quadric_parabolic_cylinder* quad
- = (struct ssol_quadric_parabolic_cylinder*)&shape->quadric;
+ = (struct ssol_quadric_parabolic_cylinder*)&shape->quadric.data;
quadric_parabolic_cylinder_gradient_local(quad, pt, normal);
break;
}
case SSOL_QUADRIC_PARABOL: {
const struct ssol_quadric_parabol* quad
- = (struct ssol_quadric_parabol*)&shape->quadric;
+ = (struct ssol_quadric_parabol*)&shape->quadric.data;
quadric_parabol_gradient_local(quad, pt, normal);
break;
}
diff --git a/src/ssol_solver.c b/src/ssol_solver.c
@@ -412,7 +412,6 @@ sample_point_on_primary_mirror(struct realisation* rs)
S3D(primitive_get_attrib(&sampl_prim, S3D_GEOMETRY_NORMAL, start->uv, &attrib));
CHECK(attrib.type, S3D_FLOAT3);
d3_set_f3(start->normal, attrib.value);
- d3_normalize(start->normal, start->normal);
break;
}
case SHAPE_PUNCHED: {
@@ -438,6 +437,7 @@ sample_point_on_primary_mirror(struct realisation* rs)
}
/* TODO: transform everything to world coordinate */
+ d3_normalize(start->normal, start->normal);
/* will be defined later, depending on wich side sees the sun */
start->material = NULL;
}