solstice-solver

Solver library of the solstice app
git clone git://git.meso-star.com/solstice-solver.git
Log | Files | Refs | README | LICENSE

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:
Msrc/ssol_shape.c | 8++++----
Msrc/ssol_solver.c | 2+-
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; }