Dessin en trois dimensions
GW-Basic, utilisé par PC-Basic
Programme avec Graphique et Texte
Nous avons étudié de nombreux logiciels de dessin jusqu'à présent, mais ils avaient tous un point commun : toutes les images étaient en deux dimensions. Ajoutons-y une dimension.
Gérer les trois dimensions sur un écran d'ordinateur est un peu délicat, car l'écran lui-même ne projette des images qu'en deux dimensions.
Rappelons que, dans une section précédent, nous avons étudié la rotation d'images à l'aide de fonctions trigonométriques : toute rotation d'un angle de θ autour de l'origine est donnée par:
(x • cosθ - y • sinθ, x• sinθ + ycosθ)
Mais en trois dimensions, il faut tenir compte d'un troisième axe, l'axe z, orthogonal (perpendiculaire) aux deux autres axes, x et y.
Pour visualiser les trois axes,
vous pouvez pointer votre pouce droit vers le haut, votre index vers l'extérieur
et votre majeur vers la paume ; c'est la règle de la main droite, une méthode
rapide pour orienter les trois axes.
L'astuce pour faire pivoter des
objets en trois dimensions consiste à les faire pivoter autour d'un axe à la
fois.
Par exemple, pour faire pivoter un objet autour de l'axe x en trois dimensions, il suffit d'obtenir les nouvelles coordonnées y et z (puisque x reste constant) :
(x , z • sinθ + y • cosθ, z • cosθ — y • sinθ)
Et si c'est la rotation de l'axe y que nous recherchons, la formule du triplet ordonné ressemble à ceci :
(x • cosθ - z - sinθ , y , x • sinθ + z • cosθ)
De même, pour la rotation autour de l'axe z, on obtient:
(y • sinθ + x • cosθ , y • cosθ - x • sinθ , z)
Voilà pour les mathématiques de la rotation.
Mais il reste une question en suspens : projeter un monde tridimensionnel sur un écran bidimensionnel ; c'est ce qu'on appelle la « translation ».
(x • scalefact / z , y • scalefact / z)
Le facteur d'échelle ci-dessus doit être d'environ 256 pour éviter autant de distorsion que possible.
Exécutez 3DPLOT.BAS pour mettre à l'épreuve toute cette théorie mathématique.
Déplacez le curseur de dessin avec le pavé numérique et utilisez la barre d'espace pour définir les sommets d'une image filaire tridimensionnelle.
Vous pouvez ajuster l'image (ainsi que le curseur) avec J, K, I ou M, et modifier la couleur des lignes en appuyant sur P.
Pour faire pivoter l'un des trois axes, appuyez simplement sur x, y ou z (les majuscules augmentent l'angle ; les minuscules le diminuent).
Taper R réinitialise immédiatement l'image aux valeurs par défaut.
Enfin, une fois le dessin terminé, appuyez sur la touche ÉCHAP pour afficher à l'écran la liste des coordonnées de votre image filaire.
Au début, plusieurs options s'offrent à vous : l'affichage de l'écran, les coordonnées de départ et le facteur d'échelle. Il faut tâtonner pour déterminer les coordonnées de départ les plus pertinentes, et encore plus le facteur d'échelle.
Ensuite, aux lignes 15 à 50, plusieurs tableaux sont créés et les variables initialisées. Lisez attentivement les commentaires codés.
Comme d'habitude, une touche INKEY$ gère les entrées utilisateur et envoie le programme aux sous-routines de rotation et de mouvement.
Appuyer sur ÉCHAP invite 3DPL0T.BAS à saisir un programme à l'écran avec les coordonnées de l'image filaire que vous venez de dessiner, tout en vidant la file d'attente de 3DPL0T.BAS dans l'interpréteur (voir les lignes 5000 à 5050).
3DPLOT.BAS n'est pas encore prêt pour le grand public : il présente de nombreuses bizarreries d'affichage, outre la limitation à trente coordonnées par image filaire.
Pour améliorer le programme, vous pourriez vous procurer un bon livre sur la programmation graphique tridimensionnelle, comme High-Performance CAD Graphics in C (1986) de Lee Adams, qui présente non seulement la théorie mathématique sous-jacente à la pratique, mais fournit également des exemples de code pertinents. Le livre d'Adams (et il en a d'autres, si vous parvenez à les trouver) est particulièrement remarquable ; les programmes C peuvent, avec un peu de réflexion et d'attention, être convertis en GW-BASIC.
Le livre d'Adams, ainsi qu'un ouvrage complet comme Introduction to Computer Graphics (1993) de James D. Foley et al., ne vous aideront pas seulement à transformer 3DPLOT. BAS dans un programme plus utile, mais vous fournira également les bases de codage pour créer un logiciel tridimensionnel GW-BASIC plus puissant.