Olá! Na nossa aula anterior, mergulhamos no círculo unitário e vimos como ele nos fornece uma definição poderosa para seno e cosseno, aplicável a qualquer ângulo. A ideia central que você deve guardar é que, para qualquer ângulo , as coordenadas do ponto correspondente no círculo de raio 1 são .
Nesta lição, vamos dar um passo extremamente prático e aplicar esse conhecimento. O nosso objetivo é aplicar as funções trigonométricas para decompor um vetor de direção em componentes x e y. Este é um dos pilares do que faremos mais adiante. Para que o nosso jogador se mova em uma direção ou para que possamos "lançar" um raio em um ângulo específico, precisamos traduzir essa direção angular em um deslocamento nos eixos x e y do nosso mapa 2D. A trigonometria será a nossa ferramenta para fazer essa tradução.
Vetores, Direção e Componentes
Em física e computação gráfica, um vetor é uma entidade que possui tanto magnitude (tamanho ou intensidade) quanto direção (o ângulo para onde aponta). Pense na velocidade de um carro: 50 km/h (magnitude) para nordeste (direção).
No nosso projeto de raycasting, representaremos a posição e a direção do jogador usando vetores. A direção em que o jogador está olhando será um vetor. Quando ele se move, adicionamos um vetor de deslocamento à sua posição atual.
Para que o computador possa trabalhar com esses vetores, é muito mais fácil representá-los não por sua magnitude e ângulo, mas por suas componentes cartesianas: um valor para o eixo x e um valor para o eixo y. Decompor um vetor significa exatamente isso: pegar um vetor diagonal e descobrir "o quanto" dele aponta na direção horizontal (x) e "o quanto" aponta na direção vertical (y).
O vídeo a seguir, do canal "Felipe Sampaio - Física", introduz essa ideia de forma muito clara. Ele apresenta a decomposição como a operação inversa da soma de vetores, que é uma ótima maneira de pensar sobre o assunto.
DECOMPOSIÇÃO DE VETORES - Explicação com Exemplos
Este vídeo introduz a decomposição de vetores de uma forma bastante intuitiva, explicando por que precisamos quebrar um vetor em suas partes x e y.
Assista ao trecho inicial que explica o conceito de decomposição. O apresentador descreve a decomposição como o ato de pegar um vetor na diagonal e quebrá-lo em uma parte "em pé" (eixo y) e outra "deitada" (eixo x).
A Matemática da Decomposição
Como podemos calcular os valores exatos dessas componentes? A resposta está no triângulo retângulo que o vetor forma com os eixos.

Olhando para o triângulo retângulo na imagem, podemos usar as definições básicas de seno e cosseno que você já conhece (SOH-CAH-TOA):
- Cosseno = Cateto Adjacente / Hipotenusa
- Seno = Cateto Oposto / Hipotenusa
Essas são as fórmulas fundamentais para a decomposição de vetores. A componente x está associada ao cosseno do ângulo, e a componente y está associada ao seno.
O recurso a seguir, do site Physics LibreTexts, formaliza essas equações.
3.4: Coordinate Systems and Components of a Vector (Part 1)
Este artigo apresenta as fórmulas de decomposição de forma rigorosa.
Navegue até o parágrafo que começa com a frase "Let us return to the right triangle...". Leia esta seção, que apresenta as equações para A_x e A_y. Note que o texto usa A para magnitude e \theta_A para o ângulo, mas a lógica é idêntica à que vimos.
Agora, vamos assistir ao restante do vídeo do Felipe Sampaio, onde ele aplica exatamente essas fórmulas em dois exemplos práticos. Preste atenção em como ele identifica o cateto oposto e o adjacente para decidir se usa seno ou cosseno.
DECOMPOSIÇÃO DE VETORES - Explicação com Exemplos
O vídeo agora mostra a aplicação prática do seno e cosseno para encontrar os valores numéricos das componentes.
Assista ao primeiro exemplo, onde uma força de 10N é decomposta. Em seguida, veja o segundo exemplo com um vetor de velocidade. A repetição ajudará a solidificar o processo.
O Caso Especial: Vetores de Direção (Vetores Unitários)
No nosso raycaster, muitas vezes estaremos interessados apenas na direção, não na magnitude. Por exemplo, a direção para a qual o jogador está virado. Nesses casos, usamos um tipo especial de vetor chamado vetor unitário — um vetor cuja magnitude é exatamente 1.
A beleza de um vetor unitário é que as fórmulas de decomposição se simplificam enormemente:
- Componente x:
- Componente y:
Isso nos leva de volta à aula anterior! As componentes x e y de um vetor de direção unitário são simplesmente o cosseno e o seno do seu ângulo. O vetor de direção pode ser escrito como .

