ScSami
Messages postés
1488
Date d'inscription
mercredi 5 février 2003
Statut
Membre
Dernière intervention
3 décembre 2007
24
5 janv. 2006 à 10:13
Dans quel domaine ??? Tu parles de quoi exactement ???
Pi dans quel langage tu codes... et sous quelle version ???
Tu sais, on est pas dans ta tête pour deviner ce qui s'y trouve!!!
Mais bon, si tu veux parler de dessin vectoriel en 3D isométrique (à deux fuiantes parallèles donc), il n'y a pas de fonction toute faite (sauf peut-être via DirectX mais là, c'est une autre affaire!!!). Tu dois te débrouiller tout seul... ce qui, entre nous, n'est pas une grande affaire!
Il faut considérer un univer carré dont le point 0 se trouve sur ton écran en bas au centre. Ensuite, évidemment (c'est d'ailleurs tout le problème de la 3D iso!!!), il y a un rapport entre l'axe des X et celui des Y car s'il est de 1/1, certaines choses seront cachés. Mais bon, de toutes façons, certaines choses seront quand même cachées!!! En joueant sur ce rapport tu peux simuler une rotation. Je dis bien simuler.
N'empêche que la 3D normale est presque plus facile à implémenter... Cherche sur ce site et tu trouveras plein de sources... Rien qu'une des mienne (3DballsClock) utilise un début de 3D classique.
D'ailleurs, tout le problème de la 3D iso est de savoir si tu veux te contenter de fils de fer où si tu veux des graphs 2D. Car l'approche n'est pas tout à fait la même dans les deux cas!!! En 3D fil de fer, ce n'est que du vectoriel, autrement dit, des petites équations de niveau 4ème scolaire. En revanche, si tu veux de la 3D iso graphique, tu dois aborder le travail d'une autre manière : en 2D. Autrement dit, empiler, selon un ordre précis, une succession d'images demies transparentes (enfin, selon la technique évidemment!). Du coup, ton rapport x/y se devra d'être toujours fix.
L'équation doit se présenter à peu prêt comme ça :
' grf est soit Picture1, soit "Me" selon que tu dessines sur une PictureBox ou directement sur la fenêtre !!!
CentreX = grf.Width / 2 'Centre horizontale
CentreY = grf.Height 'En bas de l'écran
RapportXY = 1 'A toi de gérer correctement les rapports (parce qu'en fait, ils sont plusieurs ;-) [héhé, je vais quand même pas tout te donner tout de même!]
For t = 1 To NombreDePoints
'Lecture des points... selon ta technique... dans un fichier ou non...
...
'xxx, yyy, zzz sont les coordonnées 3D du point en cours de traitement...
'xx et yy étant les coordonnées 2D (celles à afficher) de ce même point
xx = CentreX + (xxx * RapportXY) - (yyy * RapportXY)
' î_ autrement dit, on part d'abord à droite sur l'axe des X puis repart à gauche sur l'axe des Y (soustraction)
yy = CentreY + (xxx * RapportXY) + (yyy * RapportXY) + (zzz * RapportZ)
grf.Pset xx, yy
Next t
Cela répond-t-il à ta question ???
Enjoy
<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )