commit 6efcf48cae604accc818d93c54c2ad1ccc54bc16
parent f8251cd039c94ebddbab1fe78d615476337ce546
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date: Tue, 20 Feb 2018 10:45:03 +0100
Add missing code on by-enclosure triangle global id.
And some associated test code.
Diffstat:
2 files changed, 18 insertions(+), 7 deletions(-)
diff --git a/src/senc_scene_analyze.c b/src/senc_scene_analyze.c
@@ -1028,6 +1028,7 @@ build_result
}
}
FOR_EACH(i, 0, 2) trg.medium[i] = trg_in->medium[i];
+ trg.global_id = trg_in->global_id;
if(side_membership[t] & FLAG_FRONT) {
++enc->header.triangle_count;
OK(darray_triangle_in_push_back(&enc->sides, &trg));
@@ -1054,6 +1055,7 @@ build_result
trg.vertice_id[2-i] = *id; /* Known vertex */
}
FOR_EACH(i, 0, 2) trg.medium[1-i] = trg_in->medium[i];
+ trg.global_id = trg_in->global_id;
OK(darray_triangle_in_push_back(&enc->sides, &trg));
ASSERT(triangles_enc[t].enclosure[SIDE_BACK] == ENCLOSURE_NULL__);
triangles_enc[t].enclosure[SIDE_BACK] = e;
diff --git a/src/test_senc_enclosure.c b/src/test_senc_enclosure.c
@@ -41,7 +41,7 @@ main(int argc, char** argv)
unsigned gid;
double vrtx[3];
struct context ctx;
- unsigned i, n, count;
+ unsigned i, n, t, ecount;
(void) argc, (void) argv;
CHK(mem_init_proxy_allocator(&allocator, &mem_default_allocator) == RES_OK);
@@ -75,8 +75,8 @@ main(int argc, char** argv)
CHK(senc_scene_analyze(scn, &desc) == RES_OK);
- CHK(senc_descriptor_get_enclosure_count(desc, &count) == RES_OK);
- CHK(count == 2);
+ CHK(senc_descriptor_get_enclosure_count(desc, &ecount) == RES_OK);
+ CHK(ecount == 2);
CHK(senc_descriptor_get_enclosure(desc, 0, &enclosure) == RES_OK);
CHK(senc_enclosure_ref_get(NULL) == RES_BAD_ARG);
@@ -136,7 +136,7 @@ main(int argc, char** argv)
CHK(senc_enclosure_ref_put(enclosure) == RES_OK);
- FOR_EACH(i, 0, count) {
+ FOR_EACH(i, 0, ecount) {
CHK(senc_descriptor_get_enclosure(desc, i, &enclosure) == RES_OK);
CHK(senc_enclosure_get_header(NULL, &header) == RES_BAD_ARG);
@@ -151,6 +151,11 @@ main(int argc, char** argv)
CHK(header->vertices_count == box_nvertices);
CHK(header->is_infinite == (i == 0));
+ FOR_EACH(t, 0, header->triangle_count) {
+ CHK(senc_enclosure_get_triangle_global_id(enclosure, t, &gid) == RES_OK);
+ CHK(gid == t);
+ }
+
CHK(senc_enclosure_ref_put(enclosure) == RES_OK);
}
@@ -188,8 +193,8 @@ main(int argc, char** argv)
CHK(senc_scene_analyze(scn, &desc) == RES_OK);
- CHK(senc_descriptor_get_enclosure_count(desc, &count) == RES_OK);
- CHK(count == 1);
+ CHK(senc_descriptor_get_enclosure_count(desc, &ecount) == RES_OK);
+ CHK(ecount == 1);
dump_enclosure(desc, 0, "test_enclosure_hole.obj");
@@ -207,8 +212,12 @@ main(int argc, char** argv)
CHK(header->vertices_count == box_nvertices);
CHK(header->is_infinite == 1);
+ FOR_EACH(t, 0, header->triangle_count) {
+ CHK(senc_enclosure_get_triangle_global_id(enclosure, t, &gid) == RES_OK);
+ CHK(gid == (t % header->unique_triangle_count));
+ }
+
FOR_EACH(n, 0, header->unique_triangle_count) {
- unsigned indices[2][3];
/* Read 2 consecutive triangles in the enclosure */
FOR_EACH(i, 0, 2) /* Triangle n VS 2n */
CHK(senc_enclosure_get_triangle(enclosure,