Comment calculer la coordonnée z en projection perspective. Propriétés géométriques de plusieurs images

À un moment donné, tout développeur dans le domaine de l'infographie se pose une question : comment fonctionnent ces matrices prometteuses ? Parfois, la réponse est très difficile à trouver et, comme cela arrive généralement, la majorité des développeurs abandonnent à mi-chemin.

Ce n'est pas une solution au problème ! Trouvons-le ensemble !

Soyons réalistes avec un parti pris pratique et prenons comme sujet de test Versions OpenGL 3.3. À partir de cette version, chaque développeur doit implémenter le module de manière indépendante opérations matricielles. Super, c'est ce dont nous avons besoin. Décomposons notre tâche difficile et soulignons les points principaux. Quelques faits tirés de la spécification OpenGL :

  • Les matrices sont stockées en colonnes (colonne majeure) ;
  • Coordonnées homogènes ;
  • Volume de découpage canonique (CVV) dans un système de coordonnées gaucher.
Il existe deux manières de stocker des matrices : colonne majeure et ligne majeure. Lors de conférences sur algèbre linéaire le schéma de ligne principale est utilisé. Par dans l'ensemble La représentation des matrices en mémoire n'a pas d'importance, car une matrice peut toujours être convertie d'une représentation à une autre par simple transposition. Et comme il n'y a pas de différence, nous utiliserons pour tous les calculs ultérieurs des matrices classiques de lignes principales. Lors de la programmation d'OpenGL, il existe une petite astuce qui permet d'éviter de transposer des matrices tout en conservant les calculs classiques de lignes principales. La matrice doit être transférée telle quelle au programme shader, et dans le shader, la multiplication ne doit pas être effectuée entre un vecteur et une matrice, mais entre une matrice et un vecteur.

Les coordonnées homogènes ne constituent pas un système très délicat avec un certain nombre de règles simples sur la conversion de coordonnées cartésiennes conventionnelles en coordonnées homogènes et vice versa. Une coordonnée homogène est une matrice de lignes de dimension . Pour convertir une coordonnée cartésienne en coordonnée homogène, il faut X, oui Et z multiplier par n'importe quel nombre réel w(sauf 0). Ensuite, vous devez écrire le résultat dans les trois premiers composants, et le dernier composant sera égal au multiplicateur w. Autrement dit:
- Coordonnées cartésiennes
w– nombre réel différent de 0

- coordonnées homogènes

Un petit truc : si w est égal à un, alors tout ce qui est nécessaire pour la traduction est de transférer les composants X, oui Et z et attribuez-en un au dernier composant. Autrement dit, obtenez une matrice de lignes :

Quelques mots sur la qualité zéro w. Du point de vue des coordonnées homogènes, cela est tout à fait acceptable. Les coordonnées homogènes permettent de distinguer les points et les vecteurs. Dans un système de coordonnées cartésiennes, une telle division est impossible.

- point où ( x, y, z) - Coordonnées cartésiennes

- vecteur, où ( x, y, z) – rayon vecteur

La translation inverse d'un sommet de coordonnées homogènes en coordonnées cartésiennes s'effectue comme suit. Tous les composants d'une matrice de lignes doivent être divisés par le dernier composant. Autrement dit:

- coordonnées homogènes
- Coordonnées cartésiennes

La principale chose que vous devez savoir est que tous les algorithmes de découpage et de rastérisation OpenGL fonctionnent en coordonnées cartésiennes, mais avant cela, toutes les transformations sont effectuées en coordonnées homogènes. Le passage des coordonnées homogènes aux coordonnées cartésiennes s'effectue matériellement.

Le volume de découpage canonique (CVV) est l'une des parties les moins documentées d'OpenGL. Comme on peut le voir sur la Fig. 1 CVV est un cube aligné sur un axe centré à l'origine et dont la longueur d'arête est égale à deux. Tout ce qui relève de la zone CVV est soumis à la rastérisation, tout ce qui se trouve en dehors de la zone CVV est ignoré. Tout ce qui échappe partiellement au CVV est soumis à des algorithmes d’élagage. La chose la plus importante que vous devez savoir est que le système de coordonnées CVV est gaucher !


Riz. 1. Volume de découpage canonique OpenGL (CVV)

Système de coordonnées gaucher ? Comment est-ce possible, puisque la spécification d'OpenGL 1.0 indique clairement que le système de coordonnées utilisé est droitier ? Voyons cela.


Riz. 2. Systèmes de coordonnées

Comme on peut le voir sur la Fig. Les 2 systèmes de coordonnées diffèrent uniquement dans la direction de l'axe Z. OpenGL 1.0 utilise un système de coordonnées utilisateur droitier. Mais le système de coordonnées CVV et le système de coordonnées utilisateur sont deux choses complètement différentes. De plus, depuis la version 3.3, il n'existe plus système standard Coordonnées OpenGL. Comme mentionné précédemment, le programmeur lui-même implémente le module d'opérations matricielles. Formation de matrices de rotation, formation de matrices de projection, recherche d'une matrice inverse, multiplication matricielle sont ensemble minimum opérations incluses dans le module d’opérations matricielles. Deux questions logiques se posent. Si le volume de visibilité est un cube dont la longueur des bords est égale à deux, alors pourquoi une scène de plusieurs milliers d'unités est-elle visible à l'écran ? À quel moment le système de coordonnées utilisateur est-il converti en système de coordonnées CVV ? Les matrices de projection sont précisément l’entité qui traite ces questions.

