Á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, e o WPF implementa essas operações nativamente através de TransformGroup, RotateTransform e TranslateTransform.
1. Por que Usamos Matrizes 3x3 no Espaço 2D?
Seção intitulada “1. Por que Usamos Matrizes 3x3 no Espaço 2D?”No plano bidimensional, rotação e escala podem ser calculadas por matrizes :
Entretanto, mover um ponto de lugar (Translação) exige uma soma , e somas não podem ser multiplicadas diretamente com matrizes .
A Solução: Coordenadas Homogêneas ()
Seção intitulada “A Solução: Coordenadas Homogêneas (x,y,1x, y, 1x,y,1)”Ao adicionar uma dimensão auxiliar , conseguimos unificar todas as operações (translação, rotação, escala) em matrizes :
2. Matrizes Elementares 2D
Seção intitulada “2. Matrizes Elementares 2D”- Translação: Move o objeto no plano por .
- Rotação: Gira o objeto por um ângulo .
- Escala: Aumenta ou diminui o tamanho do objeto por .
- Cisalhamento (Shear): Inclina e deforma a geometria lateralmente.
3. Rotação ao Redor de um Ponto Arbitrário
Seção intitulada “3. Rotação ao Redor de um Ponto Arbitrário”Para girar um desenho ao redor do seu próprio centro :
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)"]4. Reutilização com ControlTemplates e Animações com AutoReverse
Seção intitulada “4. Reutilização com ControlTemplates e Animações com AutoReverse”No ecossistema WPF, matrizes de transformação são aplicadas modularmente a geometrias definidas em ControlTemplates:
<!-- Template de Ponteiro/Raio Modular --><ControlTemplate x:Key="PonteiroTemplate"> <Polygon Points="0,0 -4,-18 0,-50 4,-18" Fill="#38BDF8"/></ControlTemplate>
<!-- Instanciação com Rotação Pivotada --><Control Template="{StaticResource PonteiroTemplate}"> <Control.RenderTransform> <RotateTransform Angle="45" CenterX="0" CenterY="0"/> </Control.RenderTransform></Control>Animações Contínuas Bidirecionais
Seção intitulada “Animações Contínuas Bidirecionais”Ao aplicar DoubleAnimation em conjunto com a propriedade AutoReverse="True", a linha do tempo interpola o trajeto até o valor final e, ao término, reproduz a interpolação em sentido inverso automaticamente, mantendo a coerência física em veículos e mecanismos articulados.
Referências Oficiais Microsoft Learn
- Visão Geral de Transformações no WPF — Classes RotateTransform, TranslateTransform e MatrixTransform.
- Classe Timeline.AutoReverse Property — Como criar animações cíclicas bidirecionais suaves.
Próximo Passo: Aprenda sobre os Algoritmos de Traçado de Retas (Bresenham e Wu).