fixes dihedral angle computation, adds plotting options

This commit is contained in:
ccolin 2020-10-02 14:41:05 +02:00
parent 07db041c21
commit c86240455d
3 changed files with 5 additions and 3 deletions

2
README
View File

@ -2,4 +2,4 @@ Pour compiler la première fois : `mkdir build && make'
Pour recompiler les fois suivantes : `make' Pour recompiler les fois suivantes : `make'
Pour nettoyer les fichiers de compilation : `make clean' Pour nettoyer les fichiers de compilation : `make clean'
Pour exécuter le programme : `LD_LIBRARY_PATH=libs/OpenMesh/liblinux/ ./build/tp1 <obj>' 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] 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] [min] [max]

View File

@ -124,7 +124,7 @@ void stats_dihedral_angles(MyMesh &mesh) {
mesh.update_normals(); mesh.update_normals();
for (size_t i = 0; i < mesh.n_halfedges(); i++) { for (size_t i = 0; i < mesh.n_halfedges(); i++) {
MyMesh::HalfedgeHandle heh = mesh.halfedge_handle(i); MyMesh::HalfedgeHandle heh = mesh.halfedge_handle(i);
std::cout << mesh.calc_dihedral_angle_fast(heh) * 180.0 / PI << " "; std::cout << mesh.calc_dihedral_angle_fast(heh) * 180.0 / PI + 180 << " ";
} }
std::cout << std::endl; std::cout << std::endl;
} }

View File

@ -3,7 +3,9 @@ import sys
from matplotlib import pyplot as plt from matplotlib import pyplot as plt
data = list(map(float, sys.stdin.readline().split())) 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') vals, bins, _ = plt.hist(data, color='deeppink',
bins=10 if len(sys.argv) == 1 else int(sys.argv[1]),
range=(float(sys.argv[2]), float(sys.argv[3])) if len(sys.argv) == 4 else None)
for i, v in zip([a + (b-a) / 2 for a, b in zip(bins, bins[1:])], vals): 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.text(i, v, str(int(v)), color='darkviolet', ha='center', fontweight='bold')
plt.xticks(ticks=bins, plt.xticks(ticks=bins,