Tradução

Alguns aplicativos convertem (ou deslocam) objetos desenhados na área do cliente. chamando a função SetWorldTransform para definir o espaço de mundo apropriado para a transformação de espaço de página. A função SetWorldTransform recebe um ponteiro para uma estrutura XFORM que contém os valores apropriados. Os membros eDx e eDy de XFORM especificam os componentes de tradução horizontal e vertical, respectivamente.

Quando a tradução ocorre, cada ponto em um objeto é deslocado verticalmente, horizontalmente ou ambos, por um valor especificado. A ilustração a seguir mostra um retângulo de 20 por 20 unidades que foi traduzido para a direita por 10 unidades quando copiado do espaço de coordenadas mundiais para o espaço de coordenadas de página.

ilustração mostrando um retângulo em uma posição no espaço do mundo e em uma posição diferente no espaço da página

Na ilustração anterior, a coordenada x de cada ponto no retângulo é 10 unidades maior que a coordenada x original.

A tradução horizontal pode ser representada pelo algoritmo a seguir.

x' = x + Dx 

Onde x' é a nova coordenada x, x é a coordenada x original e Dx é a distância horizontal movida.

A tradução vertical pode ser representada pelo algoritmo a seguir.

y' = y + Dy 

Onde y' é a nova coordenada y, y é a coordenada y original e Dy é a distância vertical movida.

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

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

(As regras de multiplicação de matriz afirmam que o número de linhas em uma matriz deve ser igual ao número de colunas na outra. O inteiro 1 na matriz |x y 1| é um espaço reservado que foi adicionado para atender a esse requisito.)

A matriz 3 por 3 que produziu a transformação de tradução ilustrada contém os valores a seguir.

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