Partager via


Traduction

Certaines applications traduisent (ou déplacent) les objets dessinés dans la zone cliente. en appelant la fonction SetWorldTransform pour définir l’espace du monde approprié en transformation d’espace de page. La fonction SetWorldTransform reçoit un pointeur vers une structure XFORM contenant les valeurs appropriées. Les membres eDx et eDy de XFORM spécifient les composants de traduction horizontale et verticale, respectivement.

Lorsque la traduction se produit, chaque point d’un objet est décalé verticalement, horizontalement ou les deux, d’une quantité spécifiée. L’illustration suivante montre un rectangle de 20 par 20 unités qui a été traduit à droite par 10 unités lors de la copie de l’espace de coordonnées mondiales vers l’espace de coordonnées de page.

illustration montrant un rectangle dans une position dans l’espace du monde, et dans une position différente dans l’espace de page

Dans l’illustration précédente, la coordonnée x de chaque point du rectangle est supérieure de 10 unités à la coordonnée x d’origine.

La traduction horizontale peut être représentée par l’algorithme suivant.

x' = x + Dx 

Où x' est la nouvelle coordonnée x, x est la coordonnée x d’origine et Dx la distance horizontale déplacée.

La traduction verticale peut être représentée par l’algorithme suivant.

y' = y + Dy 

Où y' est la nouvelle coordonnée y, y est la coordonnée y d’origine et Dy la distance verticale déplacée.

Les transformations de traduction horizontale et verticale peuvent être combinées en une seule opération à l’aide d’une matrice 3 par 3.

                      |1   0   0| 
|x' y' 1| = |x y 1| * |0   1   0| 
                      |Dx  Dy  1| 

(Les règles de multiplication de matrice indiquent que le nombre de lignes dans une matrice doit être égal au nombre de colonnes dans l’autre. Entier 1 dans la matrice |x y 1| est un espace réservé qui a été ajouté pour répondre à cette exigence.)

La matrice 3 par 3 qui a produit la transformation de traduction illustrée contient les valeurs suivantes.

|1  0  0| 
|0  1  0| 
|10 0  1|