commit eacc4ca0fa0af0d658218960a65cc5a9ca5f88d2
parent c6378977ea910ddbf98ad871937038f49c60294b
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date: Tue, 13 Feb 2018 12:45:37 +0100
Add by-triangle mediums in tests.
Diffstat:
7 files changed, 45 insertions(+), 38 deletions(-)
diff --git a/src/test_senc_cube_behind_cube.c b/src/test_senc_cube_behind_cube.c
@@ -41,8 +41,8 @@ main(int argc, char** argv)
ctx.reverse_vrtx = 0;
ctx.reverse_med = 0;
d3(ctx.offset, 0, 0, 0);
- ctx.front_medium = 0;
- ctx.back_medium = 1;
+ ctx.front_mediums = medium0;
+ ctx.back_mediums = medium1;
/* First cube */
CHK(senc_scene_add_geometry(scn, box_ntriangles, get_indices, get_mediums,
@@ -62,8 +62,8 @@ main(int argc, char** argv)
/* Even further in +Z, even bigger */
d3(ctx.offset, -3, -3, 30);
ctx.scale = 7;
- ctx.front_medium = 1;
- ctx.back_medium = 0;
+ ctx.front_mediums = medium1;
+ ctx.back_mediums = medium0;
/* Third cube */
CHK(senc_scene_add_geometry(scn, box_ntriangles, get_indices, get_mediums,
diff --git a/src/test_senc_cube_in_cube.c b/src/test_senc_cube_in_cube.c
@@ -42,9 +42,9 @@ main(int argc, char** argv)
ctx.reverse_med = 0;
d3(ctx.offset, 0, 0, 0);
/* Smallest cube exterior is medium 0 */
- ctx.front_medium = 0;
+ ctx.front_mediums = medium0;
/* Smallest cube interior is medium 1 */
- ctx.back_medium = 1;
+ ctx.back_mediums = medium1;
/* First cube */
CHK(senc_scene_add_geometry(scn, box_ntriangles, get_indices, get_mediums,
@@ -67,9 +67,9 @@ main(int argc, char** argv)
ctx.reverse_vrtx = 1;
ctx.reverse_med = 1;
/* Biggest cube exterior is medium 1 */
- ctx.front_medium = 1;
+ ctx.front_mediums = medium1;
/* Biggest cube interior is medium 0 */
- ctx.back_medium = 0; /* mismatch with cube 2 */
+ ctx.back_mediums = medium0; /* mismatch with cube 2 */
/* Third cube */
CHK(senc_scene_add_geometry(scn, box_ntriangles, get_indices, get_mediums,
diff --git a/src/test_senc_descriptor.c b/src/test_senc_descriptor.c
@@ -50,8 +50,8 @@ main(int argc, char** argv)
ctx.reverse_vrtx = 0;
ctx.reverse_med = 0;
d3(ctx.offset, 0, 0, 0);
- ctx.front_medium = 0;
- ctx.back_medium = 1;
+ ctx.front_mediums = medium0;
+ ctx.back_mediums = medium1;
CHK(senc_scene_add_geometry(scn, box_ntriangles, get_indices, get_mediums,
box_nvertices, get_position, &ctx) == RES_OK);
@@ -109,8 +109,8 @@ main(int argc, char** argv)
CHK(senc_descriptor_get_global_mediums(NULL, box_nvertices, mediums) == RES_BAD_ARG);
CHK(senc_descriptor_get_global_mediums(desc, 0, NULL) == RES_BAD_ARG);
CHK(senc_descriptor_get_global_mediums(desc, 0, mediums) == RES_OK);
- CHK(mediums[0] == ctx.front_medium
- && mediums[1] == ctx.back_medium);
+ CHK(mediums[0] == ctx.front_mediums[0]
+ && mediums[1] == ctx.back_mediums[1]);
CHK(senc_descriptor_get_global_enclosures(NULL, 0, enclosures) == RES_BAD_ARG);
CHK(senc_descriptor_get_global_enclosures(NULL, box_nvertices, enclosures) == RES_BAD_ARG);
@@ -137,8 +137,8 @@ main(int argc, char** argv)
/* Add invalid duplicate geometry */
CHK(senc_descriptor_ref_put(desc) == RES_OK);
desc = NULL;
- ctx.front_medium = 1;
- ctx.back_medium = 0;
+ ctx.front_mediums = medium1;
+ ctx.back_mediums = medium0;
CHK(senc_scene_add_geometry(scn, box_ntriangles, get_indices, get_mediums,
box_nvertices, get_position, &ctx) == RES_BAD_ARG);
diff --git a/src/test_senc_enclosure.c b/src/test_senc_enclosure.c
@@ -62,8 +62,8 @@ main(int argc, char** argv)
ctx.reverse_vrtx = 0;
ctx.reverse_med = 0;
d3(ctx.offset, 0, 0, 0);
- ctx.front_medium = 0;
- ctx.back_medium = 1;
+ ctx.front_mediums = medium0;
+ ctx.back_mediums = medium1;
CHK(senc_scene_add_geometry(scn, box_ntriangles, get_indices, get_mediums,
box_nvertices, get_position, &ctx) == RES_OK);
@@ -118,8 +118,8 @@ main(int argc, char** argv)
ctx.indices = box_indices;
ctx.scale = 1;
d3(ctx.offset, 0, 0, 0);
- ctx.front_medium = 0;
- ctx.back_medium = 0;
+ ctx.front_mediums = medium0;
+ ctx.back_mediums = medium0;
CHK(senc_scene_add_geometry(scn, box_ntriangles - 1, get_indices, get_mediums,
box_nvertices, get_position, &ctx) == RES_OK);
diff --git a/src/test_senc_sample_enclosure.c b/src/test_senc_sample_enclosure.c
@@ -67,8 +67,8 @@ main(int argc, char** argv)
ctx.reverse_vrtx = 0;
ctx.reverse_med = 0;
d3(ctx.offset, 0, 0, 0);
- ctx.front_medium = 0;
- ctx.back_medium = 0;
+ ctx.front_mediums = medium0;
+ ctx.back_mediums = medium0;
CHK(senc_scene_add_geometry(scn, box_ntriangles - 1, get_indices, get_mediums,
box_nvertices, get_position, &ctx) == RES_OK);
diff --git a/src/test_senc_scene.c b/src/test_senc_scene.c
@@ -52,8 +52,8 @@ main(int argc, char** argv)
ctx.reverse_vrtx = 0;
ctx.reverse_med = 0;
d3(ctx.offset, 0, 0, 0);
- ctx.front_medium = 0;
- ctx.back_medium = 1;
+ ctx.front_mediums = medium0;
+ ctx.back_mediums = medium1;
CHK(senc_scene_add_geometry(NULL, box_ntriangles, get_indices, get_mediums,
box_nvertices, get_position, &ctx) == RES_BAD_ARG);
@@ -82,34 +82,34 @@ main(int argc, char** argv)
CHK(senc_scene_ref_put(scn) == RES_OK);
/* Invalid medium ID */
- ctx.back_medium = 12;
+ ctx.back_mediums = medium1_12;
CHK(senc_scene_add_geometry(scn, box_ntriangles, get_indices, get_mediums,
box_nvertices, get_position, &ctx) == RES_BAD_ARG);
- ctx.back_medium = 1;
+ ctx.back_mediums = medium1;
/* Invalid vertex ID */
CHK(senc_scene_add_geometry(scn, box_ntriangles, get_indices, get_mediums,
box_nvertices - 1, get_position, &ctx) == RES_BAD_ARG);
- /* Incoherent medium on duplicate triangle */
- ctx.back_medium = 3;
+ /* Incoherent medium on a duplicate triangle */
+ ctx.back_mediums = medium1_3;
CHK(senc_scene_add_geometry(scn, box_ntriangles, get_indices, get_mediums,
box_nvertices, get_position, &ctx) == RES_BAD_ARG);
/* It is OK dd geometry after a failed add */
- ctx.back_medium = 1;
+ ctx.back_mediums = medium1;
CHK(senc_scene_add_geometry(scn, box_ntriangles, get_indices, get_mediums,
box_nvertices, get_position, &ctx) == RES_OK);
/* Coherent medium on duplicate triangle */
- ctx.back_medium = 1;
+ ctx.back_mediums = medium1;
CHK(senc_scene_add_geometry(scn, box_ntriangles, get_indices, get_mediums,
box_nvertices, get_position, &ctx) == RES_OK);
/* Coherent medium on duplicate triangle V2 */
ctx.reverse_med = 1;
- ctx.front_medium = 1;
- ctx.back_medium = 0;
+ ctx.front_mediums = medium1;
+ ctx.back_mediums = medium0;
CHK(senc_scene_add_geometry(scn, box_ntriangles, get_indices, get_mediums,
box_nvertices, get_position, &ctx) == RES_OK);
diff --git a/src/test_senc_utils.h b/src/test_senc_utils.h
@@ -37,9 +37,9 @@ static const unsigned box_nvertices = sizeof(box_vertices) / sizeof(double[3]);
/* The following array lists the indices toward the 3D vertices of each
* triangle.
* ,6---,7 ,6----7
- * ,' | ,'/| ,' | \ |
- * 2----3' / | 2', | \ |
- * |', | / ,5 | ',4---,5
+ * ,' | ,'/| ,' | \ | Y Z
+ * 2----3' / | 2', | \ | | ,'
+ * |', | / ,5 | ',4---,5 0----X
* | ',|/,' | ,' | ,'
* 0----1' 0----1'
* Front, right Back, left and
@@ -58,13 +58,21 @@ struct context {
const double* positions;
const unsigned* indices;
struct cube_specifics* specifics;
- unsigned front_medium;
- unsigned back_medium;
+ const unsigned* front_mediums;
+ const unsigned* back_mediums;
double offset[3];
double scale;
char reverse_vrtx, reverse_med;
};
+static const unsigned medium0[12] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
+static const unsigned medium1[12] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
+static const unsigned medium2[12] = { 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 };
+static const unsigned medium1_3[12] = { 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1 };
+static const unsigned medium1_12[12] = { 1, 1, 1, 1, 1, 1, 1, 1, 12, 1, 1, 1 };
+static const unsigned medium1_back0[12] = { 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1 };
+static const unsigned medium1_front0[12] = { 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };
+
static void
get_indices(const unsigned itri, unsigned ids[3], void* context)
{
@@ -90,9 +98,8 @@ get_mediums(const unsigned itri, unsigned medium[2], void* context)
{
struct context* ctx = context;
ASSERT(medium && ctx);
- (void) itri;
- medium[ctx->reverse_med ? 1 : 0] = ctx->front_medium;
- medium[ctx->reverse_med ? 0 : 1] = ctx->back_medium;
+ medium[ctx->reverse_med ? 1 : 0] = ctx->front_mediums[itri];
+ medium[ctx->reverse_med ? 0 : 1] = ctx->back_mediums[itri];
}
/*******************************************************************************