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 bf92ade10d11e306b21aedaca255d37f7a3ae8b3
parent db1ae319245caa724a25474228d161a439d435c6
Author: Christophe Coustet <christophe.coustet@meso-star.com>
Date:   Fri,  5 Apr 2024 09:40:33 +0200

Add new configurations to test geometries at zero distance

This new configurations fail without further fixes, mainly failing to
associate inner connex components with their counterparts

Diffstat:
Msrc/test_senc3d_zero_distance.c | 747++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 739 insertions(+), 8 deletions(-)

diff --git a/src/test_senc3d_zero_distance.c b/src/test_senc3d_zero_distance.c @@ -145,6 +145,270 @@ zero_1_properties[36][3] = { { 1, 0, zero_1_UNSPECIFIED_PROPERTY } }; +/* zero_1d is similar as zero_1, with geometry duplicated in mirror along Z axis */ +static const unsigned +zero_1d_vertices_count = 44; + +static const unsigned +zero_1d_triangles_count = 72; + +static const double +zero_1d_vertices[44][3] = { + { 10, 10, -11 }, + { 10, 0, -11 }, + { 0, 10, -11 }, + { 0, 0, -11 }, + { 0, 10, -1 }, + { 0, 0, -1 }, + { 10, 0, -1 }, + { 9, 9, 0 }, + { 8, 9, -10 }, + { 4, 7, -10 }, + { 1, 9, -10 }, + { 1, 2, -10 }, + { 1, 9, -2 }, + { 1, 2, -2 }, + { 4, 7, -2 }, + { 7, 5, -10 }, + { 9, 8, -10 }, + { 9, 1, -10 }, + { 2, 1, -10 }, + { 2, 1, -2 }, + { 9, 1, -2 }, + { 7, 4, -2 }, + { 10, 10, 11 }, + { 10, 0, 11 }, + { 0, 10, 11 }, + { 0, 0, 11 }, + { 0, 10, 1 }, + { 0, 0, 1 }, + { 10, 0, 1 }, + { 9, 9, 0.1 }, /* Vertex #29 == vertex #7 => keep a dummy placeholder here and use #7 instead in triangles */ + { 8, 9, 10 }, + { 4, 7, 10 }, + { 1, 9, 10 }, + { 1, 2, 10 }, + { 1, 9, 2 }, + { 1, 2, 2 }, + { 4, 7, 2 }, + { 7, 5, 10 }, + { 9, 8, 10 }, + { 9, 1, 10 }, + { 2, 1, 10 }, + { 2, 1, 2 }, + { 9, 1, 2 }, + { 7, 4, 2 } +}; + +static const unsigned +zero_1d_triangles[72][3] = { + { 0, 1, 2 }, + { 1, 3, 2 }, + { 4, 5, 6 }, + { 7, 4, 6 }, + { 2, 3, 4 }, + { 3, 5, 4 }, + { 6, 1, 7 }, + { 1, 0, 7 }, + { 0, 2, 4 }, + { 7, 0, 4 }, + { 5, 3, 1 }, + { 6, 5, 1 }, + { 8, 9, 10 }, + { 9, 11, 10 }, + { 12, 13, 14 }, + { 7, 12, 14 }, + { 10, 11, 12 }, + { 11, 13, 12 }, + { 14, 9, 7 }, + { 9, 8, 7 }, + { 8, 10, 12 }, + { 7, 8, 12 }, + { 13, 11, 9 }, + { 14, 13, 9 }, + { 15, 16, 17 }, + { 18, 15, 17 }, + { 19, 20, 21 }, + { 20, 7, 21 }, + { 18, 17, 20 }, + { 19, 18, 20 }, + { 15, 21, 7 }, + { 16, 15, 7 }, + { 17, 16, 20 }, + { 16, 7, 20 }, + { 18, 19, 15 }, + { 19, 21, 15 }, + { 22, 23, 24 }, + { 23, 25, 24 }, + { 26, 27, 28 }, + { 7, 26, 28 }, + { 24, 25, 26 }, + { 25, 27, 26 }, + { 28, 23, 7 }, + { 23, 22, 7 }, + { 22, 24, 26 }, + { 7, 22, 26 }, + { 27, 25, 23 }, + { 28, 27, 23 }, + { 30, 31, 32 }, + { 31, 33, 32 }, + { 34, 35, 36 }, + { 7, 34, 36 }, + { 32, 33, 34 }, + { 33, 35, 34 }, + { 36, 31, 7 }, + { 31, 30, 7 }, + { 30, 32, 34 }, + { 7, 30, 34 }, + { 35, 33, 31 }, + { 36, 35, 31 }, + { 37, 38, 39 }, + { 40, 37, 39 }, + { 41, 42, 43 }, + { 42, 7, 43 }, + { 40, 39, 42 }, + { 41, 40, 42 }, + { 37, 43, 7 }, + { 38, 37, 7 }, + { 39, 38, 42 }, + { 38, 7, 42 }, + { 40, 41, 37 }, + { 41, 43, 37 } +}; + +static const unsigned +zero_1d_properties[72][3] = { + { 0, zero_1_UNSPECIFIED_PROPERTY, 2 }, + { 0, zero_1_UNSPECIFIED_PROPERTY, 2 }, + { 0, zero_1_UNSPECIFIED_PROPERTY, 2 }, + { 0, zero_1_UNSPECIFIED_PROPERTY, 2 }, + { 0, zero_1_UNSPECIFIED_PROPERTY, 2 }, + { 0, zero_1_UNSPECIFIED_PROPERTY, 2 }, + { 0, zero_1_UNSPECIFIED_PROPERTY, 2 }, + { 0, zero_1_UNSPECIFIED_PROPERTY, 2 }, + { 0, zero_1_UNSPECIFIED_PROPERTY, 2 }, + { 0, zero_1_UNSPECIFIED_PROPERTY, 2 }, + { 0, zero_1_UNSPECIFIED_PROPERTY, 2 }, + { 0, zero_1_UNSPECIFIED_PROPERTY, 2 }, + { 1, 0, zero_1_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_1_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_1_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_1_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_1_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_1_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_1_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_1_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_1_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_1_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_1_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_1_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_1_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_1_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_1_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_1_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_1_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_1_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_1_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_1_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_1_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_1_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_1_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_1_UNSPECIFIED_PROPERTY }, + + { zero_1_UNSPECIFIED_PROPERTY, 0, 2 }, + { zero_1_UNSPECIFIED_PROPERTY, 0, 2 }, + { zero_1_UNSPECIFIED_PROPERTY, 0, 2 }, + { zero_1_UNSPECIFIED_PROPERTY, 0, 2 }, + { zero_1_UNSPECIFIED_PROPERTY, 0, 2 }, + { zero_1_UNSPECIFIED_PROPERTY, 0, 2 }, + { zero_1_UNSPECIFIED_PROPERTY, 0, 2 }, + { zero_1_UNSPECIFIED_PROPERTY, 0, 2 }, + { zero_1_UNSPECIFIED_PROPERTY, 0, 2 }, + { zero_1_UNSPECIFIED_PROPERTY, 0, 2 }, + { zero_1_UNSPECIFIED_PROPERTY, 0, 2 }, + { zero_1_UNSPECIFIED_PROPERTY, 0, 2 }, + { 0, 1, zero_1_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_1_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_1_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_1_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_1_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_1_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_1_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_1_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_1_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_1_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_1_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_1_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_1_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_1_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_1_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_1_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_1_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_1_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_1_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_1_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_1_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_1_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_1_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_1_UNSPECIFIED_PROPERTY } +}; + +/* zero_1D is similar as zero_1d, with a tiny distance between mirrored + * geometries */ +static const double +zero_1D_vertices[44][3] = { + { 10, 10, -11 }, + { 10, 0, -11 }, + { 0, 10, -11 }, + { 0, 0, -11 }, + { 0, 10, -1 }, + { 0, 0, -1 }, + { 10, 0, -1 }, + { 9, 9, 0 }, + { 8, 9, -10 }, + { 4, 7, -10 }, + { 1, 9, -10 }, + { 1, 2, -10 }, + { 1, 9, -2 }, + { 1, 2, -2 }, + { 4, 7, -2 }, + { 7, 5, -10 }, + { 9, 8, -10 }, + { 9, 1, -10 }, + { 2, 1, -10 }, + { 2, 1, -2 }, + { 9, 1, -2 }, + { 7, 4, -2 }, + { 10, 10, 11 }, + { 10, 0, 11 }, + { 0, 10, 11 }, + { 0, 0, 11 }, + { 0, 10, 1 }, + { 0, 0, 1 }, + { 10, 0, 1 }, + { 9, 9, 1e-30 }, + { 8, 9, 10 }, + { 4, 7, 10 }, + { 1, 9, 10 }, + { 1, 2, 10 }, + { 1, 9, 2 }, + { 1, 2, 2 }, + { 4, 7, 2 }, + { 7, 5, 10 }, + { 9, 8, 10 }, + { 9, 1, 10 }, + { 2, 1, 10 }, + { 2, 1, 2 }, + { 9, 1, 2 }, + { 7, 4, 2 } +}; + +#define zero_1D_triangles zero_1d_triangles + +#define zero_1D_properties zero_1d_properties +static unsigned zero_1D_triangles_count = zero_1d_triangles_count; +static unsigned zero_1D_vertices_count = zero_1d_vertices_count; + /* zero_2 geometry is made of 5 nested distorded cubes of decreasing sizes, that * all join at a single vertex V (the highest vertex in the model). Distance between * the 10 components (inside and outside of each shape) is zero. */ @@ -324,6 +588,422 @@ zero_2_properties[60][3] = { { 4, 3, zero_2_UNSPECIFIED_PROPERTY } }; +/* zero_2d is similar as zero_2, with geometry duplicated in mirror along Z axis */ +static const unsigned +zero_2d_vertices_count = 72; + +static const unsigned +zero_2d_triangles_count = 120; + +static const double +zero_2d_vertices[72][3] = { + { 0, 10, -11 }, + { 0, 0, -11 }, + { 0, 10, -1 }, + { 0, 0, -1 }, + { 10, 0, -1 }, + { 10, 0, -11 }, + { 9, 9, 0 }, + { 10, 10, -11 }, + { 1, 9, -10 }, + { 1, 1, -10 }, + { 1, 9, -2 }, + { 1, 1, -2 }, + { 9, 1, -2 }, + { 9, 1, -10 }, + { 9, 9, -10 }, + { 2, 8, -9 }, + { 2, 2, -9 }, + { 2, 8, -3 }, + { 2, 2, -3 }, + { 8, 2, -3 }, + { 8, 2, -9 }, + { 8, 8, -9 }, + { 3, 7, -8 }, + { 3, 3, -8 }, + { 3, 7, -4 }, + { 3, 3, -4 }, + { 7, 3, -4 }, + { 7, 3, -8 }, + { 7, 7, -8 }, + { 4, 6, -7 }, + { 4, 4, -7 }, + { 4, 6, -5 }, + { 4, 4, -5 }, + { 6, 4, -5 }, + { 6, 4, -7 }, + { 6, 6, -7 }, + { 0, 10, 11 }, + { 0, 0, 11 }, + { 0, 10, 1 }, + { 0, 0, 1 }, + { 10, 0, 1 }, + { 10, 0, 11 }, + { 9, 9, 0.1 }, /* Vertex #42 == vertex #6 => keep a dummy placeholder here and use #6 instead in triangles */ + { 10, 10, 11 }, + { 1, 9, 10 }, + { 1, 1, 10 }, + { 1, 9, 2 }, + { 1, 1, 2 }, + { 9, 1, 2 }, + { 9, 1, 10 }, + { 9, 9, 10 }, + { 2, 8, 9 }, + { 2, 2, 9 }, + { 2, 8, 3 }, + { 2, 2, 3 }, + { 8, 2, 3 }, + { 8, 2, 9 }, + { 8, 8, 9 }, + { 3, 7, 8 }, + { 3, 3, 8 }, + { 3, 7, 4 }, + { 3, 3, 4 }, + { 7, 3, 4 }, + { 7, 3, 8 }, + { 7, 7, 8 }, + { 4, 6, 7 }, + { 4, 4, 7 }, + { 4, 6, 5 }, + { 4, 4, 5 }, + { 6, 4, 5 }, + { 6, 4, 7 }, + { 6, 6, 7 } +}; + +static const unsigned +zero_2d_triangles[120][3] = { + { 0, 1, 2 }, + { 1, 3, 2 }, + { 4, 5, 6 }, + { 5, 7, 6 }, + { 2, 3, 4 }, + { 6, 2, 4 }, + { 5, 1, 0 }, + { 7, 5, 0 }, + { 3, 1, 5 }, + { 4, 3, 5 }, + { 7, 0, 2 }, + { 6, 7, 2 }, + { 8, 9, 10 }, + { 9, 11, 10 }, + { 12, 13, 6 }, + { 13, 14, 6 }, + { 10, 11, 12 }, + { 6, 10, 12 }, + { 13, 9, 8 }, + { 14, 13, 8 }, + { 11, 9, 13 }, + { 12, 11, 13 }, + { 14, 8, 10 }, + { 6, 14, 10 }, + { 15, 16, 17 }, + { 16, 18, 17 }, + { 19, 20, 6 }, + { 20, 21, 6 }, + { 17, 18, 19 }, + { 6, 17, 19 }, + { 20, 16, 15 }, + { 21, 20, 15 }, + { 18, 16, 20 }, + { 19, 18, 20 }, + { 21, 15, 17 }, + { 6, 21, 17 }, + { 22, 23, 24 }, + { 23, 25, 24 }, + { 26, 27, 6 }, + { 27, 28, 6 }, + { 24, 25, 26 }, + { 6, 24, 26 }, + { 27, 23, 22 }, + { 28, 27, 22 }, + { 25, 23, 27 }, + { 26, 25, 27 }, + { 28, 22, 24 }, + { 6, 28, 24 }, + { 29, 30, 31 }, + { 30, 32, 31 }, + { 33, 34, 6 }, + { 34, 35, 6 }, + { 31, 32, 33 }, + { 6, 31, 33 }, + { 34, 30, 29 }, + { 35, 34, 29 }, + { 32, 30, 34 }, + { 33, 32, 34 }, + { 35, 29, 31 }, + { 6, 35, 31 }, + { 36, 37, 38 }, + { 37, 39, 38 }, + { 40, 41, 6 }, + { 41, 43, 6 }, + { 38, 39, 40 }, + { 6, 38, 40 }, + { 41, 37, 36 }, + { 43, 41, 36 }, + { 39, 37, 41 }, + { 40, 39, 41 }, + { 43, 36, 38 }, + { 6, 43, 38 }, + { 44, 45, 46 }, + { 45, 47, 46 }, + { 48, 49, 6 }, + { 49, 50, 6 }, + { 46, 47, 48 }, + { 6, 46, 48 }, + { 49, 45, 44 }, + { 50, 49, 44 }, + { 47, 45, 49 }, + { 48, 47, 49 }, + { 50, 44, 46 }, + { 6, 50, 46 }, + { 51, 52, 53 }, + { 52, 54, 53 }, + { 55, 56, 6 }, + { 56, 57, 6 }, + { 53, 54, 55 }, + { 6, 53, 55 }, + { 56, 52, 51 }, + { 57, 56, 51 }, + { 54, 52, 56 }, + { 55, 54, 56 }, + { 57, 51, 53 }, + { 6, 57, 53 }, + { 58, 59, 60 }, + { 59, 61, 60 }, + { 62, 63, 6 }, + { 63, 64, 6 }, + { 60, 61, 62 }, + { 6, 60, 62 }, + { 63, 59, 58 }, + { 64, 63, 58 }, + { 61, 59, 63 }, + { 62, 61, 63 }, + { 64, 58, 60 }, + { 6, 64, 60 }, + { 65, 66, 67 }, + { 66, 68, 67 }, + { 69, 70, 6 }, + { 70, 71, 6 }, + { 67, 68, 69 }, + { 6, 67, 69 }, + { 70, 66, 65 }, + { 71, 70, 65 }, + { 68, 66, 70 }, + { 69, 68, 70 }, + { 71, 65, 67 }, + { 6, 71, 67 } +}; + +static const unsigned +zero_2d_properties[120][3] = { + { 0, zero_2_UNSPECIFIED_PROPERTY, 5 }, + { 0, zero_2_UNSPECIFIED_PROPERTY, 5 }, + { 0, zero_2_UNSPECIFIED_PROPERTY, 5 }, + { 0, zero_2_UNSPECIFIED_PROPERTY, 5 }, + { 0, zero_2_UNSPECIFIED_PROPERTY, 5 }, + { 0, zero_2_UNSPECIFIED_PROPERTY, 5 }, + { 0, zero_2_UNSPECIFIED_PROPERTY, 5 }, + { 0, zero_2_UNSPECIFIED_PROPERTY, 5 }, + { 0, zero_2_UNSPECIFIED_PROPERTY, 5 }, + { 0, zero_2_UNSPECIFIED_PROPERTY, 5 }, + { 0, zero_2_UNSPECIFIED_PROPERTY, 5 }, + { 0, zero_2_UNSPECIFIED_PROPERTY, 5 }, + { 1, 0, zero_2_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_2_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_2_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_2_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_2_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_2_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_2_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_2_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_2_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_2_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_2_UNSPECIFIED_PROPERTY }, + { 1, 0, zero_2_UNSPECIFIED_PROPERTY }, + { 2, 1, zero_2_UNSPECIFIED_PROPERTY }, + { 2, 1, zero_2_UNSPECIFIED_PROPERTY }, + { 2, 1, zero_2_UNSPECIFIED_PROPERTY }, + { 2, 1, zero_2_UNSPECIFIED_PROPERTY }, + { 2, 1, zero_2_UNSPECIFIED_PROPERTY }, + { 2, 1, zero_2_UNSPECIFIED_PROPERTY }, + { 2, 1, zero_2_UNSPECIFIED_PROPERTY }, + { 2, 1, zero_2_UNSPECIFIED_PROPERTY }, + { 2, 1, zero_2_UNSPECIFIED_PROPERTY }, + { 2, 1, zero_2_UNSPECIFIED_PROPERTY }, + { 2, 1, zero_2_UNSPECIFIED_PROPERTY }, + { 2, 1, zero_2_UNSPECIFIED_PROPERTY }, + { 3, 2, zero_2_UNSPECIFIED_PROPERTY }, + { 3, 2, zero_2_UNSPECIFIED_PROPERTY }, + { 3, 2, zero_2_UNSPECIFIED_PROPERTY }, + { 3, 2, zero_2_UNSPECIFIED_PROPERTY }, + { 3, 2, zero_2_UNSPECIFIED_PROPERTY }, + { 3, 2, zero_2_UNSPECIFIED_PROPERTY }, + { 3, 2, zero_2_UNSPECIFIED_PROPERTY }, + { 3, 2, zero_2_UNSPECIFIED_PROPERTY }, + { 3, 2, zero_2_UNSPECIFIED_PROPERTY }, + { 3, 2, zero_2_UNSPECIFIED_PROPERTY }, + { 3, 2, zero_2_UNSPECIFIED_PROPERTY }, + { 3, 2, zero_2_UNSPECIFIED_PROPERTY }, + { 4, 3, zero_2_UNSPECIFIED_PROPERTY }, + { 4, 3, zero_2_UNSPECIFIED_PROPERTY }, + { 4, 3, zero_2_UNSPECIFIED_PROPERTY }, + { 4, 3, zero_2_UNSPECIFIED_PROPERTY }, + { 4, 3, zero_2_UNSPECIFIED_PROPERTY }, + { 4, 3, zero_2_UNSPECIFIED_PROPERTY }, + { 4, 3, zero_2_UNSPECIFIED_PROPERTY }, + { 4, 3, zero_2_UNSPECIFIED_PROPERTY }, + { 4, 3, zero_2_UNSPECIFIED_PROPERTY }, + { 4, 3, zero_2_UNSPECIFIED_PROPERTY }, + { 4, 3, zero_2_UNSPECIFIED_PROPERTY }, + { 4, 3, zero_2_UNSPECIFIED_PROPERTY }, + { zero_2_UNSPECIFIED_PROPERTY, 0, 5 }, + { zero_2_UNSPECIFIED_PROPERTY, 0, 5 }, + { zero_2_UNSPECIFIED_PROPERTY, 0, 5 }, + { zero_2_UNSPECIFIED_PROPERTY, 0, 5 }, + { zero_2_UNSPECIFIED_PROPERTY, 0, 5 }, + { zero_2_UNSPECIFIED_PROPERTY, 0, 5 }, + { zero_2_UNSPECIFIED_PROPERTY, 0, 5 }, + { zero_2_UNSPECIFIED_PROPERTY, 0, 5 }, + { zero_2_UNSPECIFIED_PROPERTY, 0, 5 }, + { zero_2_UNSPECIFIED_PROPERTY, 0, 5 }, + { zero_2_UNSPECIFIED_PROPERTY, 0, 5 }, + { zero_2_UNSPECIFIED_PROPERTY, 0, 5 }, + { 0, 1, zero_2_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_2_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_2_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_2_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_2_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_2_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_2_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_2_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_2_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_2_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_2_UNSPECIFIED_PROPERTY }, + { 0, 1, zero_2_UNSPECIFIED_PROPERTY }, + { 1, 2, zero_2_UNSPECIFIED_PROPERTY }, + { 1, 2, zero_2_UNSPECIFIED_PROPERTY }, + { 1, 2, zero_2_UNSPECIFIED_PROPERTY }, + { 1, 2, zero_2_UNSPECIFIED_PROPERTY }, + { 1, 2, zero_2_UNSPECIFIED_PROPERTY }, + { 1, 2, zero_2_UNSPECIFIED_PROPERTY }, + { 1, 2, zero_2_UNSPECIFIED_PROPERTY }, + { 1, 2, zero_2_UNSPECIFIED_PROPERTY }, + { 1, 2, zero_2_UNSPECIFIED_PROPERTY }, + { 1, 2, zero_2_UNSPECIFIED_PROPERTY }, + { 1, 2, zero_2_UNSPECIFIED_PROPERTY }, + { 1, 2, zero_2_UNSPECIFIED_PROPERTY }, + { 2, 3, zero_2_UNSPECIFIED_PROPERTY }, + { 2, 3, zero_2_UNSPECIFIED_PROPERTY }, + { 2, 3, zero_2_UNSPECIFIED_PROPERTY }, + { 2, 3, zero_2_UNSPECIFIED_PROPERTY }, + { 2, 3, zero_2_UNSPECIFIED_PROPERTY }, + { 2, 3, zero_2_UNSPECIFIED_PROPERTY }, + { 2, 3, zero_2_UNSPECIFIED_PROPERTY }, + { 2, 3, zero_2_UNSPECIFIED_PROPERTY }, + { 2, 3, zero_2_UNSPECIFIED_PROPERTY }, + { 2, 3, zero_2_UNSPECIFIED_PROPERTY }, + { 2, 3, zero_2_UNSPECIFIED_PROPERTY }, + { 2, 3, zero_2_UNSPECIFIED_PROPERTY }, + { 3, 4, zero_2_UNSPECIFIED_PROPERTY }, + { 3, 4, zero_2_UNSPECIFIED_PROPERTY }, + { 3, 4, zero_2_UNSPECIFIED_PROPERTY }, + { 3, 4, zero_2_UNSPECIFIED_PROPERTY }, + { 3, 4, zero_2_UNSPECIFIED_PROPERTY }, + { 3, 4, zero_2_UNSPECIFIED_PROPERTY }, + { 3, 4, zero_2_UNSPECIFIED_PROPERTY }, + { 3, 4, zero_2_UNSPECIFIED_PROPERTY }, + { 3, 4, zero_2_UNSPECIFIED_PROPERTY }, + { 3, 4, zero_2_UNSPECIFIED_PROPERTY }, + { 3, 4, zero_2_UNSPECIFIED_PROPERTY }, + { 3, 4, zero_2_UNSPECIFIED_PROPERTY } +}; + +/* zero_2D is similar as zero_2d, with a tiny distance between mirrored + * geometries */ +static const double +zero_2D_vertices[72][3] = { + { 0, 10, -11 }, + { 0, 0, -11 }, + { 0, 10, -1 }, + { 0, 0, -1 }, + { 10, 0, -1 }, + { 10, 0, -11 }, + { 9, 9, 0 }, + { 10, 10, -11 }, + { 1, 9, -10 }, + { 1, 1, -10 }, + { 1, 9, -2 }, + { 1, 1, -2 }, + { 9, 1, -2 }, + { 9, 1, -10 }, + { 9, 9, -10 }, + { 2, 8, -9 }, + { 2, 2, -9 }, + { 2, 8, -3 }, + { 2, 2, -3 }, + { 8, 2, -3 }, + { 8, 2, -9 }, + { 8, 8, -9 }, + { 3, 7, -8 }, + { 3, 3, -8 }, + { 3, 7, -4 }, + { 3, 3, -4 }, + { 7, 3, -4 }, + { 7, 3, -8 }, + { 7, 7, -8 }, + { 4, 6, -7 }, + { 4, 4, -7 }, + { 4, 6, -5 }, + { 4, 4, -5 }, + { 6, 4, -5 }, + { 6, 4, -7 }, + { 6, 6, -7 }, + { 0, 10, 11 }, + { 0, 0, 11 }, + { 0, 10, 1 }, + { 0, 0, 1 }, + { 10, 0, 1 }, + { 10, 0, 11 }, + { 9, 9, 1e-30 }, + { 10, 10, 11 }, + { 1, 9, 10 }, + { 1, 1, 10 }, + { 1, 9, 2 }, + { 1, 1, 2 }, + { 9, 1, 2 }, + { 9, 1, 10 }, + { 9, 9, 10 }, + { 2, 8, 9 }, + { 2, 2, 9 }, + { 2, 8, 3 }, + { 2, 2, 3 }, + { 8, 2, 3 }, + { 8, 2, 9 }, + { 8, 8, 9 }, + { 3, 7, 8 }, + { 3, 3, 8 }, + { 3, 7, 4 }, + { 3, 3, 4 }, + { 7, 3, 4 }, + { 7, 3, 8 }, + { 7, 7, 8 }, + { 4, 6, 7 }, + { 4, 4, 7 }, + { 4, 6, 5 }, + { 4, 4, 5 }, + { 6, 4, 5 }, + { 6, 4, 7 }, + { 6, 6, 7 } +}; + +#define zero_2D_triangles zero_2d_triangles + +#define zero_2D_properties zero_2d_properties +static unsigned zero_2D_triangles_count = zero_2d_triangles_count; +static unsigned zero_2D_vertices_count = zero_2d_vertices_count; + + /* Enclosures' order is consistent accross runs as they are sorted by triangle * sides, thus allowing to expect a given order */ struct expected { @@ -356,12 +1036,10 @@ test ctx.indices = indices; ctx.properties = properties; - if(n == 1) { - /* Same model with symmetry / origin - * (need to reverse vertices' order to keep same inside/outside) */ - ctx.scale = -1; - ctx.reverse_vrtx = 1; - } + /* If n==1, same model with symmetry / origin + * (need to reverse vertices' order to keep same inside/outside) */ + ctx.scale = (n == 1) ? -1 : +1; + ctx.reverse_vrtx = (n == 1) ? 1 : 0; OK(senc3d_scene_create(dev, SENC3D_CONVENTION_NORMAL_BACK | SENC3D_CONVENTION_NORMAL_OUTSIDE, @@ -425,6 +1103,29 @@ main(int argc, char** argv) (unsigned *)zero_1_properties, zero_1_triangles_count, zero_1_vertices_count, &expected); + expected.enclosure_count = 7; + expected.medium[0] = SENC3D_UNSPECIFIED_MEDIUM; + expected.volume[0] = -1933.33; + expected.medium[1] = 0; + expected.volume[1] = 647.33; + expected.medium[2] = 1; + expected.volume[2] = 150; + expected.medium[3] = 1; + expected.volume[3] = 169.33; + expected.medium[4] = 0; + expected.volume[4] = 647.33; + expected.medium[5] = 1; + expected.volume[5] = 150; + expected.medium[6] = 1; + expected.volume[6] = 169.33; + test((double *)zero_1d_vertices, (unsigned*)zero_1d_triangles, + (unsigned *)zero_1d_properties, zero_1d_triangles_count, + zero_1d_vertices_count, &expected); + + test((double *)zero_1D_vertices, (unsigned*)zero_1D_triangles, + (unsigned *)zero_1D_properties, zero_1D_triangles_count, + zero_1D_vertices_count, &expected); + expected.enclosure_count = 6; expected.medium[0] = SENC3D_UNSPECIFIED_MEDIUM; expected.volume[0] = -966.67; @@ -442,5 +1143,36 @@ main(int argc, char** argv) (unsigned*)zero_2_properties, zero_2_triangles_count, zero_2_vertices_count, &expected); + expected.enclosure_count = 11; + expected.medium[0] = SENC3D_UNSPECIFIED_MEDIUM; + expected.volume[0] = -1933.33; + expected.medium[1] = 0; + expected.volume[1] = 433.33; + expected.medium[2] = 1; + expected.volume[2] = 281.33; + expected.medium[3] = 2; + expected.volume[3] = 161.33; + expected.medium[4] = 3; + expected.volume[4] = 73.33; + expected.medium[5] = 4; + expected.volume[5] = 17.33; + expected.medium[6] = 0; + expected.volume[6] = 433.33; + expected.medium[7] = 1; + expected.volume[7] = 281.33; + expected.medium[8] = 2; + expected.volume[8] = 161.33; + expected.medium[9] = 3; + expected.volume[9] = 73.33; + expected.medium[10] = 4; + expected.volume[10] = 17.33; + test((double*)zero_2d_vertices, (unsigned*)zero_2d_triangles, + (unsigned*)zero_2d_properties, zero_2d_triangles_count, + zero_2d_vertices_count, &expected); + + test((double*)zero_2D_vertices, (unsigned*)zero_2D_triangles, + (unsigned*)zero_2D_properties, zero_2D_triangles_count, + zero_2d_vertices_count, &expected); + return 0; -} -\ No newline at end of file +}