stardis-solver

Solve coupled heat transfers
git clone git://git.meso-star.fr/stardis-solver.git
Log | Files | Refs | README | LICENSE

commit 5a7af779a3a624a87f6abc650e6ce1d758df3379
parent 926f3f141f8358baa890e34b70b6d37ed34c87c0
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Fri,  6 Apr 2018 16:20:42 +0200

Add the sdis_scene_get_boundary_position function

Diffstat:
Msrc/sdis.h | 7+++++++
Msrc/sdis_scene.c | 31+++++++++++++++++++++++++++++++
2 files changed, 38 insertions(+), 0 deletions(-)

diff --git a/src/sdis.h b/src/sdis.h @@ -400,6 +400,13 @@ sdis_scene_get_aabb double lower[3], double upper[3]); +SDIS_API res_T +sdis_scene_get_boundary_position + (const struct sdis_scene* scn, + const size_t iprim, /* Primitive index */ + const double uv[2], /* Parametric coordinate onto the pimitive */ + double pos[3]); /* World space position */ + /******************************************************************************* * An estimator stores the state of a simulation ******************************************************************************/ diff --git a/src/sdis_scene.c b/src/sdis_scene.c @@ -608,6 +608,37 @@ sdis_scene_get_aabb return RES_OK; } +res_T +sdis_scene_get_boundary_position + (const struct sdis_scene* scn, + const size_t iprim, + const double uv[], + double pos[]) +{ + if(!scn || !uv || !pos) return RES_BAD_ARG; + if(iprim >= scene_get_primitives_count(scn)) return RES_BAD_ARG; + + if(scene_is_2d(scn)) { + struct s2d_primitive prim; + struct s2d_attrib attr; + float s = (float)uv[0]; + + S2D(scene_view_get_primitive(scn->s2d_view, (unsigned int)iprim, &prim)); + S2D(primitive_get_attrib(&prim, S2D_POSITION, s, &attr)); + d2_set_f2(pos, attr.value); + } else { + struct s3d_primitive prim; + struct s3d_attrib attr; + float st[2]; + + f2_set_d2(st, uv); + S3D(scene_view_get_primitive(scn->s3d_view, (unsigned int)iprim, &prim)); + S3D(primitive_get_attrib(&prim, S3D_POSITION, st, &attr)); + d3_set_f3(pos, attr.value); + } + return RES_OK; +} + /******************************************************************************* * Local miscellaneous function ******************************************************************************/