Sebastian Lague, um desenvolvedor de jogos muito conhecido, tem um vídeo excelente que demonstra essa ideia no contexto de programação de jogos.
Introduction to Game Development (E22: trigonometry)
Este vídeo conecta a teoria do círculo unitário diretamente à prática da programação de jogos, mostrando como obter um vetor de direção a partir de um ângulo.
Assista à explicação inicial, que mostra como um vetor unitário em um ângulo \theta tem as componentes (\cos\theta, \sin\theta). Em seguida, pule para a demonstração de código. Ele está usando Unity (C#), mas a lógica é universal: ele cria um vetor de direção usando Math.Cos() e Math.Sin(). Observe um detalhe importante: as funções trigonométricas em quase todas as linguagens de programação, incluindo Python, esperam o ângulo em radianos, não em graus. Ele mostra a conversão multiplicando por Mathf.Deg2Rad, que é uma constante igual a \pi/180.
Resumo Prático para o Raycasting
Vamos consolidar tudo. No seu projeto de raycasting, você terá:
- A Posição do Jogador: Um vetor de posição,
pos = (posX, posY). - A Direção do Jogador: Um vetor de direção unitário,
dir = (dirX, dirY). Ele é calculado a partir do ânguloangleem que o jogador está olhando:dirX = cos(angle)dirY = sin(angle)
(Lembre-se de converteranglepara radianos antes de usarcosesin!)
Quando o jogador se move para frente com uma certa velocidade moveSpeed, o deslocamento dele em um quadro (frame) será:
newPosX = posX + dirX * moveSpeednewPosY = posY + dirY * moveSpeed
Acabamos de derivar a base para o movimento em primeira pessoa!
Para uma referência rápida, a Khan Academy tem uma "cheat sheet" que resume perfeitamente o que aprendemos.
Converting between vector components and magnitude & direction review (article) | Khan Academy
Este artigo serve como um excelente resumo e folha de consulta rápida.
Leia a seção "Cheat sheet" no início. Ela apresenta a fórmula de forma concisa. Em seguida, revise a seção "Practice set 3" para reforçar a derivação baseada no triângulo retângulo.
Conclusão
Nesta lição, conectamos a trigonometria abstrata do círculo unitário a uma aplicação concreta e fundamental para a computação gráfica. Agora você sabe como transformar uma direção (um ângulo) em componentes x e y, que são as "instruções" que o computador pode usar para mover objetos em um plano 2D.
Pontos-chave da aula:
- Decomposição de Vetores: É o processo de quebrar um vetor em suas componentes horizontais (x) e verticais (y).
- Fórmulas da Decomposição: Para um vetor com magnitude e ângulo :
- Componente x:
- Componente y:
- Vetor de Direção (Unitário): Um vetor com magnitude 1. Suas componentes são simplesmente . Esta é a forma como representaremos a direção do jogador e dos raios no nosso motor.
Até agora, passamos de um ângulo para as componentes. Na próxima aula, faremos o caminho inverso: usaremos a função atan2(y, x) para determinar o ângulo de um vetor a partir de suas componentes cartesianas. Isso é útil em várias situações, como por exemplo, calcular o ângulo que um inimigo precisa ter para estar virado na direção do jogador.