Representação matricial de transformações

Um m×n em matriz é um conjunto de números organizados em m linhas e n colunas. A ilustração a seguir mostra várias matrizes.

Transformations

Você pode adicionar duas matrizes do mesmo tamanho, adicionando elementos individuais. A ilustração a seguir mostra dois exemplos de adição de matriz.

Transformations

Um m×n matriz pode ser multiplicada por um n×p matriz e o resultado é um m×p matriz. O número de colunas na primeira matriz deve ser o mesmo que o número de linhas na matriz da segunda. Por exemplo, uma matriz de 4 × 2 pode ser multiplicada por matriz 2 × 3 para produzir uma matriz de 4 × 3.

Pontos no plano e linhas e colunas de uma matriz podem ser pensados como vetores. Por exemplo, (2, 5) é um vetor com dois componentes e (3, 7, 1) é um vetor com três componentes. O produto de ponto de dois vetores é definido da seguinte maneira:

(um, • b) (c, d) = ac + bd

(a, b, c) • (d, e, f) = ad + be + cf

Por exemplo, o produto do ponto de (2, 3) e (5, 4) é (2)(5) + (3)(4) = 22. O produto de ponto (2, 5, 1) e (4, 3, 1) é (2)(4) + (5)(3) + (1)(1) = 24. Observe que o produto de ponto de dois vetores é um número, e não outro vetor. Observe também que você pode calcular o produto ponto somente se os dois vetores têm o mesmo número de componentes.

Permitir que A(i, j) ser a entrada na matriz a na linha i e a coluna de jth. Por exemplo, A (2, 3) é a entrada na matriz a na terceira linha e segunda coluna. Suponha que A, B e c são as matrizes e AB = c. As entradas de c são calculadas da seguinte maneira:

C (i, j) = (linha i da) • (coluna j da B)

A ilustração a seguir mostra vários exemplos de multiplicação de matriz.

Transformations

Se você acha de um ponto em um plano como uma matriz de × 2 1, você pode transformar esse ponto multiplicando-a por uma matriz de 2 x 2. A ilustração a seguir mostra várias transformações aplicadas ao ponto (2, 1).

Transformations

Todas as transformações, mostradas na figura anterior são transformações lineares. Determinadas outras transformações, como a conversão, não são lineares e não podem ser expresso como a multiplicação por uma matriz de 2 x 2. Suponha que você queira começar com o ponto (2, 1), gire-a 90 graus, traduzi-la 3 unidades na direção x e traduzi-la em 4 unidades na direção y. Você pode fazer isso usando uma multiplicação de matriz seguida de um acréscimo de matriz.

Transformations

Uma transformação linear (multiplicação por uma matriz de 2 × 2), seguida de uma tradução (adição de uma matriz de × 2 1) é chamada de uma transformação afim. Uma alternativa de uma transformação afim de armazenamento em um par de matrizes (um para a parte linear) e outro para a tradução é armazenar a transformação inteira em uma matriz de 3 × 3. Para fazer esse trabalho, um ponto no plano deve ser armazenado em uma matriz de 1 × 3 com uma coordenada 3ª fictícia. A técnica usual é fazer com que todas as coordenadas 3ª igual a 1. Por exemplo, o ponto (2, 1) é representado por matriz [2 1 1]. A ilustração a seguir mostra uma transformação afim (Girar 90 graus; TRANSLATE 3 unidades na direção x, 4 unidades na direção y) expresso como a multiplicação por uma matriz única de 3 × 3.

Transformations

No exemplo anterior, o ponto (2, 1) é mapeado para o ponto (2, 6). Observe que a terceira coluna da matriz 3 × 3 contém os números 0, 0, 1. Isso será sempre o caso para a matriz de 3 × 3 de uma transformação afim. Os números de importantes são os seis números nas colunas 1 e 2. A parte superior esquerda 2 × 2 da matriz representa a parte linear da transformação e as duas primeiras entradas na terceira linha representam a tradução.

Transformations

Na GDI+ você pode armazenar uma transformação afim em um Matrix objeto. Como a terceira coluna de uma matriz que representa uma transformação afim é sempre (0, 0, 1), você especifica somente os seis números nas duas primeiras colunas ao construir um Matrix objeto. A instrução Matrix myMatrix = new Matrix(0, 1, -1, 0, 3, 4) constrói a matriz mostrada na figura anterior.

Uma transformação composta é uma seqüência de transformações, um seguido de outro. Considere a matrizes e transformações na lista a seguir:

Matriz A

Girar 90 graus

Matriz B

Escala por um fator de 2 na direção x

Matriz C

Traduzir 3 unidades na direção y

Se começar com o ponto (2, 1) — representado pela matriz de [2 1 1] — e multiplique pelo, em seguida, B e C, o ponto (2, 1) será passam por três transformações na ordem listada.

[2 1 1]ABC = [-2 5 1]

Em vez de armazenar as três partes da transformação composta em três matrizes separadas, é possível multiplicar A, B e c juntos para obter uma matriz de 3 × 3 único que armazena a toda transformação composta. Suponha que a ABC = d. Em seguida, um ponto multiplicado por d dá o mesmo resultado como um ponto multiplicado por A, B, em seguida, em seguida, c.

[2 1 1]D = [-2 5 1]

A ilustração a seguir mostra as matrizes A, B, C e d.

Transformations

O fato de que a matriz de uma transformação composta pode ser formada por multiplicar as matrizes de transformação individuais significa que qualquer seqüência de transformações afim pode ser armazenada em um único Matrix objeto.

Observação de cuidado Cuidado

A ordem de uma transformação composta é importante. Em geral, girar, e dimensionar, em seguida traduzir é não o mesmo como dimensionar, girar, então traduzir. Da mesma forma, a ordem de multiplicação de matriz é importante. Em geral, ABC não é igual a OAT.

O Matrix classe fornece vários métodos para a criação de uma transformação composta: Multiply, Rotate, RotateAt, Scale, Shear, e Translate. O exemplo a seguir cria a matriz de uma transformação composta que primeiro gira 30 graus, e em seguida, ajusta por um fator de 2 na direção y e, em seguida, converte 5 unidades na direção x:


Matrix myMatrix = new Matrix();
myMatrix.Rotate(30);
myMatrix.Scale(1, 2, MatrixOrder.Append);
myMatrix.Translate(5, 0, MatrixOrder.Append);


A ilustração a seguir mostra a matriz.

Transformations
Isso foi útil para você?
(1500 caracteres restantes)
Agradecemos os seus comentários

Contribuições da comunidade

ADICIONAR
Mostrar:
© 2014 Microsoft