J'ai 3 sommets (V1, V2, V3)
sélectionnés au hasard sur un maillage triangulaire régulier. Pour ces 3 sommets, j'ai calculé la distance géodésique et le chemin (en utilisant Dijkstra) entre eux et formé une surface en forme de triangle comme dans la figure ci-dessus.
Maintenant, j'ai les sommets qui se trouvent dans chaque chemin et je peux calculer les distances géodésiques à partir d'un sommet donné.
Ce que je veux faire, c'est obtenir les sommets ou triangles qui se trouvent dans une zone de type triangle. Comment puis-je faire ceci?
mesh
triangulation
mkocabas
la source
la source
Réponses:
Il existe une méthode alternative qui repose sur le remplissage par inondation. Organisez d'abord vos données de bord dans une boucle où les bords forment une boucle dans le sens antihoraire. Commencez ensuite à un point arbitraire de la boucle et choisissez des bords rejoignant ce point. Utilisez le bord limite sortant et traversez-le avec l'autre bord sortant, s'il pointe dans la direction de la face normale, c'est un bord à inclure, sinon jetez-le. À partir de ce bord, continuez jusqu'à ce que vous atteigniez un bord limite, à quel point vous terminez le remplissage. Continuez à un sommet de bord de limite encore à visiter.
la source
J'ai déjà commenté l'utilisation du remblayage et comment il serait préférable car il est plus flexible, mais une autre solution possible est scanline. (Je dis possible parce que cela fait beaucoup d'hypothèses sur votre géométrie, mais pour l'ensemble particulier montré et beaucoup d'autres similaires, cela fonctionnerait.)
Pour votre exemple avec 3 points: Trouvez le sommet d'intersection à partir du segment v1, v2 et de la ligne sur laquelle se trouve v3. (Le sommet en haut à gauche de v2) Nous appellerons ce sommet v4.
Cela s'appelle scanline parce que (dans l'image ci-dessus) vous descendez les lignes rouges et vertes simultanément, puis les lignes rouges et bleues balayant simultanément les lignes au fur et à mesure.
Cette solution serait très rapide s'il existe un modèle d'index, ce qui est souvent le cas. Sinon, un calcul serait nécessaire pour déterminer quel sommet voisin se trouve sur la ligne.
Le plus drôle est la ligne de balayage, les tests barycentriques (dans la boîte englobante de triangle) et le remplissage par inondation sont tous des moyens de dessiner des triangles dans le rendu 3D.
la source
Je pense que vous pouvez calculer des coordonnées barycentriques liées à la surface pour chaque point de la surface, puis les utiliser pour vérifier l'intérieur ou l'extérieur du triangle.
Je n'ai pas d'algorithme exact à portée de main mais j'ai trouvé cet article suivant qui semble gérer exactement ce type de coordonnées.
Coordonnées barycentriques sur les surfaces
la source