Merge branch 'AvgUnittest' into 'master'
add tests for smart range avg and weighted avg See merge request OpenMesh/OpenMesh!279
This commit is contained in:
@@ -386,6 +386,39 @@ TEST_F(OpenMeshSmartRanges, Filtered)
|
||||
|
||||
}
|
||||
|
||||
/* Test avg
|
||||
*/
|
||||
TEST_F(OpenMeshSmartRanges, Avg)
|
||||
{
|
||||
|
||||
Mesh::Point cog(0,0,0);
|
||||
for (auto vh : mesh_.vertices())
|
||||
cog += mesh_.point(vh);
|
||||
cog /= mesh_.n_vertices();
|
||||
|
||||
auto points = OpenMesh::getPointsProperty(mesh_);
|
||||
auto cog2 = mesh_.vertices().avg(points);
|
||||
|
||||
EXPECT_LT(norm(cog - cog2), 0.00001) << "Computed center of gravities are significantly different.";
|
||||
}
|
||||
|
||||
/* Test weighted avg
|
||||
*/
|
||||
TEST_F(OpenMeshSmartRanges, WeightedAvg)
|
||||
{
|
||||
Mesh::Point cog(0,0,0);
|
||||
for (auto fh : mesh_.faces())
|
||||
cog += mesh_.calc_face_centroid(fh);
|
||||
cog /= mesh_.n_faces();
|
||||
|
||||
OpenMesh::FProp<float> area(mesh_);
|
||||
for (auto fh : mesh_.faces())
|
||||
area[fh] = mesh_.calc_face_area(fh);
|
||||
|
||||
auto cog2 = mesh_.faces().avg([&](OpenMesh::FaceHandle fh) { return mesh_.calc_face_centroid(fh); }, area);
|
||||
|
||||
EXPECT_LT(norm(cog - cog2), 0.00001) << "Computed area weighted center of gravities are significantly different.";
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user