41TEST_CASE(
"Basic voxelization test",
"[voxelization]")
51 using TriOr = MeshVoxelizer6::TriangleOrientation;
54 SECTION(
"Test distance point/plan 3D")
57 const PointR3
A(38.6908 , 14.5441 , -0.71205);
58 const PointR3
B(34.6171 , 13.5999 , 2.44455);
59 const PointR3 C(37.4205 , 2.44239 , 6.31301);
62 const PointZ3 v(35, 2, 5);
64 const VectorR3 e1 =
A -
B;
65 const VectorR3 e2 =
A - C;
67 double distance = MeshVoxelizer6::distance(
A, e1.crossProduct(e2), v);
74 SECTION(
"Test if 2D point is inside triangle 2D")
82 OrientationFunctor orientationFunctor;
87 if(! pointPredicate(
A,
B, C))
101 REQUIRE(MeshVoxelizer6::pointIsInside2DTriangle(
A,
B, C, v) == TriOr::TRIANGLE_OUTSIDE);
105 REQUIRE(MeshVoxelizer6::pointIsInside2DTriangle(
A,
B, C, v) == TriOr::TRIANGLE_INSIDE);
109 REQUIRE(MeshVoxelizer6::pointIsInside2DTriangle(
A,
B, C, v) == TriOr::TRIANGLE_ONEDGE);
113 REQUIRE(MeshVoxelizer6::pointIsInside2DTriangle(
A,
B, C, v) == TriOr::TRIANGLE_ONVERTEX);
118 C = { -16.3299, 0. };
120 REQUIRE(MeshVoxelizer6::pointIsInside2DTriangle(
A,
B, C, v) == TriOr::TRIANGLE_OUTSIDE);
123 A = { -0.891282, 9.91201 };
124 B = { -1.40823, 9.91261 };
125 C = { -1.36963, 9.37414 };
126 v = { -1.16961, 9.83039 };
127 REQUIRE(MeshVoxelizer6::pointIsInside2DTriangle(
A,
B, C, v) == TriOr::TRIANGLE_INSIDE);
131 SECTION(
"Test if 3D point is inside voxel")
134 PointR3 P(-0.89, 9.91, 0.86);
135 PointZ3 v(-1, 10, 1);
137 REQUIRE(MeshVoxelizer6::pointIsInsideVoxel(P, v) ==
true);
141 REQUIRE(MeshVoxelizer6::pointIsInsideVoxel(P, v) ==
true);
145 REQUIRE(MeshVoxelizer6::pointIsInsideVoxel(P, v) ==
false);
150 REQUIRE(MeshVoxelizer6::pointIsInsideVoxel(P, v) ==
false);
154 SECTION(
"26-sep voxelization of a single triangle")
158 MeshVoxelizer26 voxelizer;
160 voxelizer.voxelize(outputSet,
Point(5,0,0),
Point(0,5,0),
Point(0,0,5));
165 SECTION(
"6-sep voxelization of a single triangle")
169 MeshVoxelizer6 voxelizer;
171 voxelizer.voxelize(outputSet,
Point(5,0,0),
Point(0,5,0),
Point(0,0,5));
176 SECTION(
"6-sep voxelization of a OFF cube mesh")
183 MeshVoxelizer6 voxelizer;
187 voxelizer.voxelize(outputSet, inputMesh, 10.0 );
194 SECTION(
"26-sep voxelization of a OFF cube mesh")
201 MeshVoxelizer26 voxelizer;
205 voxelizer.voxelize(outputSet, inputMesh, 10.0 );