Traduction

Certaines applications traduisent (ou décalent) des objets dessinés dans la zone cliente. en appelant la fonction SetWorldTransform pour définir l’espace universel approprié sur la 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 respectivement les composants de traduction horizontale et verticale.

En cas de traduction , chaque point d’un objet est décalé verticalement, horizontalement, ou les deux, selon une valeur spécifiée. L’illustration suivante montre un rectangle de 20 par 20 qui a été traduit à droite de 10 unités lorsqu’il est copié à partir d’un espace de coordonnées universelles vers l’espace de coordonnées de page.

Illustration montrant un rectangle à une position dans l’espace universel et à une autre position dans l’espace de la page

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

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

x' = x + Dx 

Où x correspond à la nouvelle coordonnée x, x correspond à 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 translation 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| 

(Règles d’état de la multiplication de matrice selon lesquelles le nombre de lignes dans une matrice doit être égal au nombre de colonnes dans l’autre. L’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|