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:
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
+}