Pour dessiner une vue en perspective, nous pouvons dessiner une scène comme celle décrite dans la figure suivante sur du papier graphique et projeter toutes les lignes parallèles afin qu’elles se rencontre en un point éloigné, appelé le « point de fuite ».
Les coordonnées X et Y des objets sont alors calculées et relevées. De cette manière, nous pouvons afficher une vue en perspective de n’importe quelle scène dessinée sur papier graphique. Mais chaque modification de la scène et chaque nouvelle scène implique que nous répétions le processus dans son intégralité à partir du papier graphique.
Une autre méthode pour afficher la perspective consiste à utiliser, dans le programme d’impression, des équations de transformations pour la perspective. Ceci nous procure une plus grande souplesse. On peut alors projeter les scènes animées en perspective, et nous pouvons introduire des schémas répétés en perspective sans avoir à déterminer manuellement la vue à chaque affichage d’un schéma fréquent. Les coordonnées générales de l’église dessinée dans notre exemple peuvent être définies une fois pour toutes, pour être ensuite relevées dans leur taille, relativement à leur profondeur.
Pour tout point d’une vue en trois dimensions de coordonnées (X, Y, Z), la nouvelle position sur l’écran (XP, YP) qui tient compte de la perspective est calculée de la manière suivante :
XP = XV + ( XV – X)*ZV / (Z – ZV)
YP = YV + (YV – Y)*ZV/ (Z – ZV)
où le point (XV, YV, ZV) est la position que nous voyons sur l’écran. Le point (XV, YV) est, sur l’écran, le point de fuite pour la vue en perspective. La figure suivante illustre les relations entre les différentes valeurs des coordonnées avec une vue de côté de l’écran.
Pour les points tels que Z = 0, il n’y a pas de changements de coordonnées : (XP, YP) = (X, Y). Pour les points du fond de l’écran ( Z > 0 ), la projection sur l’écran se rapproche du point de fuite au fur et à mesure que Z augmente. La coordonnée ZV doit toujours être un nombre négatif, étant donné que nous regardons l’écran de devant. Les plus grands valeurs de ZV provoquent une perspective moindre (convergence moins rapide des lignes parallèles). Si nous rapprochons le point de fuite de l’écran, nous augmentons la perspective des objets en dessinant une plus grande convergence des droites parallèles.
Il ne reste plus ensuite qu’à convertir les coordonnées en valeur absolue (supprimer en quelque sorte le signe négatif d’un nombre) avec la fonction suivante :
XP = Math.abs(XP);
YP = Math.abs(XP);
Ensuite, à arrondir les coordonnées en valeur absolue avec la fonction suivante :
XP = Math.round(XP);
YP = Math.round(YP);
Et enfin à afficher sur la toile le point (XP, YP) ainsi obtenu.