star-enclosures-3d

Extract enclosures from 3D geometry
git clone git://git.meso-star.fr/star-enclosures-3d.git
Log | Files | Refs | README | LICENSE

commit f8844125ffaa54e3dd7fd4fd7de098b09c5afd57
parent 9b2a8dc022bb8350f1f4f319aae304d9ec5b5962
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date:   Thu, 12 Apr 2018 14:56:18 +0200

API change: get enclosure header by copy (was by ptr).

Diffstat:
Msrc/senc.h | 4++--
Msrc/senc_enclosure.c | 4++--
Msrc/test_senc_enclosure.c | 36++++++++++++++++++------------------
Msrc/test_senc_many_enclosures.c | 6+++---
Msrc/test_senc_many_triangles.c | 4++--
Msrc/test_senc_sample_enclosure.c | 6+++---
Msrc/test_senc_utils.h | 6+++---
7 files changed, 33 insertions(+), 33 deletions(-)

diff --git a/src/senc.h b/src/senc.h @@ -228,13 +228,13 @@ senc_descriptor_ref_put * case the 2 occurences of the triangle have reversed vertices order and * unique_triangle_count and triangle_count differ. * By-index API accesses of triangles (or properties) visit unique triangles - * for indexes in the [0 unique_triangle_count[ and back-faces of the + * for indexes in the [0 unique_triangle_count[ range and back-faces of the * doubly-listed triangles in the [unique_triangle_count triangle_count[ range. ******************************************************************************/ SENC_API res_T senc_enclosure_get_header (const struct senc_enclosure* enclosure, - const struct enclosure_header** header); + struct enclosure_header* header); SENC_API res_T senc_enclosure_get_triangle diff --git a/src/senc_enclosure.c b/src/senc_enclosure.c @@ -66,10 +66,10 @@ enclosure_create res_T senc_enclosure_get_header (const struct senc_enclosure* enclosure, - const struct enclosure_header** header) + struct enclosure_header* header) { if(!enclosure || !header) return RES_BAD_ARG; - *header = &enclosure->data->header; + *header = enclosure->data->header; return RES_OK; } diff --git a/src/test_senc_enclosure.c b/src/test_senc_enclosure.c @@ -31,7 +31,7 @@ main(int argc, char** argv) struct senc_scene* scn = NULL; struct senc_enclosure* enclosures[2] = { NULL, NULL }; struct senc_enclosure* enclosure; - const struct enclosure_header* header; + struct enclosure_header header; struct s3d_device* s3d = NULL; struct s3d_scene* s3d_scn = NULL; struct s3d_shape* s3d_shp = NULL; @@ -144,14 +144,14 @@ main(int argc, char** argv) CHK(senc_enclosure_get_header(NULL, NULL) == RES_BAD_ARG); CHK(senc_enclosure_get_header(enclosure, &header) == RES_OK); - CHK(header->enclosure_id == i); - CHK(header->enclosed_medium == (i == 0 ? 0U : 1U)); - CHK(header->triangle_count == box_ntriangles); - CHK(header->unique_triangle_count == box_ntriangles); - CHK(header->vertices_count == box_nvertices); - CHK(header->is_infinite == (i == 0)); + CHK(header.enclosure_id == i); + CHK(header.enclosed_medium == (i == 0 ? 0U : 1U)); + CHK(header.triangle_count == box_ntriangles); + CHK(header.unique_triangle_count == box_ntriangles); + CHK(header.vertices_count == box_nvertices); + CHK(header.is_infinite == (i == 0)); - FOR_EACH(t, 0, header->triangle_count) { + FOR_EACH(t, 0, header.triangle_count) { CHK(senc_enclosure_get_triangle_global_id(enclosure, t, &gid) == RES_OK); CHK(gid == t); } @@ -205,26 +205,26 @@ main(int argc, char** argv) CHK(senc_enclosure_get_header(NULL, NULL) == RES_BAD_ARG); CHK(senc_enclosure_get_header(enclosure, &header) == RES_OK); - CHK(header->enclosure_id == 0); - CHK(header->enclosed_medium == 0); - CHK(header->triangle_count == 2 * header->unique_triangle_count); - CHK(header->unique_triangle_count == box_ntriangles - 1); - CHK(header->vertices_count == box_nvertices); - CHK(header->is_infinite == 1); + CHK(header.enclosure_id == 0); + CHK(header.enclosed_medium == 0); + CHK(header.triangle_count == 2 * header.unique_triangle_count); + CHK(header.unique_triangle_count == box_ntriangles - 1); + CHK(header.vertices_count == box_nvertices); + CHK(header.is_infinite == 1); - FOR_EACH(t, 0, header->unique_triangle_count) { + FOR_EACH(t, 0, header.unique_triangle_count) { /* The first unique_triangle_count triangles of an enclosure * are unique triangles */ CHK(senc_enclosure_get_triangle_global_id(enclosure, t, &gid) == RES_OK); CHK(gid == t); } - FOR_EACH(n, 0, header->unique_triangle_count) { + FOR_EACH(n, 0, header.unique_triangle_count) { /* Put geometry in a 3D view */ CHK(s3d_shape_create_mesh(s3d, &s3d_shp) == RES_OK); - CHK(s3d_mesh_setup_indexed_vertices(s3d_shp, header->triangle_count, - senc_enclosure_get_triangle__, header->vertices_count, &s3d_attribs, + CHK(s3d_mesh_setup_indexed_vertices(s3d_shp, header.triangle_count, + senc_enclosure_get_triangle__, header.vertices_count, &s3d_attribs, 1, enclosure) == RES_OK); diff --git a/src/test_senc_many_enclosures.c b/src/test_senc_many_enclosures.c @@ -145,13 +145,13 @@ main(int argc, char** argv) FOR_EACH(e, 0, count) { struct senc_enclosure* enclosure; - const struct enclosure_header* header; + struct enclosure_header header; CHK(senc_descriptor_get_enclosure(desc, e, &enclosure) == RES_OK); CHK(senc_enclosure_get_header(enclosure, &header) == RES_OK); - CHK(header->triangle_count == + CHK(header.triangle_count == (e == 0 /* Outermost enclosure: NB_CYL_1*NB_CYL_1 cylinders */ ? NB_CYL_1 * NB_CYL_1 * cyl_trg_count - : (header->enclosed_medium == 0 + : (header.enclosed_medium == 0 ? cyl_trg_count /* Innermost enclosures: 1 cylinder */ : 2 * cyl_trg_count))); /* Other enclosures: 2 cylinders */ CHK(senc_enclosure_ref_put(enclosure) == RES_OK); diff --git a/src/test_senc_many_triangles.c b/src/test_senc_many_triangles.c @@ -129,10 +129,10 @@ main(int argc, char** argv) CHK(count == 1 + NB_CYL); FOR_EACH(i, 0, count) { struct senc_enclosure* enclosure; - const struct enclosure_header* header; + struct enclosure_header header; CHK(senc_descriptor_get_enclosure(desc, i, &enclosure) == RES_OK); CHK(senc_enclosure_get_header(enclosure, &header) == RES_OK); - CHK(header->triangle_count == + CHK(header.triangle_count == i ? cyl_trg_count : NB_CYL * cyl_trg_count); CHK(senc_enclosure_ref_put(enclosure) == RES_OK); } diff --git a/src/test_senc_sample_enclosure.c b/src/test_senc_sample_enclosure.c @@ -31,7 +31,7 @@ main(int argc, char** argv) struct senc_device* dev = NULL; struct senc_scene* scn = NULL; struct senc_enclosure* enclosure = NULL; - const struct enclosure_header* header = NULL; + struct enclosure_header header; struct s3d_device* s3d = NULL; struct s3d_scene* s3d_scn = NULL; struct s3d_scene_view* s3d_view = NULL; @@ -80,8 +80,8 @@ main(int argc, char** argv) /* Put enclosure in a 3D view... */ S3D(shape_create_mesh(s3d, &s3d_shp)); - S3D(mesh_setup_indexed_vertices(s3d_shp, header->triangle_count, - senc_enclosure_get_triangle__, header->vertices_count, &vrtx_get, 1, + S3D(mesh_setup_indexed_vertices(s3d_shp, header.triangle_count, + senc_enclosure_get_triangle__, header.vertices_count, &vrtx_get, 1, enclosure)); S3D(scene_attach_shape(s3d_scn, s3d_shp)); diff --git a/src/test_senc_utils.h b/src/test_senc_utils.h @@ -155,7 +155,7 @@ dump_enclosure const char* name) { struct senc_enclosure* enclosure; - const struct enclosure_header* header; + struct enclosure_header header; FILE* stream; unsigned count, i; @@ -168,12 +168,12 @@ dump_enclosure stream = fopen(name, "w"); CHK(stream); - FOR_EACH(i, 0, header->vertices_count) { + FOR_EACH(i, 0, header.vertices_count) { double tmp[3]; CHK(senc_enclosure_get_vertex(enclosure, i, tmp) == RES_OK); fprintf(stream, "v %g %g %g\n", SPLIT3(tmp)); } - FOR_EACH(i, 0, header->triangle_count) { + FOR_EACH(i, 0, header.triangle_count) { unsigned indices[3]; CHK(senc_enclosure_get_triangle(enclosure, i, indices) == RES_OK); fprintf(stream, "f %lu %lu %lu\n", (unsigned long)(1+indices[0]),