Pular para o conteúdo

Álgebra Linear 2D & Coordenadas Homogêneas (Matrix2D.cs)

A base matemática de toda a Computação Gráfica é a Álgebra Linear Matricial.

O arquivo Matrix2D.cs encapsula as matrizes de transformação afim no plano bidimensional.


1. Por que Usamos Matrizes 3x3 no Espaço 2D?

No plano bidimensional, rotação e escala podem ser calculadas por matrizes 2×22 \times 2:

[xy]=[cosθsinθsinθcosθ][xy]\begin{bmatrix} x' \\ y' \end{bmatrix} = \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix}

Entretanto, mover um ponto de lugar (Translação) exige uma soma (x+tx,  y+ty)(x + t_x, \; y + t_y), e somas não podem ser multiplicadas diretamente com matrizes 2×22 \times 2.

A Solução: Coordenadas Homogêneas (x,y,1x, y, 1)

Ao adicionar uma dimensão auxiliar w=1w = 1, conseguimos unificar todas as operações (translação, rotação, escala) em matrizes 3×33 \times 3:

[xy1]=[m00m01m02m10m11m12001][xy1]\begin{bmatrix} x' \\ y' \\ 1 \end{bmatrix} = \begin{bmatrix} m_{00} & m_{01} & m_{02} \\ m_{10} & m_{11} & m_{12} \\ 0 & 0 & 1 \end{bmatrix} \begin{bmatrix} x \\ y \\ 1 \end{bmatrix}

2. Matrizes Elementares 2D

  • Translação: Move o objeto no plano por (tx,ty)(t_x, t_y).
  • Rotação: Gira o objeto por um ângulo θ\theta.
  • Escala: Aumenta ou diminui o tamanho do objeto por (sx,sy)(s_x, s_y).
  • Cisalhamento (Shear): Inclina e deforma a geometria lateralmente.

3. Rotação ao Redor de um Ponto Arbitrário

Para girar um desenho ao redor do seu próprio centro (Px,Py)(P_x, P_y):

graph LR
A["1. Translacao para a Origem: T(-Px, -Py)"] --> B["2. Rotacao Angular: R(theta)"]
B --> C["3. Translacao de Volta: T(+Px, +Py)"]
Mfinal=T(Px,Py)×R(θ)×T(Px,Py)M_{\text{final}} = T(P_x, P_y) \times R(\theta) \times T(-P_x, -P_y)

👉 Próximo Passo: Aprenda sobre os Algoritmos de Traçado de Retas (Bresenham e Wu).