L'idée principale de ce qui précède est que le développeur lui-même est libre de choisir le type de système de coordonnées utilisateur et doit décrire correctement les matrices de projection. Ceci complète les faits sur OpenGL et il est temps de tout mettre en place.

L’une des matrices les plus courantes et les plus difficiles à comprendre est la matrice de transformation de perspective. Alors, quel est le rapport avec CVV et le système de coordonnées utilisateur ? Pourquoi les objets deviennent-ils plus petits à mesure qu’ils s’éloignent de l’observateur ? Pour comprendre pourquoi les objets deviennent plus petits à mesure que la distance augmente, regardons les transformations matricielles modèle tridimensionnel pas à pas. Ce n'est un secret pour personne que tout modèle tridimensionnel consiste en une liste finie de sommets qui subissent des transformations matricielles de manière totalement indépendante les uns des autres. Afin de déterminer la coordonnée d'un sommet tridimensionnel sur un écran de moniteur bidimensionnel, vous devez :

  1. Convertir la coordonnée cartésienne en coordonnée homogène ;
  2. Multipliez la coordonnée homogène par la matrice du modèle ;
  3. Le résultat est multiplié par la matrice de vue ;
  4. Multipliez le résultat par la matrice de projection ;
  5. Convertissez le résultat des coordonnées homogènes en coordonnées cartésiennes.
La conversion de coordonnées cartésiennes en coordonnées homogènes a été discutée précédemment. La signification géométrique de la matrice du modèle est de transférer le modèle d'un système de coordonnées local vers un système de coordonnées global. Ou, comme on dit, déplacez les sommets hors de l'espace modèle vers l'espace monde. Disons simplement qu'un objet tridimensionnel chargé à partir d'un fichier est situé dans l'espace modèle, où les coordonnées sont mesurées par rapport à l'objet lui-même. Ensuite, à l'aide de la matrice du modèle, le modèle est positionné, mis à l'échelle et pivoté. En conséquence, tous les sommets du modèle 3D reçoivent des coordonnées homogènes réelles dans la scène 3D. L'espace modèle par rapport à l'espace mondial est local. Depuis l'espace modèle, les coordonnées sont transférées vers l'espace mondial (du local au global). A cet effet, une matrice modèle est utilisée.

Passons maintenant à la troisième étape. C’est là que l’espace de visualisation entre en jeu. Dans cet espace, les coordonnées sont mesurées par rapport à la position et à l'orientation de l'observateur comme s'il était le centre du monde. L'espace de visualisation est local par rapport à l'espace mondial, les coordonnées doivent donc y être saisies (et non supprimées, comme dans le cas précédent). Direct transformation matricielle supprime les coordonnées d'un certain espace. Pour les y introduire, au contraire, il faut inverser la transformation matricielle, donc la transformation de type est décrite par la matrice inverse. Comment obtenir cette matrice inverse ? Tout d’abord, obtenons la matrice de l’observateur direct. Qu'est-ce qui caractérise un observateur ? L'observateur est décrit par la coordonnée dans laquelle il se trouve et les vecteurs de direction de visualisation. L'observateur regarde toujours dans la direction de son axe local Z. L'observateur peut se déplacer dans la scène et faire des virages. À bien des égards, cela ressemble à la signification de la matrice du modèle. En gros, c’est comme ça. Cependant, pour un observateur, l'opération de mise à l'échelle n'a donc aucun sens entre la matrice modèle de l'observateur et la matrice modèle objet tridimensionnel Vous ne pouvez pas mettre de signe égal. La matrice modèle de l'observateur est la matrice directe souhaitée. En inversant cette matrice, on obtient la matrice de vue. En pratique, cela signifie que tous les sommets en coordonnées homogènes globales recevront de nouvelles coordonnées homogènes par rapport à l'observateur. En conséquence, si l'observateur voyait un certain sommet, alors la valeur de la coordonnée homogène z d'un sommet donné dans l'espace de vue, il y aura certainement nombre positif. Si le sommet était derrière l'observateur, alors la valeur de sa coordonnée homogène z dans l'espace de vue sera certainement un nombre négatif.

La quatrième étape est la plus étape intéressante. Les étapes précédentes ont été discutées de manière si détaillée intentionnellement afin que le lecteur ait image complète sur tous les opérandes de la quatrième étape. Lors de la quatrième étape, les coordonnées homogènes sont transférées de l'espace de visualisation vers l'espace CVV. Encore une fois, il est souligné que tous les sommets potentiellement visibles auront valeur positive coordonnées homogènes z.

Considérons une matrice de la forme :

Et un point dans l’espace homogène de l’observateur :

Multiplions la coordonnée homogène par la matrice en question :

Convertissons les coordonnées homogènes résultantes en coordonnées cartésiennes :

