Partager via


Cisaillement

Certaines applications fournissent des fonctionnalités qui cisaillent les objets dessinés dans la zone cliente. Les applications qui utilisent des fonctionnalités de cisaillement utilisent la fonction SetWorldTransform pour définir les valeurs appropriées dans l’espace mondial en transformation d’espace de page. Cette fonction reçoit un pointeur vers une structure XFORM contenant les valeurs appropriées. Les membres eM12 et eM21 de XFORM spécifient respectivement les constantes de proportionnalité horizontale et verticale.

Il existe deux composants de la transformation de cisaillement. Le premier modifie les lignes verticales d’un objet ; la seconde modifie les lignes horizontales. L’illustration suivante montre un rectangle de 20 sur 20 unités cisaille à l’horizontale lors de la copie de l’espace mondial vers l’espace de page.

illustration montrant un rectangle dans l’espace monde et un trapéziod dans l’espace de page

Un cisaillement horizontal peut être représenté par l’algorithme suivant :

x' = x + (Sx * y) 

où x est la coordonnée x d’origine, Sx est la constante de proportionnalité et x' est le résultat de la transformation de cisaillement.

Un cisaillement vertical peut être représenté par l’algorithme suivant :

y' = y + (Sy * x) 

où y est la coordonnée y d’origine, Sy est la constante de proportionnalité et y' est le résultat de la transformation de cisaillement.

Les transformations de cisaillement horizontal et de cisaillement vertical peuvent être combinées en une seule opération à l’aide d’une matrice 2 par 2.

|x' y'| == |x y| * |  1   Sx| 
                   | Sy    1| 

La matrice 2 par 2 qui a produit le cisaillement contient les valeurs suivantes :

|1    1| 
|0    1|