implements statistics computation on face areas
This commit is contained in:
parent
47a9897747
commit
1772005c1b
1
README
1
README
@ -2,3 +2,4 @@ Pour compiler la première fois : `mkdir build && make'
|
||||
Pour recompiler les fois suivantes : `make'
|
||||
Pour nettoyer les fichiers de compilation : `make clean'
|
||||
Pour exécuter le programme : `LD_LIBRARY_PATH=libs/OpenMesh/liblinux/ ./build/tp1 <obj>'
|
||||
Pour faire un bel histogramme coloré : LD_LIBRARY_PATH=libs/OpenMesh/liblinux/ build/tp1 <obj> | util/plot.py [nombre de classes, 10 par défaut]
|
||||
|
24
src/main.cpp
24
src/main.cpp
@ -77,6 +77,18 @@ float total_area(MyMesh &mesh) {
|
||||
}
|
||||
|
||||
|
||||
void stats_surface_area(MyMesh &mesh) {
|
||||
if (!check_faces_are_triangles(mesh)) {
|
||||
std::cerr << "Le calcul de l’aire ne peu se faire que sur un maillage triangulaire." << std::endl;
|
||||
return;
|
||||
}
|
||||
for (const MyMesh::FaceHandle &face : mesh.faces()) {
|
||||
std::cout << face_area(mesh, face) << " ";
|
||||
}
|
||||
std::cout << std::endl;
|
||||
}
|
||||
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
using namespace std;
|
||||
|
||||
@ -86,18 +98,20 @@ int main(int argc, char *argv[]) {
|
||||
}
|
||||
MyMesh mesh;
|
||||
OpenMesh::IO::read_mesh(mesh, argv[1]);
|
||||
cout << "Les faces sont des triangles : "
|
||||
cerr << "Les faces sont des triangles : "
|
||||
<< (check_faces_are_triangles(mesh) ? "oui" : "non")
|
||||
<< endl;
|
||||
cout << "Les faces ont des voisines : "
|
||||
cerr << "Les faces ont des voisines : "
|
||||
<< (check_faces_arent_lonely(mesh) ? "oui" : "non")
|
||||
<< endl;
|
||||
cout << "Les sommets sont sur une arête : "
|
||||
cerr << "Les sommets sont sur une arête : "
|
||||
<< (check_vertices_arent_lonely(mesh) ? "oui" : "non")
|
||||
<< endl;
|
||||
cout << "Les arêtes sont sur une face : "
|
||||
cerr << "Les arêtes sont sur une face : "
|
||||
<< (check_edges_arent_lonely(argv[1]) ? "oui" : "non")
|
||||
<< endl;
|
||||
cout << "Aire totale : " << total_area(mesh) << endl;
|
||||
cerr << "Aire totale : " << total_area(mesh) << endl;
|
||||
// stats_to_csv(stats_surface_area(mesh));
|
||||
stats_surface_area(mesh);
|
||||
return 0;
|
||||
}
|
||||
|
12
util/plot.py
Executable file
12
util/plot.py
Executable file
@ -0,0 +1,12 @@
|
||||
#!/bin/python3
|
||||
import sys
|
||||
from matplotlib import pyplot as plt
|
||||
|
||||
data = list(map(float, sys.stdin.readline().split()))
|
||||
vals, bins, _ = plt.hist(data, bins=10 if len(sys.argv) == 1 else int(sys.argv[1]), color='deeppink')
|
||||
for i, v in zip([a + (b-a) / 2 for a, b in zip(bins, bins[1:])], vals):
|
||||
plt.text(i, v, str(int(v)), color='darkviolet', ha='center', fontweight='bold')
|
||||
plt.xticks(ticks=bins,
|
||||
labels=list(map(lambda e: f'{e:.5}', bins)),
|
||||
rotation=30, ha='right')
|
||||
plt.show()
|
Reference in New Issue
Block a user