Disons qu'il y a deux points dans l'espace de visualisation avec les mêmes coordonnées X Et oui, mais avec des coordonnées différentes z. Autrement dit, l’un des points est derrière l’autre. En raison de la distorsion de la perspective, l'observateur doit voir les deux points. En effet, il ressort clairement de la formule qu'en raison de la division par la coordonnée z, la compression se produit jusqu'au point d'origine. Comment plus de valeur z(plus le point est éloigné de l'observateur), plus la compression est forte. C'est l'explication de l'effet de perspective.

La spécification OpenGL indique que les opérations de découpage et de rastérisation sont effectuées en coordonnées cartésiennes et que le processus de conversion de coordonnées homogènes en coordonnées cartésiennes est effectué automatiquement.

La matrice (1) est un modèle pour une matrice de projection en perspective. Comme mentionné précédemment, la tâche de la matrice de projection consiste en deux points : définir un système de coordonnées utilisateur (gaucher ou droitier), transférer le volume de visibilité de l'observateur vers CVV. Dérivons une matrice de perspective pour un système de coordonnées utilisateur gaucher.

La matrice de projection peut être décrite à l'aide de quatre paramètres (Fig. 3) :

  • Angle de vision en radians ( fovy);
  • Ratio d'aspect ( aspect);
  • Distance au plan de détourage le plus proche ( n);
  • Distance au plan de détourage éloigné ( F).


Riz. 3. Volume de visibilité en perspective

Considérons la projection d'un point dans l'espace de l'observateur sur le bord avant de la coupure du volume perspective de visibilité. Pour plus de clarté, sur la Fig. 4 montre une vue latérale. Il convient également de prendre en compte que le système de coordonnées utilisateur coïncide avec le système de coordonnées CVV, c'est-à-dire que le système de coordonnées gaucher est utilisé partout.


Riz. 4. Projeter un point arbitraire

Basé sur les propriétés triangles similaires les égalités suivantes sont valables :

Exprimons yꞌ et xꞌ :

En principe, les expressions (2) suffisent pour obtenir les coordonnées des points de projection. Cependant, pour filtrer correctement des objets tridimensionnels, vous devez connaître la profondeur de chaque fragment. Autrement dit, il faut stocker la valeur du composant z. C'est la valeur utilisée pour les tests de profondeur OpenGL. En figue. 3 il est clair que la valeur zꞌ ne convient pas comme profondeur de fragment, car toutes les projections ponctuelles peuvent même valeur zꞌ. La sortie de cette situation consiste à utiliser ce qu'on appelle la pseudo-profondeur.

Propriétés de pseudo-profondeur :

  1. La pseudo-profondeur est calculée en fonction de la valeur z;
  2. Plus le point est proche de l'observateur, moins la pseudo-profondeur a de valeur ;
  3. Tous les points situés sur le plan avant du volume de visibilité ont une valeur de pseudo-profondeur de -1 ;
  4. Tous les points situés sur le plan de coupe éloigné du volume de visibilité ont une valeur de pseudo-profondeur de 1 ;
  5. Tous les fragments se trouvant à l'intérieur du volume de visibilité ont une valeur de pseudo-profondeur comprise dans la plage [-1 1].
Dérivons la formule par laquelle la pseudo-profondeur sera calculée. Prenons comme base l'expression suivante :

Chances un Et b doit être calculé. Pour ce faire, on utilise les propriétés des pseudo-profondeurs 3 et 4. On obtient un système de deux équations à deux inconnues :

Additionnons les deux parties du système et multiplions le résultat par le produit fn, dans lequel F Et n ne peut pas être égal à zéro. On a:

Ouvrons les parenthèses et réorganisons les termes pour que seule la partie avec UN, et à droite seulement avec b:

Remplaçons (6) par (5). Convertissons l'expression en une fraction simple :

Multipliez les deux côtés par -2fn, dans lequel F Et n ne peut pas être égal à zéro. Présentons-en des similaires, réorganisons les termes et exprimons b:

Remplaçons (7) par (6) et exprimons un:

En conséquence, les composants un Et b sont égaux:

Remplaçons maintenant les coefficients obtenus dans la matrice de la pièce (1) et voyons ce qui arrive aux coordonnées z pour un point arbitraire dans l'espace homogène de l'observateur. La substitution s'effectue comme suit :

Laissez la distance au plan de coupe avant n est égale à 2, et la distance au plan de détourage éloigné F est égal à 10. Considérons cinq points dans l’espace homogène de l’observateur :

Arrangement mutuel points et volume de visibilité
Point Signification Description
1 1 Le point est situé devant le plan de détourage avant du volume de visibilité. Ne passe pas la rastérisation.
2 2 Le point est situé sur le bord avant de la limite du volume de visibilité. En cours de rastérisation.
3 5 Le point est situé entre le bord de découpage avant et le bord de découpage éloigné du volume de visibilité. En cours de rastérisation.
4 10 Le point est situé à l’extrémité de la limite du volume de visibilité. En cours de rastérisation.
5 20 Le point est situé au-delà du bord éloigné de la limite du volume de visibilité. Ne passe pas la rastérisation.

Multiplions tous les points par la matrice (8), puis convertissons les coordonnées homogènes résultantes en Coordonnées cartésiennes . Pour ce faire, nous devons calculer les valeurs de nouvelles composantes homogènes Et .
Point 1 :

noter que coordonnée homogène parfaitement positionné dans CVV, et surtout, le test de profondeur OpenGL est désormais possible, car la pseudo-profondeur satisfait pleinement aux exigences du test.

Avec coordonnées z Nous l'avons compris, passons aux coordonnées X Et oui. Comme indiqué précédemment, tous volume prometteur la visibilité doit s'inscrire dans le CVV. La longueur du bord CVV est de deux. En conséquence, la hauteur et la largeur du volume de visibilité en perspective doivent être compressées à deux unités conventionnelles.

Nous avons à notre disposition un coin fovy et l'ampleur aspect. Exprimons la hauteur et la largeur en utilisant ces valeurs.


Riz. 5. Volume de visibilité

De la fig. 5, il est clair que :

Nous pouvons maintenant obtenir la vue finale de la matrice de projection en perspective pour un système de coordonnées gaucher personnalisé fonctionnant avec CVV OpenGL :

Ceci termine la dérivation des matrices.

Quelques mots sur DirectX – le principal concurrent d'OpenGL. DirectX ne diffère d'OpenGL que par les dimensions du CVV et son positionnement. Dans DirectX, CVV est cuboïde avec des longueurs axiales X Et ouiégal à deux, et le long de l'axe z la longueur est égale à un. Gamme X Et oui est [-1 1], et la plage zégal à . Quant au système de coordonnées CVV, DirectX, comme OpenGL, utilise un système de coordonnées gaucher.

Pour le retrait matrices prometteuses pour un système de coordonnées personnalisé pour droitier, vous devez redessiner la figure. 2, Fig. 3 et Fig. 4 en tenant compte de la nouvelle direction de l'axe Z. Les autres calculs sont complètement similaires, au signe près. Pour les matrices DirectX, les propriétés de pseudo-profondeur 3 et 4 sont modifiées pour s'adapter à la plage.

À ce stade, le sujet des matrices prometteuses peut être considéré comme clos.

Dans les projections centrales, les bords de l'objet affiché, parallèles au plan de l'image, sont représentés sans distorsion de forme, mais avec distorsion de taille.

Figure 24 Projections centrales d'un cube : a) un point, b) deux points, c) trois points.

Les projections centrales de tout ensemble de lignes parallèles qui ne sont pas parallèles au plan de l'image convergeront vers Point de fuite. Le point de fuite des lignes parallèles à l'un des axes de coordonnées est appelé point de fuite principal. Parce que Il y a trois axes de coordonnées, il ne peut donc y avoir plus de trois points de fuite principaux.

Selon l'emplacement des axes de coordonnées et du plan de l'image, il existe des projections centrales.

Point unique une projection est obtenue lorsque le plan de l'image coïncide avec (ou est parallèle à) l'un des plans de coordonnées. Autrement dit, un seul axe de coordonnées n’est pas parallèle au plan de l’image et possède un point de fuite principal.

Point à point une projection est obtenue lorsqu'un seul des axes de coordonnées est parallèle au plan de l'image. Les deux autres axes de coordonnées ne sont pas parallèles au plan de l’image et possèdent deux points de fuite principaux. Lors de la représentation d'objets situés à la surface de la Terre, on utilise le plus souvent la projection à deux points, dans laquelle le plan de l'image est parallèle. axe vertical coordonnées Les deux principaux points de fuite sont situés sur le même ligne horizontale– les lignes d'horizon (Fig. 6.5). À trois points projection, les trois axes de coordonnées ne sont pas parallèles au plan de l’image et, par conséquent, il existe trois points de fuite principaux.

Considérons plus en détail le cas de projection monopoint d'un point R.à l'avion z= 0 avec centre de projection AVEC, couché sur l'axe z(Fig. 25).

Point UN projeté sur l'écran comme UN. La distance entre l'observateur et le plan de projection est k. Il faut déterminer les coordonnées du point UNsur l'écran. Notons-les X e et oui e. De la similitude des triangles UN oui UN z N Et oui euh SUR nous trouvons que

(x.9)

de même pour x :

.

(x.10)

Riz. 25. Dérivation de formules de projection centrale.

Riz. 26. Une autre façon de calculer les coordonnées des points dans la projection en perspective centrale. N= (0,0,-Rappelons que k est la distance et que l'observateur est au point k un). Si le point d'observation est placé à l'origine des coordonnées et le plan de projection à une distance X euh, comme le montre la figure 26, alors les formules pour

,
et y prendra la forme :

(x.11)

Les formules (x.10) sont plus pratiques lorsqu'il est nécessaire de simplement rapprocher ou éloigner l'observateur du plan de projection. Les formules (x.11) nécessitent moins de temps de calcul en raison de l'absence d'opération d'addition. un, b, Considérons un point dans l'espace tridimensionnel ( c un/ Considérons un point dans l'espace tridimensionnel (, b/ Considérons un point dans l'espace tridimensionnel (). Si l'on imagine ce point comme une représentation homogène d'un point dans un espace bidimensionnel, alors ses coordonnées seront ( un, b, Considérons un point dans l'espace tridimensionnel (). En comparant ces coordonnées avec le deuxième type de formules dérivées pour la projection centrale en perspective, il est facile de remarquer que la représentation bidimensionnelle d'un point avec des coordonnées ( z) ressemble à sa projection sur un plan

= 1, comme le montre la fig. 27. un, b, Considérons un point dans l'espace tridimensionnel ( Riz. 27. Projection d'un point (

) au plan z = 1. w De même, en considérant l'utilisation de coordonnées homogènes pour les vecteurs dans un espace tridimensionnel, on peut représenter l'espace tridimensionnel comme une projection d'un espace quadridimensionnel sur un hyperplan. X, oui, z)(= 1 si (, wx, Wyoming, w) = (X, oui, z, 1). .

wz

En coordonnées homogènes, la transformation de la perspective centrale peut être déterminée par une opération matricielle. Cette matrice s'écrit : Montrons que cette matrice détermine la transformation d'un point objet spécifié en coordonnées homogènes en un point de projection perspective (également en coordonnées homogènes). Laisser= (X, oui, z p ) – pointez sur espace tridimensionnel . Sa présentation homogène= (= 1 si (, wx, Wyoming, w v ). Multiplier v par:

P.

cela répète exactement les formules (x.10) dérivées pour la perspective centrale.

Pour créer images stéréo deux projections centrales sont utilisées, dont les centres coïncident avec l'emplacement des yeux d'un observateur hypothétique, c'est-à-dire ils sont situés à une certaine distance les uns des autres sur une ligne droite parallèle au plan de l'image. Une fois la projection terminée, deux images de l'objet sont obtenues - pour les yeux gauche et droit. Le périphérique de sortie doit fournir ces images à chaque œil de l'utilisateur séparément. A cet effet, un système de filtres colorés ou polarisants peut être utilisé. Des périphériques de sortie plus complexes (tels que des casques) présentent chacune des images sur des écrans séparés pour chaque œil.

Toutes les projections évoquées ci-dessus appartiennent à la classe des projections géométriques plates, car la projection se fait sur un plan (plutôt que sur une surface courbe) et en utilisant un ensemble de lignes droites (plutôt que des courbes). Cette classe de projections est le plus souvent utilisée dans infographie. En revanche, la cartographie utilise souvent des projections non planaires ou non géométriques.

Les types de projection en perspective proposés dans la section précédente étaient peu informatifs, puisque dans tous les cas, une seule face du cube était visible depuis chaque centre de projection. Pour qu’un observateur puisse percevoir la forme tridimensionnelle d’un objet à partir d’une seule vue, plusieurs faces de cet objet doivent être visibles. Pour des objets simples comme un cube, au moins trois faces doivent être visibles. Une vue avec plusieurs faces peut être obtenue à partir d'une projection en perspective à un seul point avec un centre fixe et un plan de projection, perpendiculaire à la direction coup d'œil, si l'objet a été précédemment transféré et/ou pivoté. Une vue réaliste est alors obtenue, sauf si le centre de la projection est trop proche du sujet.

Riz. 3-31 Perspective à trois points, (a) Cube original ; (b) projection en perspective sur un plan ; (c) cube déformé.

Pour commencer, considérons un simple transfert d'un objet suivi d'une projection en un point sur un plan et avec le centre de la projection au point . La transformation recherchée s'écrit sous la forme

, (3-59)

Riz. 3-32 Projection en perspective à un seul point avec translation dans les directions.

L'équation (3-59) ainsi que la Fig. 3-32 montre cette translation dans des directions et ouvre des faces supplémentaires de l'objet. Une translation dans ces deux directions est nécessaire pour exposer les trois faces d’un simple objet en forme de cube. En figue. La figure 3-32 montre les résultats du transfert d'un cube centré par rapport à l'origine le long d'une ligne droite et d'une projection en un seul point sur un plan. A noter que pour la face avant le taille réelle et la forme.

L'équation (3-59) montre également que le transfert le long de l'axe, c'est-à-dire vers ou loin du centre de la projection, entraîne un changement d'échelle évident (dû à l'élément ). Cet effet correspond à la réalité physique, puisque les objets situés plus loin de l'observateur paraissent plus petits. Notez que lorsque le centre de projection s'approche de l'infini, le phénomène de mise à l'échelle disparaît. Cet effet est représenté schématiquement sur la Fig. 3-33. Comme le montre cette figure, l'objet peut se trouver de chaque côté du centre de la projection. Si l'objet et le plan de projection sont du même côté du centre, alors, comme le montre la Fig. 3-33, une image directe est obtenue. Si l'objet et le plan de projection se trouvent le long différents côtésà partir du centre, une image inversée est obtenue.

Riz. 3-33 Effet d'échelle lors du déplacement le long d'un axe pour une projection en perspective à un seul point.

En figue. La figure 3-34 montre les résultats du déplacement d'un objet dans les trois directions. Ici, le cube se déplace le long d'une ligne tridimensionnelle de à. Une augmentation évidente de la taille est perceptible, et dans tous les types, la préservation est perceptible vraie forme, mais pas la taille de la face avant.

Ces idées sont décrites plus en détail dans l’exemple.

Exemple 3-22 Projection en perspective à un seul point avec translation

Considérons un cube unitaire centré par rapport à l'origine avec les vecteurs de coordonnées suivants

.

Déplaçons le cube de 5 unités dans les directions et construisons une projection en perspective sur un plan dont le centre de la projection est à .

A partir de l'équation (3-59), nous obtenons la matrice de transformation générale

.

Riz. 3-34 Projection en perspective à un seul point combinée avec des traductions dans les directions , ,.

Coordonnées converties

.

L'objet en haut à droite de la Fig. La figure 3-32 illustre ce résultat.

Si l'objet d'origine a été déplacé de 5 unités dans les directions , , et qu'une projection en perspective à un point sur le plan a été construite avec le centre de projection en , alors il résulte de (3-59) que la matrice de transformation globale s'écrit comme

.

Notez l'échelle globale donnée par la valeur 0,75 dans l'élément inférieur droit de la matrice de transformation.

Les coordonnées converties sont

.

Le résultat est affiché sous la forme de l'objet en haut à droite sur la figure. 3-34.

Plusieurs bords seront également visibles si vous utilisez la rotation des objets. Une rotation révélera au moins deux faces d'un objet, tandis que deux ou plusieurs rotations autour d'axes différents révéleront au moins trois faces.

Matrice de transformation pour la rotation autour d'un axe d'un angle et la projection ultérieure en perspective d'un point unique sur un plan avec le centre de projection à :

. (3-60)

De même, la matrice de transformation pour la rotation autour d'un axe d'un angle et la projection ultérieure en perspective d'un point unique sur un plan avec le centre de projection en un point a la forme :

. (3-61)

Dans les deux équations (3-60) et (3-61), les deux éléments responsables de la transformation de perspective (perspective) dans la quatrième colonne de la matrice de transformation ne sont pas égaux à zéro. Alors on se retourne axe principal, perpendiculairement à cela L'axe sur lequel se trouve le centre de la projection équivaut à une transformation de perspective à deux points. Lors d'une rotation autour de l'axe sur lequel se trouve le centre de la projection, cet effet ne se produit pas. Notez que pour une rotation, l'élément de perspective pour l'axe de rotation reste inchangé, par exemple, dans les équations (3-60) et (3-61), les éléments et sont respectivement égaux à zéro.

DANS cas général la rotation autour de l'axe principal ne révèle pas le nombre de faces requis pour une représentation tridimensionnelle adéquate - au moins trois. Pour ce faire, il faut le combiner avec un mouvement le long de l'axe. Exemple suivant illustre cela.

Exemple 3-23 Projection en perspective à deux points utilisant la rotation autour d'un axe principal

Considérons la projection sur un plan dont le centre est la pointe du cube de la Fig. 3-35a, tourné autour de l'axe d'un angle pour que la face gauche s'ouvre, et déplacé par unités le long de manière à ce que la face supérieure s'ouvre.

En utilisant l'équation (3-38) avec , l'équation (3-47) avec et l'équation (3-14) avec , on obtient

.

Les coordonnées converties sont

.

Le résultat est présenté sur la Fig. 3-35b. La distorsion se produit parce que le centre de la projection est trop proche du cube.

Notons la convergence des axes parallèles et des droites vers des points de fuite situés sur l'axe.

De même, une transformation de perspective en trois points est effectuée en tournant autour de deux axes principaux ou plus, puis une transformation de perspective en un point. Par exemple, la rotation autour de l'axe, puis la rotation autour de l'axe et la projection en perspective sur un plan avec le centre de projection au point ont la matrice de transformation suivante

.

Le résultat est présenté sur la Fig. 3-36.

Riz. 3-36 Projection en perspective trois points avec rotation autour de deux axes.

A partir de ces résultats, il est clair qu'une transformation de perspective à un, deux ou trois points peut être construite à l'aide de rotations et de translation autour et le long des axes principaux, suivie d'une transformation de perspective à un seul point avec le centre de projection situé sur un des axes principaux. Ces résultats sont également valables pour la rotation autour d'un axe arbitraire dans l'espace. Par conséquent, lorsqu’il est utilisé dans système graphique paradigmes avec un centre de projection fixe et un objet manipulé, il faut assurer uniquement la construction d'une projection en perspective monopoint sur un plan avec le centre de projection sur l'axe.

Projections en perspective

Une projection en perspective plate est uniquement déterminée par la position du point d'observation et la distance qui le sépare du plan de projection (d). La position du point d'observation peut être spécifiée sous forme de vecteur V, reliant le point d'observation et l'origine du système de coordonnées tridimensionnelles à partir duquel la projection est effectuée. Le système de coordonnées tridimensionnelles à partir duquel la projection est effectuée est appelé système de coordonnées mondial.

Vecteur V peut être spécifié sous l’une des deux formes suivantes (Fig. 6.2‑1) :

1)c système polaire coordonnées via des paramètres :

Module du vecteur R V;

Q -angle entre axe de coordonnées Projection X et vectorielle V au plan de coordonnées XY du système de coordonnées mondial ;

Angle J entre le vecteur V et l'axe Z du système de coordonnées mondial ;

2) dans Système cartésien coordonnées grâce à des projections vectorielles V aux axes de coordonnées du système de coordonnées mondial :

V x – projection vectorielle Và l'axe X ;

V y – projection vectorielle Và l'axe X ;

V z – projection vectorielle V à l'axe X.


Riz.6.2 1

La tâche de projeter un objet graphique revient finalement à déterminer les coordonnées X,Y des points individuels de l'objet sur le plan de projection, qui sont initialement spécifiées par trois coordonnées dans le système de coordonnées mondial.

Détermination des coordonnées d'un point sur le plan de projection

Décomposons-le tâche commune projection en perspective sur deux problèmes de transformation de coordonnées :

Transformation pour passer du système de coordonnées mondial au système de coordonnées d'affichage

Transformations à partir desquelles système d'espèces coordonnées aux coordonnées sur le plan de projection.

Passer pour afficher le système de coordonnées

La transition vers le système de coordonnées de vue est illustrée dans la figure ci-dessous (Fig. 6.2‑2).

Le système de coordonnées de la vue est système tridimensionnel coordonnées avec les axes de coordonnées X in , Y in , Z in , ce qui est « pratique » pour une projection donnée, c'est-à-dire à partir duquel le passage à un système bidimensionnel sur le plan de projection (par exemple un écran) s'effectue le plus facilement. Pour ce type de projection en perspective, l'origine du repère de vue doit être au point E, son axe Z doit coïncider avec le vecteur de projection V, son axe X doit être projeté sur l'axe X e et son axe Y doit être projeté sur l'axe Y e.



Riz.6.2 2

Sur cette base, la transition du système de coordonnées mondial au système de coordonnées de vue peut être effectuée via la séquence suivante de transformations de base :

1) transfert du système de coordonnées mondial vers un vecteur V, grâce à quoi un système de coordonnées sera obtenu avec l'origine au point E et les axes de coordonnées X 1, Y 1, Z 1 (implémenté par la matrice T -1 (-V x, -V y, -V z) );

2) rotation du système résultant selon un angle (-(90 0 -q)) par rapport à son axe de coordonnées Z 1, ce qui permettra d'obtenir un système avec des axes de coordonnées X 2, Y 2, Z 2 (mis en œuvre par la matrice R z -1 (-( 90 0 -q)), dans laquelle le vecteur V est situé dans le plan de coordonnées Y 2, Z 2 ;

3) rotation du système résultant E, X 1, Y 1, Z 1 d'un angle ((180 0 - j)) par rapport à son axe de coordonnées X 2, ce qui donne un système avec des axes de coordonnées X 3, Y 3, Z 3 dont le début est au point E, (mis en œuvre par la matrice R x -1 (180 0 - j)), dans lequel le vecteur V est situé sur l'axe Z 3 ;

4) changer la direction de l'axe de coordonnées X 3, ce qui permettra d'obtenir le système de coordonnées de vue souhaité avec les axes de coordonnées X in, Y in, Z in (mis en œuvre par la matrice R (-x)).

