Cisalhamento

Alguns aplicativos fornecem recursos que armazenam objetos desenhados na área do cliente. Os aplicativos que usam recursos de tesoura usam a função SetWorldTransform para definir valores apropriados no espaço do mundo para a transformação de espaço de página. Essa função recebe um ponteiro para uma estrutura XFORM que contém os valores apropriados. Os membros eM12 e eM21 de XFORM especificam as constantes de proporcionalidade horizontal e vertical, respectivamente.

Há dois componentes da transformação de tesoura. O primeiro altera as linhas verticais em um objeto ; o segundo altera as linhas horizontais. A ilustração a seguir mostra um retângulo de 20 por 20 unidades desarmado horizontalmente quando copiado do espaço mundial para o espaço de página.

ilustração mostrando um retângulo no espaço do mundo e um trapézio no espaço da página

Uma tesoura horizontal pode ser representada pelo seguinte algoritmo:

x' = x + (Sx * y) 

em que x é a coordenada x original, Sx é a constante de proporcionalidade e x' é o resultado da transformação de tesoura.

Uma tesoura vertical pode ser representada pelo seguinte algoritmo:

y' = y + (Sy * x) 

em que y é a coordenada y original, Sy é a constante de proporcionalidade e y' é o resultado da transformação de tesoura.

As transformações de tesoura horizontal e vertical podem ser combinadas em uma única operação usando uma matriz de 2 por 2.

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

A matriz 2 por 2 que produziu a tesoura contém os seguintes valores:

|1    1| 
|0    1|