Algorithme : un triangle plein [VB, C, ...]

Fermé
commentcamarcheeay Messages postés 667 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 30 mars 2020 - 9 août 2010 à 15:17
commentcamarcheeay Messages postés 667 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 30 mars 2020 - 10 août 2010 à 10:21
Résumé:
Je cherche un algorithme pour dessiner des surfaces géométriques simples comme un triangle à partir des coordonnées de ses sommets. Que le code soit en n'importe quel langage, j'essaierai de l'adapter pour VB.


___________________

Bonjour,

J'avais essayé de trouver des informations et des cours sur l'utilisation des librairies DirectX afin de réaliser quelques dessins de base, mais apparemment, peu de gens savent manipuler ces outils et je n'ai pas eu satisfaction.
Je veux essayer de contourner cela en utilisant les composants basiques tels que le PictureBox. Ces contrôles ne savent pas dessiner des surfaces pleines a part les rectangles. Les autres formes doivent se dessiner apparemment ligne par ligne ou pixel par pixel via un algorithme.
Je vous demande alors de m'inspirer ou me guider vers un algorithme ou une méthode pour pouvoir dessiner des formes géométriques simples pleines. A priori, le triangle en est un élément de base. Si j'arrive à trouver l'algorithme qui dessine un triangle à partir des coordonnées de ses sommets, une grandes partie de mes questions de dessin va être résolue.
Le langage de programmation que j'utilise est le VB. Mais je peux avoir l'algorithme sous n'importe quel langage, je me débrouillerai pour l'adapter.

Je compte sur votre aide et merci d'avance!

__________________


A voir également:

1 réponse

Hello,
Voici un algorithme qui fonctionne pour dessiner n'importe quel polygone PLEIN.

minX est le X minimal de tous les sommets du polygone, maxX est le maximal, et pareil avec minY et maxY.
Donc en fait tu obtiens les coordonnées du carré qui contient ce polygone.

Ensuite, il faut tester chaque point de ce carré un par un, pour savoir si il est à l'intérieur du polygone.
Pour celà, il faut considérer la droite horizontale D allant du point en question jusqu'a l'extrémité droite du carré ;
Ensuite compter combien de côtés du polygone cette droite coupe.

Si elle en coupe un nombre impair, alors le point est à l'intérieur -> on le colorie.
Si elle en coupe un nombre pair, le point est à l'extérieur, on ne colorie pas.

Il y a peut être plus facile si c'est juste un triangle...

En espèrant avoir été clair...
Cordialement, M.
1
commentcamarcheeay Messages postés 667 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 30 mars 2020 86
10 août 2010 à 10:15
C'est ingénieux comme solution!
Il restera à gérer le cas particulier où la droite venant du point en question coupe une intersection de deux droites passant par trois sommets successifs ou qu'elle coupe une droite en un segment. Mais c'est une piste à voir.
Merci beaucoup!
0
commentcamarcheeay Messages postés 667 Date d'inscription mercredi 24 février 2010 Statut Membre Dernière intervention 30 mars 2020 86
10 août 2010 à 10:21
Dès que je mette en place cet algorithme je vous le ferai savoir.
Je me demande par contre si cet algorithme est le plus rapide. Travailler en pixels risque de retarder un peu l'affichage. Je l'ai expérimenté sous l'algorithme qui colorie l'intérieur d'une forme limitée par des couleurs qui l'entourent (comme le seau de peinture dans paint). Avec un algorithme qui fonctionne en pixels, cela se fait en défilement lent.
Je ne peux pas affirmer maintenant, il faut expérimenter.
0