Ainsi, compte tenu des quatre transformations de coordonnées de base, pour passer au système de coordonnées de vue, il est nécessaire d'utiliser le produit de matrices suivant :

Pour préciser les matrices utilisées, nous représentons tous leurs éléments à travers les fonctions trigonométriques sin j, cos j, sin q, cos q et introduisons la notation :

cosj= une ; péché j = b ; cos q = c; péché q = d;

u x = -r avant JC ; u y = -r bd ; u z =-r a .

Pour cela, présentons les matrices listées dans l’expression ci-dessus sous la forme suivante.

Matrice de transfert:

T -1 (ux x , u y , u z )= T (-ux x , -u y , -u z ).

Cette idée est légitime, puisque matrice inverse le transfert vers un vecteur équivaut à la matrice de transfert direct vers le même vecteur dans le sens opposé.

Compte tenu des notations introduites, nous aurons :

Matrices de rotation par rapport à l'axe Z 1 :

R z -1 (-(90 0 -Q))= R z (90 0 -Q),

et, étant donné que sin (90 0 -a)= cos a, on peut écrire :


Matrices de rotation par rapport à l'axe de coordonnées X 2 :

R x -1 ((180 0 -j))= R x (-(180 0 -j)) ,

et, en tenant compte du fait que sin (-(180 0 -j)) =- sin j, cos (-(180 0 -j)) =- cos j, nous avons :

