Triangulation 2d pour modeleur 3d

Soyez le premier à donner votre avis sur cette source.

Vue 12 414 fois - Téléchargée 905 fois

Description

Ce code est à l'origine un module que j'ai trouvé sur VbFrance (http://www.vbfrance.com/codes/TRIANGULATION-2D_18439.aspx) permettant de trianguler des domaines convexes par la triangulation de Delaunay. Je l'ai modifié pour qu'il maille des domaines non convexes. Il marche pour la plus part des profils, mais par moment la triangulation n'est pas correcte et je n'ai pas trouvé pourquoi. J'ai trouvé une source similaire sur planete code source (http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=35722&lngWId=1) qui n'est pas capable non plus de trianguler le domaine qui me pose problème.

Dans l'apli que je poste, vous trouverez le mode d'emploi sous forme de label sur la forme et deux boutons qui charge un domaine. L'un charge un domaine qui se triangule sans problème et l'autre charge le domaine qui me pose problème. Comme le but de ce code est de faire un modeleur 3D simplisimme, je ne pense par corriger le problème car les formes les plus conventionelles sont triangulées.

J'avoue un peu honteu que c'est un peu du barbar coding mais je suis assez limité par le temps. Les améliorations possibles seront: une gestion continue des triangles (adjacents...), permettre de trianguler des profils "percés"....

Conclusion :


Attention le code ne permet pas d'obtenir un maillage correct pour la résolution d'EDP par éléments finis, il faudrait rafiner le maillage... En revanche j'ai trouvé beaucoup de sources en C++ qui le permettent. Au début je pensais faire une DLL avec celles-ci mais je ne connais pas grand chose au C++ et j'ai jamais réussi à compiler quoi que ce soit.

Voila je crois que j'ai tout dis

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
63
Date d'inscription
dimanche 5 novembre 2000
Statut
Membre
Dernière intervention
1 décembre 2013

Voila je l'ai mis sur vbFrance tu peut aller voir (http://www.vbfrance.com/code.aspx?ID=42528)
Messages postés
63
Date d'inscription
dimanche 5 novembre 2000
Statut
Membre
Dernière intervention
1 décembre 2013

Je me suis penché sur la question pendant quelque temps et j'ai croisé la triangulation avec les api region, du coup ca gere les croisement les intersections et si on veut ca gere des intrusion dans le polygon d'origine.
Seule soussi ca prend un peu de memoire et les coordonnées des region sont declarée en temps que Long.
Messages postés
59
Date d'inscription
lundi 21 août 2006
Statut
Membre
Dernière intervention
17 juillet 2009

A non elle ne fonctionne pas pour ce type de profil, c'est ce que j'ai appelé les domaines "troués" ou "perés". En revanche le code est "facilement" modifiable pour qu'il le fasse.

C'est ni plus ni moins qu'un forçage de frontière. Il est possible d'utiliser l'algorithme de Borouchaki (implémenté dans le code que j'ai modifié et qui consiste à inverser la diagonale d'un couple de triangle coupant une frontière). Le plus difficile étant de savoir si la frontière est externe et interne, mais je pense qu'il faut chercher du coté de: "recherche de sous domaines de maillage."

Sinon si tu es intéressé par le maillage 3D (volumes fini ou surfacique) j'ai trouvé beaucoup de source en C++
Messages postés
345
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
21 mars 2008
1
oui mais je ne suis pas certain que ta méthode fonctionne avec une ou des frontières intérieurs ?
Messages postés
59
Date d'inscription
lundi 21 août 2006
Statut
Membre
Dernière intervention
17 juillet 2009

Pour le 3D tout dépend de ce que tu veux faire, il est vrai que le code ne géner pas directement un maillage 3D mais par exemple pour un cube, tu dessine un carré en x et y tu le maille avec le code et tu créer "à la main" les triangles sur l'axe des Z.

Cette méthode fonctionne quelque soit l'esquisse de départ en x y. C'est ce que je pense faire pour mon modeleur.

Sinon oui c'est vrai que pour les frontières formant un angle très faible le code ne fonctionne pas.
Afficher les 8 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.