Closed nicogodet closed 2 years ago
POur moi c'est le diameètre du cercle inscrit du coup la méthode inscribedRadius permet d'avoir cette valeur (en la multipliant par 2) En première approche avec une couche gpkg simple, je faisais une approximation avec la formule 2*$area/$perimeter Mais le recours à la méthode sera plus précise. A mon avis cela peut se substituer à la longueur minimale d'un élément car en théorie le diamètre du cercle inscrit sera toujours inférieur à la longueur minimale d'un cote du triangle.
Pas vraiment certain de comprendre les lignes: for key, value in dico.items(): if value < 2: dico[key] = 2 dans meshutils.py Pourquoi cette vérification? Si un noeud n'a qu'un voisin c'est qu'on a un problème de maillage
Le problème est dans le décompte du nombre de voisin via les faces. Il faut que je revois la méthode de décompte pour que ce soit plus fiable.
Actuellement, je compte le nombre de fois qu'apparait un noeud dans toute les faces. SI j'initialise à 2 (un noeud à forcément 2 voisins sur des mailles triangulaires), j'arrive au final à un décompte de voisin + 1 (9 au lieu de 8, etc..) Donc en initialisant à 1, j'ai le bon décompte sauf pour les mailles des coins. D'où cette correction.
Modifications effectuées.
Maintenant, on détermine précisément pour chaque noeud, les noeuds voisins. dico[id_noeud] = liste des id des noeuds voisins
Le test se fait sur la longueur de cette liste.
Côté ISL, nous prévoyons d'ajouter un critère sur le nombre de voisin d'un nœud en plus des critères existants :
@ccoulet Tu évoquais l'utilisation du cercle inscrit/circonscrit ? Actuellement, je gère chaque maille via un
QgsTriangle
et il existe de nombreuses méthodes pour calculer des caractéristiques de ce triangle : https://qgis.org/pyqgis/master/core/QgsTriangle.html