Matrice pour changer la direction de l'axe de coordonnées X2 ressemble à :

Trouvons la matrice de transformation de vue R en :

Déterminons l'ordre de multiplication matricielle selon les parenthèses dans la notation :

Trouvons R1 :


Trouvons le produit :


Lors de la recherche de la matrice de transformation de vue R in, nous prenons en compte la nécessité d'étendre la matrice R 2 de la dimension 3 * 3 à la dimension 4 * 4 :


Ainsi, la matrice de transformation de vue a la forme :

(6.2-1)

Transition du système de vue aux coordonnées sur le plan de projection.

Pour terminer cette étape, utilisez la figure ci-dessous (Fig. 6.2‑3).


Les désignations suivantes sont utilisées dans la figure :

E – origine du système de coordonnées de vue avec les axes de coordonnées X in, Y in, Z in ;

Т1 – point dans le système de coordonnées de la vue, situé sur avion coordonné X à Z à ;

Т2 – un point dans le système de coordonnées de vue, situé sur le plan de coordonnées Y dans Z dans ;

D - distance entre l'origine du système de coordonnées de vue et le plan de projection ;

Xeuh, Ouieuh- axes du repère sur le plan de projection (sur l'écran).

De la figure ci-dessus, on peut voir que :

Cela implique la dépendance suivante des coordonnées d'un point sur l'écran sur les coordonnées de ce point dans le système de coordonnées de vue :

(6.2-2)

Ainsi, à l'aide de la matrice de transformation d'espèces R à , définie par l'expression (6.2-1), et des relations selon les expressions (6.2-2), il est possible de calculer les coordonnées points donnés sur le plan de projection en perspective.

Points et lignes de fuite

Dans une projection en perspective, le point de fuite de la droite AA' est le point du plan de projection vers lequel tend la projection du point « fuyant » vers l'infini le long de la droite AA'. Présenter signification géométrique points de fuite, considérons la figure ci-dessous (Fig. 6.2‑4).

Les symboles suivants sont utilisés dans la figure :

E - origine du système de coordonnées de la vue ;

"PP" - plan de projection (écran) avec axes de coordonnées X et Y.



Riz.6.2 4

Traçons une droite Ea’ passant par le point E, perpendiculaire au plan projections. Cette droite coupe le plan de projection au point a n, qui sera le point de projection de tous les points de la droite Ea’, y compris le point qui longe cette droite jusqu’à l’infini. Par conséquent, le point a n est le point de fuite de la droite Ea’.

Prenons un certain point b p sur le plan de projection et traçons une ligne b p b' qui le traverse, parallèle à la ligne Ea'. Traçons un plan passant par les lignes Ea ' et b p b ', qui coupera le plan de projection le long de la ligne b p a p . Prenons le point b b sur la droite b p b ‘ et dirigeons-le le long d’une droite vers l’infini.

À mesure que le point courant se déplace le long d'une ligne droite vers l'infini, sa projection b bp se déplacera le long d'une ligne droite b p a p , tendant vers le point a p tandis que le point b p tend vers l'infini. Ainsi, le point a p sera le point de fuite de la droite b p b '.

La seule condition pour choisir la droite bb ’ était qu’elle soit parallèle à la droite Ea ’. Par conséquent, pour toutes les droites parallèles à Ea ’, le point de fuite sera le même point a n.

Traçons une ligne droite passant par le point a n dans le plan de projection parallèle à l'axe X du plan de projection et prenons-la point arbitraire dp. Traçons une ligne droite passant par les points E et d p. Ensuite, nous prenons un autre point arbitraire c p sur le plan de projection et traçons à travers lui dans le système de coordonnées de vue une ligne droite c p c parallèle à la ligne droite E. d P.

À travers les lignes parallèles résultantes, nous traçons un plan qui coupe le plan de projection le long de la droite d p c p . Prenons un point c b sur la droite c n c et dirigeons-le vers l'infini. Comme le montre la figure, comme le point c b.

à l'infini, sa projection se déplacera le long d'une droite c p d p., tendant vers le point d p. Il s'ensuit que le point d n est le point de fuite de la droite c n c.

En argumentant de la même manière, il est facile de montrer que pour toutes les droites parallèles au plan passant par le point E et la droite d p a p , les points de fuite seront sur la droite passant par les points d p a p . De ce qui précède, il s'ensuit que la droite d p a p est une ligne de fuite pour tout plans horizontaux

. Cette ligne droite s’appelle la ligne d’horizon. De ce qui précède, nous pouvons également conclure que tout lignes parallèles , quelle que soit leur position, ont un point de fuite. Ce qui précède s'applique également à lignes verticales , qui ont un seul point de fuite appelé.

point zénithal En argumentant de la même manière, on peut montrer que tout plans parallèles

Le concept de points et de lignes de fuite est utilisé lors de la construction de projections d'objets tridimensionnels. Regardons ça exemple spécifique.

Supposons qu'il soit nécessaire de construire une projection d'un parallélépipède à bords latéraux verticaux, ayant un bord supérieur défini par les points d'ancrage 1, 2,3, 4, et une face inférieure définie par les points d'ancrage 5, 6, 7, 8 (Fig. 6.2‑5).

Notez qu'à partir des propriétés de l'objet donné, les bords spécifiés par les points nodaux 1,2 ; 3.4 ; 5.6 ; 7.8, parallèles, et donc les droites qui les portent convergent en un point (point Tc1). Droit, porteur côtes latérales 3,7 ; 4,8 ; 2.6 et 1.5 ont également le même point de fuite (point T3). La même chose peut être dite pour les côtes 1.3 ; 2.4 ; 5,7 ; 6,8 – les droites qui les portent sont parallèles entre elles, et ont donc un seul point de fuite (point Tc2).

Pour construire sans ambiguïté une projection d'un objet donné, il suffit de déterminer sur la projection les trois points de fuite précités (T3, Ts1, Ts2), et les projections des points 2,5,6,8 (Fig. 6.2‑ 6).


Riz.6.2 5

La projection peut être construite dans la séquence suivante.

Par les points 5 et Tc2 on trace une droite portant les arêtes 5.7. Son intersection avec la droite passant par les points Tc1 et 8 (droite,



Riz.6.2 6

bord d'appui 7.8), est le point 7. Roulements pour nervures latérales 3.7 ; 4,8 ; 2,6 et 1,5 seront obtenus si l'on trace des lignes droites passant par le point zénithal T3 et les quatre points nodaux existants bord inférieur parallélépipède (lignes T3.6 ; T3.7 ; T3.8 ; T3.5).

Puis on trace des droites Tc1,2. Le point de son intersection avec la droite T3.5 sera le point 1. Traçons les droites Tc1,4. Le point de son intersection avec la ligne T 3.7 sera le point 3.

De cette manière, des projections de tous les points nodaux de l'objet spécifié pour la projection seront trouvées, à partir desquelles l'ensemble du parallélépipède projeté pourra être construit sans ambiguïté sur le plan de projection.

Pour obtenir lors de la projection une image d'un objet proche de la façon dont il est perçu subjectivement par une personne, il est nécessaire de limiter l'angle de projection (l'angle de vision d'un objet tridimensionnel par un observateur à partir de l'observation point, c'est-à-dire à partir du point d'origine du système de coordonnées de la vue). En règle générale, un résultat de projection acceptable est obtenu lorsque l'angle de projection ne dépasse pas 30 à 40 degrés.

La méthode de projection considérée n'est acceptable que pour des objets relativement simples.



Avez-vous aimé l'article? Partage avec tes amis!