star-enclosures-2d

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

commit 702181ede1b14fdf97e3755a31af4c97cec5e94e
parent 5691d33aa902c7e8ffbada35d0529c02ae84eb96
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date:   Wed, 18 Apr 2018 18:25:34 +0200

Use a distorded square in tests when possible.

 This causes some tests to fail and reveal a bug!

Diffstat:
Msrc/test_senc2d_descriptor.c | 36++++++++++++++++++------------------
Msrc/test_senc2d_enclosure.c | 61++++++++++++++++++++++++++++++-------------------------------
Msrc/test_senc2d_sample_enclosure.c | 8++++----
Msrc/test_senc2d_scene.c | 72++++++++++++++++++++++++++++++++++++------------------------------------
Msrc/test_senc2d_square_behind_square.c | 16++++++++--------
Msrc/test_senc2d_square_in_square.c | 16++++++++--------
Msrc/test_senc2d_square_on_square.c | 19++++++++++---------
Msrc/test_senc2d_utils.h | 18++++++++++++++----
8 files changed, 128 insertions(+), 118 deletions(-)

diff --git a/src/test_senc2d_descriptor.c b/src/test_senc2d_descriptor.c @@ -44,8 +44,8 @@ main(int argc, char** argv) CHK(senc2d_scene_create(dev, &scn) == RES_OK); /* A 2D square */ - ctx.positions = square_vertices; - ctx.indices = square_indices; + ctx.positions = box_vertices; + ctx.indices = box_indices; ctx.scale = 1; ctx.reverse_vrtx = 0; ctx.reverse_med = 0; @@ -53,8 +53,8 @@ main(int argc, char** argv) ctx.front_media = medium0; ctx.back_media = medium1; - CHK(senc2d_scene_add_geometry(scn, square_nsegments, get_indices, get_media, NULL, - square_nvertices, get_position, &ctx) == RES_OK); + CHK(senc2d_scene_add_geometry(scn, nsegments, get_indices, get_media, NULL, + nvertices, get_position, &ctx) == RES_OK); CHK(senc2d_scene_analyze(scn, &desc) == RES_OK); @@ -112,30 +112,30 @@ main(int argc, char** argv) CHK(senc2d_descriptor_get_global_vertices_count(NULL, &count) == RES_BAD_ARG); CHK(senc2d_descriptor_get_global_vertices_count(desc, NULL) == RES_BAD_ARG); CHK(senc2d_descriptor_get_global_vertices_count(desc, &count) == RES_OK); - CHK(count == square_nvertices); + CHK(count == nvertices); CHK(senc2d_descriptor_get_global_segments_count(NULL, &count) == RES_BAD_ARG); CHK(senc2d_descriptor_get_global_segments_count(desc, NULL) == RES_BAD_ARG); CHK(senc2d_descriptor_get_global_segments_count(desc, &count) == RES_OK); - CHK(count == square_nsegments); + CHK(count == nsegments); CHK(senc2d_descriptor_get_global_segment(NULL, 0, indices) == RES_BAD_ARG); - CHK(senc2d_descriptor_get_global_segment(NULL, square_nsegments, indices) + CHK(senc2d_descriptor_get_global_segment(NULL, nsegments, indices) == RES_BAD_ARG); CHK(senc2d_descriptor_get_global_segment(desc, 0, NULL) == RES_BAD_ARG); CHK(senc2d_descriptor_get_global_segment(desc, 0, indices) == RES_OK); - CHK(indices[0] == square_indices[0] && indices[1] == square_indices[1]); + CHK(indices[0] == box_indices[0] && indices[1] == box_indices[1]); CHK(senc2d_descriptor_get_global_vertex(NULL, 0, coord) == RES_BAD_ARG); - CHK(senc2d_descriptor_get_global_vertex(NULL, square_nvertices, coord) + CHK(senc2d_descriptor_get_global_vertex(NULL, nvertices, coord) == RES_BAD_ARG); CHK(senc2d_descriptor_get_global_vertex(desc, 0, NULL) == RES_BAD_ARG); CHK(senc2d_descriptor_get_global_vertex(desc, 0, coord) == RES_OK); - CHK(coord[0] == square_vertices[0] && coord[1] == square_vertices[1]); + CHK(coord[0] == box_vertices[0] && coord[1] == box_vertices[1]); CHK(senc2d_descriptor_get_global_segment_media(NULL, 0, media) == RES_BAD_ARG); - CHK(senc2d_descriptor_get_global_segment_media(NULL, square_nvertices, media) + CHK(senc2d_descriptor_get_global_segment_media(NULL, nvertices, media) == RES_BAD_ARG); CHK(senc2d_descriptor_get_global_segment_media(desc, 0, NULL) == RES_BAD_ARG); @@ -145,7 +145,7 @@ main(int argc, char** argv) CHK(senc2d_descriptor_get_global_segment_enclosures( NULL, 0, enclosures) == RES_BAD_ARG); CHK(senc2d_descriptor_get_global_segment_enclosures( - NULL, square_nvertices, enclosures) == RES_BAD_ARG); + NULL, nvertices, enclosures) == RES_BAD_ARG); CHK(senc2d_descriptor_get_global_segment_enclosures(desc, 0, NULL) == RES_BAD_ARG); CHK(senc2d_descriptor_get_global_segment_enclosures(desc, 0, enclosures) @@ -155,25 +155,25 @@ main(int argc, char** argv) /* Add valid duplicate geometry */ CHK(senc2d_descriptor_ref_put(desc) == RES_OK); desc = NULL; - CHK(senc2d_scene_add_geometry(scn, square_nsegments, get_indices, get_media, - NULL, square_nvertices, get_position, &ctx) == RES_OK); + CHK(senc2d_scene_add_geometry(scn, nsegments, get_indices, get_media, + NULL, nvertices, get_position, &ctx) == RES_OK); CHK(senc2d_scene_analyze(scn, &desc) == RES_OK); CHK(senc2d_descriptor_get_global_vertices_count(desc, &count) == RES_OK); /* Duplicate vertices have been replaced */ - CHK(count == square_nvertices); + CHK(count == nvertices); CHK(senc2d_descriptor_get_global_segments_count(desc, &count) == RES_OK); /* Duplicate segments have been replaced */ - CHK(count == square_nsegments); + CHK(count == nsegments); /* Add invalid duplicate geometry */ CHK(senc2d_descriptor_ref_put(desc) == RES_OK); desc = NULL; ctx.front_media = medium1; ctx.back_media = medium0; - CHK(senc2d_scene_add_geometry(scn, square_nsegments, get_indices, get_media, NULL, - square_nvertices, get_position, &ctx) == RES_BAD_ARG); + CHK(senc2d_scene_add_geometry(scn, nsegments, get_indices, get_media, NULL, + nvertices, get_position, &ctx) == RES_BAD_ARG); CHK(senc2d_scene_ref_put(scn) == RES_OK); CHK(senc2d_device_ref_put(dev) == RES_OK); diff --git a/src/test_senc2d_enclosure.c b/src/test_senc2d_enclosure.c @@ -17,7 +17,6 @@ #include "senc2d_s2d_wrapper.h" #include "test_senc2d_utils.h" -#include <rsys/float2.h> #include <rsys/double2.h> #include <star/s2d.h> @@ -61,8 +60,8 @@ main(int argc, char** argv) /* A 2D square. * 2 enclosures (inside, outside) sharing the same segments, * but opposite sides */ - ctx.positions = square_vertices; - ctx.indices = square_indices; + ctx.positions = box_vertices; + ctx.indices = box_indices; ctx.scale = 1; ctx.reverse_vrtx = 0; ctx.reverse_med = 0; @@ -70,8 +69,8 @@ main(int argc, char** argv) ctx.front_media = medium0; ctx.back_media = medium1; - CHK(senc2d_scene_add_geometry(scn, square_nsegments, get_indices, get_media, - NULL, square_nvertices, get_position, &ctx) == RES_OK); + CHK(senc2d_scene_add_geometry(scn, nsegments, get_indices, get_media, + NULL, nvertices, get_position, &ctx) == RES_OK); CHK(senc2d_scene_analyze(scn, &desc) == RES_OK); @@ -85,52 +84,52 @@ main(int argc, char** argv) CHK(senc2d_enclosure_ref_put(enclosure) == RES_OK); CHK(senc2d_enclosure_get_segment(NULL, 0, indices[0]) == RES_BAD_ARG); - CHK(senc2d_enclosure_get_segment(enclosure, square_nsegments, indices[0]) + CHK(senc2d_enclosure_get_segment(enclosure, nsegments, indices[0]) == RES_BAD_ARG); CHK(senc2d_enclosure_get_segment(enclosure, 0, NULL) == RES_BAD_ARG); - CHK(senc2d_enclosure_get_segment(NULL, square_nsegments, indices[0]) + CHK(senc2d_enclosure_get_segment(NULL, nsegments, indices[0]) == RES_BAD_ARG); CHK(senc2d_enclosure_get_segment(NULL, 0, NULL) == RES_BAD_ARG); - CHK(senc2d_enclosure_get_segment(enclosure, square_nsegments, NULL) + CHK(senc2d_enclosure_get_segment(enclosure, nsegments, NULL) == RES_BAD_ARG); - CHK(senc2d_enclosure_get_segment(NULL, square_nsegments, NULL) == RES_BAD_ARG); + CHK(senc2d_enclosure_get_segment(NULL, nsegments, NULL) == RES_BAD_ARG); CHK(senc2d_enclosure_get_segment(enclosure, 0, indices[0]) == RES_OK); CHK(senc2d_enclosure_get_vertex(NULL, 0, vrtx) == RES_BAD_ARG); - CHK(senc2d_enclosure_get_vertex(enclosure, square_nvertices, vrtx) + CHK(senc2d_enclosure_get_vertex(enclosure, nvertices, vrtx) == RES_BAD_ARG); CHK(senc2d_enclosure_get_vertex(enclosure, 0, NULL) == RES_BAD_ARG); - CHK(senc2d_enclosure_get_vertex(NULL, square_nvertices, vrtx) == RES_BAD_ARG); + CHK(senc2d_enclosure_get_vertex(NULL, nvertices, vrtx) == RES_BAD_ARG); CHK(senc2d_enclosure_get_vertex(NULL, 0, NULL) == RES_BAD_ARG); - CHK(senc2d_enclosure_get_vertex(enclosure, square_nvertices, NULL) + CHK(senc2d_enclosure_get_vertex(enclosure, nvertices, NULL) == RES_BAD_ARG); - CHK(senc2d_enclosure_get_vertex(NULL, square_nvertices, NULL) == RES_BAD_ARG); + CHK(senc2d_enclosure_get_vertex(NULL, nvertices, NULL) == RES_BAD_ARG); CHK(senc2d_enclosure_get_vertex(enclosure, 0, vrtx) == RES_OK); CHK(senc2d_enclosure_get_segment_media(NULL, 0, medium) == RES_BAD_ARG); - CHK(senc2d_enclosure_get_segment_media(enclosure, square_nsegments, medium) + CHK(senc2d_enclosure_get_segment_media(enclosure, nsegments, medium) == RES_BAD_ARG); CHK(senc2d_enclosure_get_segment_media(enclosure, 0, NULL) == RES_BAD_ARG); - CHK(senc2d_enclosure_get_segment_media(NULL, square_nsegments, medium) + CHK(senc2d_enclosure_get_segment_media(NULL, nsegments, medium) == RES_BAD_ARG); CHK(senc2d_enclosure_get_segment_media(NULL, 0, NULL) == RES_BAD_ARG); - CHK(senc2d_enclosure_get_segment_media(enclosure, square_nsegments, NULL) + CHK(senc2d_enclosure_get_segment_media(enclosure, nsegments, NULL) == RES_BAD_ARG); - CHK(senc2d_enclosure_get_segment_media(NULL, square_nsegments, NULL) + CHK(senc2d_enclosure_get_segment_media(NULL, nsegments, NULL) == RES_BAD_ARG); CHK(senc2d_enclosure_get_segment_media(enclosure, 0, medium) == RES_OK); CHK(senc2d_enclosure_get_segment_global_id(NULL, 0, &gid) == RES_BAD_ARG); - CHK(senc2d_enclosure_get_segment_global_id(enclosure, square_nsegments, &gid) + CHK(senc2d_enclosure_get_segment_global_id(enclosure, nsegments, &gid) == RES_BAD_ARG); CHK(senc2d_enclosure_get_segment_global_id(enclosure, 0, NULL) == RES_BAD_ARG); - CHK(senc2d_enclosure_get_segment_global_id(NULL, square_nsegments, &gid) + CHK(senc2d_enclosure_get_segment_global_id(NULL, nsegments, &gid) == RES_BAD_ARG); CHK(senc2d_enclosure_get_segment_global_id(NULL, 0, NULL) == RES_BAD_ARG); - CHK(senc2d_enclosure_get_segment_global_id(enclosure, square_nsegments, NULL) + CHK(senc2d_enclosure_get_segment_global_id(enclosure, nsegments, NULL) == RES_BAD_ARG); - CHK(senc2d_enclosure_get_segment_global_id(NULL, square_nsegments, NULL) + CHK(senc2d_enclosure_get_segment_global_id(NULL, nsegments, NULL) == RES_BAD_ARG); CHK(senc2d_enclosure_get_segment_global_id(enclosure, 0, &gid) == RES_OK); @@ -146,9 +145,9 @@ main(int argc, char** argv) CHK(header.enclosure_id == i); CHK(header.enclosed_medium == (i == 0 ? 0U : 1U)); - CHK(header.segment_count == square_nsegments); - CHK(header.unique_segment_count == square_nsegments); - CHK(header.vertices_count == square_nvertices); + CHK(header.segment_count == nsegments); + CHK(header.unique_segment_count == nsegments); + CHK(header.vertices_count == nvertices); CHK(header.is_infinite == (i == 0)); FOR_EACH(t, 0, header.segment_count) { @@ -161,7 +160,7 @@ main(int argc, char** argv) FOR_EACH(i, 0, 2) CHK(senc2d_descriptor_get_enclosure(desc, i, enclosures + i) == RES_OK); - FOR_EACH(n, 0, square_nsegments) { + FOR_EACH(n, 0, nsegments) { /* Read same segments in both enclosures */ FOR_EACH(i, 0, 2) CHK(senc2d_enclosure_get_segment(enclosures[i], n, indices[i]) == RES_OK); @@ -180,15 +179,15 @@ main(int argc, char** argv) CHK(senc2d_scene_create(dev, &scn) == RES_OK); - ctx.positions = square_vertices; - ctx.indices = square_indices; + ctx.positions = box_vertices; + ctx.indices = box_indices; ctx.scale = 1; d2(ctx.offset, 0, 0); ctx.front_media = medium0; ctx.back_media = medium0; - CHK(senc2d_scene_add_geometry(scn, square_nsegments - 1, get_indices, get_media, - NULL, square_nvertices, get_position, &ctx) == RES_OK); + CHK(senc2d_scene_add_geometry(scn, nsegments - 1, get_indices, get_media, + NULL, nvertices, get_position, &ctx) == RES_OK); CHK(senc2d_scene_analyze(scn, &desc) == RES_OK); @@ -207,8 +206,8 @@ main(int argc, char** argv) CHK(header.enclosure_id == 0); CHK(header.enclosed_medium == 0); CHK(header.segment_count == 2 * header.unique_segment_count); - CHK(header.unique_segment_count == square_nsegments - 1); - CHK(header.vertices_count == square_nvertices); + CHK(header.unique_segment_count == nsegments - 1); + CHK(header.vertices_count == nvertices); CHK(header.is_infinite == 1); FOR_EACH(t, 0, header.unique_segment_count) { diff --git a/src/test_senc2d_sample_enclosure.c b/src/test_senc2d_sample_enclosure.c @@ -61,8 +61,8 @@ main(int argc, char** argv) /* A 2D square, but with a hole (incomplete). * 1 single enclosure including both sides of segments */ - ctx.positions = square_vertices; - ctx.indices = square_indices; + ctx.positions = square_vertices; /* Need a true square */ + ctx.indices = box_indices; ctx.scale = 1; ctx.reverse_vrtx = 0; ctx.reverse_med = 0; @@ -70,8 +70,8 @@ main(int argc, char** argv) ctx.front_media = medium0; ctx.back_media = medium0; - CHK(senc2d_scene_add_geometry(scn, square_nsegments - 1, get_indices, - get_media, NULL, square_nvertices, get_position, &ctx) == RES_OK); + CHK(senc2d_scene_add_geometry(scn, nsegments - 1, get_indices, + get_media, NULL, nvertices, get_position, &ctx) == RES_OK); CHK(senc2d_scene_analyze(scn, &desc) == RES_OK); diff --git a/src/test_senc2d_scene.c b/src/test_senc2d_scene.c @@ -66,8 +66,8 @@ main(int argc, char** argv) CHK(count == 0); /* A 2D square */ - ctx.positions = square_vertices; - ctx.indices = square_indices; + ctx.positions = box_vertices; + ctx.indices = box_indices; ctx.scale = 1; ctx.reverse_vrtx = 0; ctx.reverse_med = 0; @@ -76,29 +76,29 @@ main(int argc, char** argv) ctx.back_media = medium1; ctx.global_ids = gid_face; - CHK(senc2d_scene_add_geometry(NULL, square_nsegments, get_indices, get_media, - get_global_id, square_nvertices, get_position, &ctx) == RES_BAD_ARG); + CHK(senc2d_scene_add_geometry(NULL, nsegments, get_indices, get_media, + get_global_id, nvertices, get_position, &ctx) == RES_BAD_ARG); CHK(senc2d_scene_add_geometry(scn, 0, get_indices, get_media, get_global_id, - square_nvertices, get_position, &ctx) == RES_BAD_ARG); - CHK(senc2d_scene_add_geometry(scn, square_nsegments, NULL, get_media, - get_global_id, square_nvertices, get_position, &ctx) == RES_BAD_ARG); - CHK(senc2d_scene_add_geometry(scn, square_nsegments, get_indices, NULL, - get_global_id, square_nvertices, get_position, &ctx) == RES_BAD_ARG); - CHK(senc2d_scene_add_geometry(scn, square_nsegments, get_indices, get_media, + nvertices, get_position, &ctx) == RES_BAD_ARG); + CHK(senc2d_scene_add_geometry(scn, nsegments, NULL, get_media, + get_global_id, nvertices, get_position, &ctx) == RES_BAD_ARG); + CHK(senc2d_scene_add_geometry(scn, nsegments, get_indices, NULL, + get_global_id, nvertices, get_position, &ctx) == RES_BAD_ARG); + CHK(senc2d_scene_add_geometry(scn, nsegments, get_indices, get_media, get_global_id, 0, get_position, &ctx) == RES_BAD_ARG); - CHK(senc2d_scene_add_geometry(scn, square_nsegments, get_indices, get_media, - get_global_id, square_nvertices, NULL, &ctx) == RES_BAD_ARG); - CHK(senc2d_scene_add_geometry(scn, square_nsegments, get_indices, get_media, - get_global_id, square_nvertices, get_position, &ctx) == RES_OK); + CHK(senc2d_scene_add_geometry(scn, nsegments, get_indices, get_media, + get_global_id, nvertices, NULL, &ctx) == RES_BAD_ARG); + CHK(senc2d_scene_add_geometry(scn, nsegments, get_indices, get_media, + get_global_id, nvertices, get_position, &ctx) == RES_OK); CHK(senc2d_scene_get_segments_count(scn, &count) == RES_OK); - CHK(count == square_nsegments); + CHK(count == nsegments); CHK(senc2d_scene_get_unique_segments_count(scn, &count) == RES_OK); - CHK(count == square_nsegments); + CHK(count == nsegments); CHK(senc2d_scene_get_vertices_count(scn, &count) == RES_OK); - CHK(count == square_nvertices); + CHK(count == nvertices); CHK(senc2d_scene_get_unique_vertices_count(scn, &count) == RES_OK); - CHK(count == square_nvertices); + CHK(count == nvertices); CHK(senc2d_scene_analyze(NULL, NULL) == RES_BAD_ARG); CHK(senc2d_scene_analyze(scn, NULL) == RES_BAD_ARG); @@ -114,11 +114,11 @@ main(int argc, char** argv) CHK(senc2d_scene_ref_put(scn) == RES_OK); CHK(senc2d_descriptor_ref_put(desc) == RES_OK); CHK(senc2d_scene_create(dev, &scn) == RES_OK); - CHK(senc2d_scene_add_geometry(scn, square_nsegments, get_indices, get_media, - get_global_id, square_nvertices, get_position, &ctx) == RES_OK); + CHK(senc2d_scene_add_geometry(scn, nsegments, get_indices, get_media, + get_global_id, nvertices, get_position, &ctx) == RES_OK); CHK(senc2d_scene_analyze(scn, &desc) == RES_OK); - FOR_EACH(i, 0, square_nsegments) { + FOR_EACH(i, 0, nsegments) { unsigned gid; CHK(senc2d_descriptor_get_global_segment_global_id(desc, i, &gid) == RES_OK); /* gid has been set to gid_face. */ @@ -128,11 +128,11 @@ main(int argc, char** argv) CHK(senc2d_scene_ref_put(scn) == RES_OK); CHK(senc2d_descriptor_ref_put(desc) == RES_OK); CHK(senc2d_scene_create(dev, &scn) == RES_OK); - CHK(senc2d_scene_add_geometry(scn, square_nsegments, get_indices, get_media, NULL, - square_nvertices, get_position, &ctx) == RES_OK); + CHK(senc2d_scene_add_geometry(scn, nsegments, get_indices, get_media, NULL, + nvertices, get_position, &ctx) == RES_OK); CHK(senc2d_scene_analyze(scn, &desc) == RES_OK); - FOR_EACH(i, 0, square_nsegments) { + FOR_EACH(i, 0, nsegments) { unsigned gid; CHK(senc2d_descriptor_get_global_segment_global_id(desc, i, &gid) == RES_OK); /* Default gid: segments rank. */ @@ -140,36 +140,36 @@ main(int argc, char** argv) } /* Invalid vertex ID */ - CHK(senc2d_scene_add_geometry(scn, square_nsegments, get_indices, get_media, NULL, - square_nvertices - 1, get_position, &ctx) == RES_BAD_ARG); + CHK(senc2d_scene_add_geometry(scn, nsegments, get_indices, get_media, NULL, + nvertices - 1, get_position, &ctx) == RES_BAD_ARG); /* Incoherent medium on a duplicate segment */ ctx.back_media = medium1_3; - CHK(senc2d_scene_add_geometry(scn, square_nsegments, get_indices, get_media, NULL, - square_nvertices, get_position, &ctx) == RES_BAD_ARG); + CHK(senc2d_scene_add_geometry(scn, nsegments, get_indices, get_media, NULL, + nvertices, get_position, &ctx) == RES_BAD_ARG); /* It is OK dd geometry after a failed add */ ctx.back_media = medium1; - CHK(senc2d_scene_add_geometry(scn, square_nsegments, get_indices, get_media, NULL, - square_nvertices, get_position, &ctx) == RES_OK); + CHK(senc2d_scene_add_geometry(scn, nsegments, get_indices, get_media, NULL, + nvertices, get_position, &ctx) == RES_OK); /* Coherent medium on duplicate segment */ ctx.back_media = medium1; - CHK(senc2d_scene_add_geometry(scn, square_nsegments, get_indices, get_media, NULL, - square_nvertices, get_position, &ctx) == RES_OK); + CHK(senc2d_scene_add_geometry(scn, nsegments, get_indices, get_media, NULL, + nvertices, get_position, &ctx) == RES_OK); /* Coherent medium on duplicate segment V2 */ ctx.reverse_med = 1; ctx.front_media = medium1; ctx.back_media = medium0; - CHK(senc2d_scene_add_geometry(scn, square_nsegments, get_indices, get_media, NULL, - square_nvertices, get_position, &ctx) == RES_OK); + CHK(senc2d_scene_add_geometry(scn, nsegments, get_indices, get_media, NULL, + nvertices, get_position, &ctx) == RES_OK); /* Coherent medium on duplicate segment V3 */ ctx.reverse_med = 0; ctx.reverse_vrtx = 1; - CHK(senc2d_scene_add_geometry(scn, square_nsegments, get_indices, get_media, NULL, - square_nvertices, get_position, &ctx) == RES_OK); + CHK(senc2d_scene_add_geometry(scn, nsegments, get_indices, get_media, NULL, + nvertices, get_position, &ctx) == RES_OK); CHK(senc2d_scene_ref_put(scn) == RES_OK); CHK(senc2d_device_ref_put(dev) == RES_OK); diff --git a/src/test_senc2d_square_behind_square.c b/src/test_senc2d_square_behind_square.c @@ -35,8 +35,8 @@ main(int argc, char** argv) /* Create the scene */ CHK(senc2d_scene_create(dev, &scn) == RES_OK); - ctx.positions = square_vertices; - ctx.indices = square_indices; + ctx.positions = box_vertices; + ctx.indices = box_indices; ctx.scale = 1; ctx.reverse_vrtx = 0; ctx.reverse_med = 0; @@ -45,8 +45,8 @@ main(int argc, char** argv) ctx.back_media = medium1; /* First square */ - CHK(senc2d_scene_add_geometry(scn, square_nsegments, get_indices, get_media, NULL, - square_nvertices, get_position, &ctx) == RES_OK); + CHK(senc2d_scene_add_geometry(scn, nsegments, get_indices, get_media, NULL, + nvertices, get_position, &ctx) == RES_OK); /* +Y from the first square, * big enough to prevent rays from the first square to miss this one */ @@ -54,8 +54,8 @@ main(int argc, char** argv) ctx.scale = 5; /* Second square */ - CHK(senc2d_scene_add_geometry(scn, square_nsegments, get_indices, get_media, NULL, - square_nvertices, get_position, &ctx) == RES_OK); + CHK(senc2d_scene_add_geometry(scn, nsegments, get_indices, get_media, NULL, + nvertices, get_position, &ctx) == RES_OK); CHK(senc2d_scene_analyze(scn, &desc) == RES_OK); @@ -66,8 +66,8 @@ main(int argc, char** argv) ctx.back_media = medium0; /* Third square */ - CHK(senc2d_scene_add_geometry(scn, square_nsegments, get_indices, get_media, NULL, - square_nvertices, get_position, &ctx) == RES_OK); + CHK(senc2d_scene_add_geometry(scn, nsegments, get_indices, get_media, NULL, + nvertices, get_position, &ctx) == RES_OK); if(desc) CHK(senc2d_descriptor_ref_put(desc) == RES_OK); desc = NULL; diff --git a/src/test_senc2d_square_in_square.c b/src/test_senc2d_square_in_square.c @@ -35,8 +35,8 @@ main(int argc, char** argv) /* Create the scene */ CHK(senc2d_scene_create(dev, &scn) == RES_OK); - ctx.positions = square_vertices; - ctx.indices = square_indices; + ctx.positions = box_vertices; + ctx.indices = box_indices; ctx.scale = 1; ctx.reverse_vrtx = 0; ctx.reverse_med = 0; @@ -47,8 +47,8 @@ main(int argc, char** argv) ctx.back_media = medium1; /* First square */ - CHK(senc2d_scene_add_geometry(scn, square_nsegments, get_indices, get_media, NULL, - square_nvertices, get_position, &ctx) == RES_OK); + CHK(senc2d_scene_add_geometry(scn, nsegments, get_indices, get_media, NULL, + nvertices, get_position, &ctx) == RES_OK); d2(ctx.offset, -1, -1); ctx.scale = 3; @@ -57,8 +57,8 @@ main(int argc, char** argv) ctx.reverse_vrtx = 1; /* Second square */ - CHK(senc2d_scene_add_geometry(scn, square_nsegments, get_indices, get_media, NULL, - square_nvertices, get_position, &ctx) == RES_OK); + CHK(senc2d_scene_add_geometry(scn, nsegments, get_indices, get_media, NULL, + nvertices, get_position, &ctx) == RES_OK); CHK(senc2d_scene_analyze(scn, &desc) == RES_OK); @@ -72,8 +72,8 @@ main(int argc, char** argv) ctx.back_media = medium0; /* mismatch with square 2 */ /* Third square */ - CHK(senc2d_scene_add_geometry(scn, square_nsegments, get_indices, get_media, NULL, - square_nvertices, get_position, &ctx) == RES_OK); + CHK(senc2d_scene_add_geometry(scn, nsegments, get_indices, get_media, NULL, + nvertices, get_position, &ctx) == RES_OK); if(desc) CHK(senc2d_descriptor_ref_put(desc) == RES_OK); desc = NULL; diff --git a/src/test_senc2d_square_on_square.c b/src/test_senc2d_square_on_square.c @@ -54,13 +54,13 @@ main(int argc, char** argv) CHK(mem_init_proxy_allocator(&allocator, &mem_default_allocator) == RES_OK); CHK(senc2d_device_create - (NULL, &allocator, SENC2D_NTHREADS_DEFAULT, 1, &dev) == RES_OK); + (NULL, &allocator, 1/*SENC2D_NTHREADS_DEFAULT*/, 1, &dev) == RES_OK); /* Create the scene */ CHK(senc2d_scene_create(dev, &scn) == RES_OK); - ctx.positions = square_vertices; - ctx.indices = square_indices; + ctx.positions = square_vertices; /* Need true squares for squares #1 and #2 */ + ctx.indices = box_indices; ctx.scale = 1; ctx.reverse_vrtx = 0; ctx.reverse_med = 0; @@ -72,8 +72,8 @@ main(int argc, char** argv) ctx.back_media = medium0; /* Add square #1 */ - CHK(senc2d_scene_add_geometry(scn, square_nsegments, get_indices, get_media, - NULL, square_nvertices, get_position, &ctx) == RES_OK); + CHK(senc2d_scene_add_geometry(scn, nsegments, get_indices, get_media, + NULL, nvertices, get_position, &ctx) == RES_OK); d2(ctx.offset, 1, 2); ctx.scale = 1; @@ -84,9 +84,10 @@ main(int argc, char** argv) ctx.back_media = medium0; /* Add square #2 (has a duplicate face with square #1) */ - CHK(senc2d_scene_add_geometry(scn, square_nsegments, get_indices, get_media, - NULL, square_nvertices, get_position, &ctx) == RES_OK); + CHK(senc2d_scene_add_geometry(scn, nsegments, get_indices, get_media, + NULL, nvertices, get_position, &ctx) == RES_OK); + ctx.positions = box_vertices; /* Can use distorded square for square #3 */ d2(ctx.offset, 0, 0); ctx.scale = 4; ctx.reverse_vrtx = 1; @@ -97,8 +98,8 @@ main(int argc, char** argv) ctx.back_media = medium1; /* Add square #3 */ - CHK(senc2d_scene_add_geometry(scn, square_nsegments, get_indices, get_media, - NULL, square_nvertices, get_position, &ctx) == RES_OK); + CHK(senc2d_scene_add_geometry(scn, nsegments, get_indices, get_media, + NULL, nvertices, get_position, &ctx) == RES_OK); CHK(senc2d_scene_analyze(scn, &desc) == RES_OK); diff --git a/src/test_senc2d_utils.h b/src/test_senc2d_utils.h @@ -25,14 +25,24 @@ /******************************************************************************* * Geometry ******************************************************************************/ -static double square_vertices[4/*#vertices*/*2/*#coords per vertex*/] = { + /* Distorded square */ +static double box_vertices[4/*#vertices*/*2/*#coords per vertex*/] = { + 0.1, 0.0, + 1.0, 0.0, + 0.0, 1.1, + 1.0, 1.0 +}; +/* Need a true square for some tests */ +static double square_vertices[4/*#vertices*/ * 2/*#coords per vertex*/] = { 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 1.0 }; static const unsigned -square_nvertices = sizeof(square_vertices) / (2 * sizeof(*square_vertices)); +nvertices = sizeof(box_vertices) / (2 * sizeof(*box_vertices)); +STATIC_ASSERT(sizeof(box_vertices) == sizeof(square_vertices), + The_2_geometries_must_have_the_same_number_of_vertices); /* The following array lists the indices toward the 2D vertices of each * segment. @@ -43,14 +53,14 @@ square_nvertices = sizeof(square_vertices) / (2 * sizeof(*square_vertices)); * 0----1 */ static unsigned -square_indices[4/*#segments*/*2/*#indices per segment*/] = { +box_indices[4/*#segments*/*2/*#indices per segment*/] = { 0, 2, 2, 3, 3, 1, 1, 0 }; static const unsigned -square_nsegments = sizeof(square_indices) / (2 * sizeof(*square_indices)); +nsegments = sizeof(box_indices) / (2 * sizeof(*box_indices)); struct context { double* positions;