ÁLGEBRA ARCADE

Fase 3.2: A Régua do Universo

Manual da Fase: Norma, Distância e Vetores Unitários

Agora que sabemos como direcionar nossos avatares, precisamos de uma régua para medir seu mundo. A norma de um vetor, representada por \( \| \vec{v} \| \), mede seu comprimento ou magnitude — a "força" de um pulo ou a "velocidade" de um projétil. A distância entre dois pontos é simplesmente a norma do vetor que os conecta. Por fim, o vetor unitário (ou versor) é a "direção pura", um vetor de comprimento 1 que nos permite separar a direção do movimento de sua intensidade.

Essas ferramentas são a base para qualquer tipo de medição em um jogo: verificar alcances, calcular trajetórias e normalizar movimentos para garantir consistência.

Norma em \( \mathbb{R}^n \): \( \|\vec{v}\| = \sqrt{v_1^2 + v_2^2 + \dots + v_n^2} \)
Distância entre A e B: \( d(A,B) = \|\vec{B} - \vec{A}\| \)
Vetor Unitário \( \hat{v} \): \( \hat{v} = \frac{\vec{v}}{\|\vec{v}\|} \)

A Força do Salto (Norma de um Vetor)

Objetivo da Missão: Praticar o cálculo da magnitude (comprimento) de um vetor em R².

Em um jogo de plataforma da Era 8-bit, o vetor de pulo do seu herói é \( \vec{v} = (3, 4) \). Isso significa que ele se desloca 3 unidades na horizontal e 4 na vertical. Qual é a distância exata, em linha reta, que ele percorre no ar? (Ou seja, qual é a norma de \( \vec{v} \)?)

Pedir Dica ao Mestre do Jogo...

Use a fórmula da norma, que é essencialmente o Teorema de Pitágoras. A norma é a raiz quadrada da soma dos quadrados de cada componente do vetor.

Ver Detonado...
  1. Identifique as componentes do vetor: \( v_x = 3 \) e \( v_y = 4 \).
  2. Eleve cada componente ao quadrado: \( v_x^2 = 9 \) e \( v_y^2 = 16 \).
  3. Some os quadrados: \( 9 + 16 = 25 \).
  4. Calcule a raiz quadrada do resultado para encontrar a norma.
\( \|\vec{v}\| = \sqrt{v_x^2 + v_y^2} \)

Conexão com o Mundo dos Jogos: A norma é usada para calcular a velocidade escalar de um objeto (a leitura do "velocímetro"), o alcance de uma arma, a força de uma explosão e qualquer outra mecânica que dependa do comprimento de um vetor.

Distância Segura para o Tesouro (Distância entre Vetores)

Objetivo da Missão: Aplicar a fórmula da distância euclidiana entre dois pontos em R².

Em um 'dungeon crawler', seu personagem está na posição \( P_1 = (2, 1) \) e um baú de tesouro está em \( P_2 = (7, 13) \). Qual é a distância em linha reta que te separa do tesouro? Este cálculo é vital para saber se você pode alcançá-lo em um único turno.

Pedir Dica ao Mestre do Jogo...

Primeiro, encontre o vetor de deslocamento entre os dois pontos (\( \vec{P_2} - \vec{P_1} \)). Depois, calcule a norma desse vetor de deslocamento.

Ver Detonado...
  1. Calcule o vetor de deslocamento \( \vec{d} = \vec{P_2} - \vec{P_1} \).
  2. Subtraia as componentes correspondentes: \( \vec{d} = (7-2, 13-1) \).
  3. Agora, calcule a norma do vetor de deslocamento \( \vec{d} \) usando a fórmula \( \|\vec{d}\| = \sqrt{d_x^2 + d_y^2} \).
\( d(P_1, P_2) = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2} \)

Conexão com o Mundo dos Jogos: O cálculo de distância é onipresente: a IA usa para decidir qual alvo é o mais próximo, o jogo usa para determinar se um clique do mouse acertou um inimigo, e a física usa para detectar colisões (se a distância for menor que a soma dos raios dos objetos).

A Direção Pura do Ataque (Vetor Unitário / Versor)

Objetivo da Missão: Calcular um vetor de comprimento 1 que mantém a mesma direção do original.

Um canhão em um jogo de torre de defesa aponta na direção do vetor \( \vec{d} = (8, -6) \). Para a lógica do jogo, precisamos apenas da direção do tiro, sem sermos influenciados pela sua magnitude (que pode variar com power-ups). Encontre o versor \( \hat{d} \) que representa a "direção pura" do tiro.

Pedir Dica ao Mestre do Jogo...

Para normalizar um vetor (encontrar seu versor), você precisa dividi-lo por sua própria norma. Primeiro, calcule \( \|\vec{d}\| \), e depois divida cada componente de \( \vec{d} \) por esse valor.

Ver Detonado...
  1. Calcule a norma do vetor \( \vec{d} = (8, -6) \). \( \|\vec{d}\| = \sqrt{8^2 + (-6)^2} \).
  2. O resultado da norma será o escalar pelo qual você dividirá o vetor.
  3. Crie o novo vetor \( \hat{d} \) dividindo cada componente de \( \vec{d} \) pela norma calculada.
\( \hat{d} = \frac{\vec{d}}{\|\vec{d}\|} = \left( \frac{d_x}{\|\vec{d}\|}, \frac{d_y}{\|\vec{d}\|} \right) \)

Conexão com o Mundo dos Jogos: Vetores unitários são a espinha dorsal do controle de movimento. Para fazer um personagem andar a uma velocidade constante em qualquer direção (incluindo diagonais), o jogo pega o vetor de direção do joystick, o normaliza para ter comprimento 1 e depois o multiplica pela velocidade desejada.

O Alcance da Torre de Defesa (Aplicação da Norma)

Objetivo da Missão: Usar a norma para verificar se um objeto está dentro de um raio de ação.

Uma torre de arqueiros está posicionada na origem \( (0,0) \) de um mapa e tem um alcance máximo de 10 unidades. Um orc aparece na posição \( P = (7, 6) \). Calcule a distância do orc à torre e determine se ele está dentro do alcance para ser atacado.

Pedir Dica ao Mestre do Jogo...

A distância de um ponto P à origem é simplesmente a norma do vetor posição \( \vec{p} \). Calcule \( \|\vec{p}\| \) e compare o resultado com o alcance da torre (10).

Ver Detonado...
  1. O vetor posição do orc é \( \vec{p} = (7, 6) \).
  2. Calcule a norma de \( \vec{p} \): \( \|\vec{p}\| = \sqrt{7^2 + 6^2} \).
  3. Compare o valor numérico da norma com 10. Se for menor ou igual a 10, está no alcance.
  4. Dica de cálculo: você pode comparar os quadrados para evitar raízes. \( \|\vec{p}\|^2 \) vs \( 10^2 \). Se \( 7^2 + 6^2 \le 100 \), está no alcance. Isso é computacionalmente mais rápido.
Condição: \( d(\text{Torre}, \text{Inimigo}) \le \text{Alcance} \)

Conexão com o Mundo dos Jogos: Esta é a lógica exata usada em jogos de estratégia e MOBA para determinar a 'agressão' de torres e unidades. A cada frame, o jogo calcula a distância de todos os inimigos próximos e ataca o primeiro que entrar em seu raio de ação.

Medindo a Diagonal do 'Level' (Distância em R³)

Objetivo da Missão: Estender o cálculo de distância para o espaço tridimensional.

Você está projetando um nível para um 'dungeon crawler' da Era 3D Inicial. O ponto de entrada da fase está em \( A = (1, 2, 3) \) e a saída está no extremo oposto, em \( B = (9, 8, 18) \). Qual é a distância em linha reta entre o início e o fim do nível?

Pedir Dica ao Mestre do Jogo...

A fórmula da distância em R³ é uma extensão natural da de R². Calcule o vetor \( \vec{AB} = \vec{B} - \vec{A} \) e depois encontre a norma desse novo vetor, que agora terá três componentes para somar sob a raiz quadrada.

Ver Detonado...
  1. Calcule o vetor de deslocamento \( \vec{d} = \vec{B} - \vec{A} = (9-1, 8-2, 18-3) \).
  2. Calcule a norma de \( \vec{d} \) usando a fórmula para R³: \( \|\vec{d}\| = \sqrt{d_x^2 + d_y^2 + d_z^2} \).
\( d(A, B) = \sqrt{(x_2-x_1)^2 + (y_2-y_1)^2 + (z_2-z_1)^2} \)

Conexão com o Mundo dos Jogos: Em jogos 3D, a distância é usada para 'level of detail' (LOD), onde objetos distantes são renderizados com menos polígonos para economizar processamento. Também é usada para atenuar o som: quanto mais longe a fonte sonora, menor o volume.

A Velocidade Real da Nave (Norma e Escalares)

Objetivo da Missão: Entender como a norma se comporta com a multiplicação por escalar.

Uma nave espacial tem um vetor de velocidade base \( \vec{v} = (1, 2, 2) \) unidades por segundo.
a) Qual é a sua velocidade escalar (a magnitude de \( \vec{v} \))?
b) Se um 'boost' de energia quadruplica seu vetor velocidade para \( 4\vec{v} \), qual será sua nova velocidade escalar?

Pedir Dica ao Mestre do Jogo...

Para a parte (a), apenas calcule \( \|\vec{v}\| \). Para a (b), você pode calcular o novo vetor \( 4\vec{v} \) e depois sua norma, ou pode usar a propriedade \( \|k\vec{v}\| = |k|\|\vec{v}\| \), que é um atalho!

Ver Detonado...
  1. Para (a), calcule \( \|\vec{v}\| = \sqrt{1^2 + 2^2 + 2^2} \).
  2. Para (b), calcule o novo vetor \( \vec{v}_{boost} = 4 \cdot (1, 2, 2) = (4, 8, 8) \).
  3. Calcule a norma do novo vetor: \( \|\vec{v}_{boost}\| = \sqrt{4^2 + 8^2 + 8^2} \).
  4. Alternativamente para (b), use a propriedade: a nova norma será \( 4 \times \) a norma que você calculou na parte (a).
\( \|k\vec{v}\| = |k| \cdot \|\vec{v}\| \)

Conexão com o Mundo dos Jogos: Entender essa propriedade economiza cálculos. Se o jogo já sabe a velocidade base de um personagem, para aplicar um power-up de "velocidade em dobro", ele não precisa recalcular a norma do novo vetor, apenas multiplica a velocidade escalar conhecida por 2.

O Alvo Mais Próximo (Comparação de Distâncias)

Objetivo da Missão: Calcular e comparar múltiplas distâncias para tomar uma decisão de IA.

Seu personagem, um mago, está na posição \( P = (0, 0) \). Há dois goblins no campo de batalha, em \( E_1 = (-3, 4) \) e \( E_2 = (5, 2) \). A sua magia de alvo único atinge automaticamente o inimigo mais próximo. Qual dos goblins será o alvo?

Pedir Dica ao Mestre do Jogo...

Calcule a distância de P até E1 e a distância de P até E2 separadamente. O menor valor corresponde ao alvo mais próximo. Lembre-se que você pode comparar os quadrados das distâncias para evitar o cálculo de raízes quadradas.

Ver Detonado...
  1. Calcule o quadrado da distância até E1: \( d(P, E_1)^2 = (-3-0)^2 + (4-0)^2 \).
  2. Calcule o quadrado da distância até E2: \( d(P, E_2)^2 = (5-0)^2 + (2-0)^2 \).
  3. Compare os dois valores quadrados. O menor indica o inimigo mais próximo.
Comparar \( d(P, E_1) \) com \( d(P, E_2) \)

Conexão com o Mundo dos Jogos: A "otimização da raiz quadrada" (comparar distâncias ao quadrado) é uma técnica padrão em programação de jogos. Como a função de raiz quadrada é computacionalmente "cara", evitá-la em loops que rodam milhares de vezes por segundo (como checagens de IA) otimiza significativamente o desempenho do jogo.

O Míssil Teleguiado (Construção com Versor)

Objetivo da Missão: Usar um versor para criar um vetor de movimento com magnitude específica.

Um míssil precisa se mover de sua posição atual para um alvo. A direção para o alvo é representada pelo vetor \( \vec{d} = (3, 0, 4) \). O motor do míssil, no entanto, o impulsiona a uma velocidade constante de 15 unidades por segundo. Qual deve ser o vetor de velocidade \( \vec{v} \) exato do míssil para que ele se mova na direção correta e com a magnitude correta?

Pedir Dica ao Mestre do Jogo...

O vetor velocidade é a direção multiplicada pela magnitude da velocidade. Primeiro, encontre a "direção pura" (o versor de \( \vec{d} \)). Depois, multiplique esse versor pela velocidade escalar (15).

Ver Detonado...
  1. Encontre a norma do vetor de direção \( \vec{d} \).
  2. Normalize \( \vec{d} \) para obter o versor \( \hat{d} = \frac{\vec{d}}{\|\vec{d}\|} \).
  3. O vetor velocidade final é \( \vec{v} = 15 \cdot \hat{d} \). Multiplique o escalar 15 por cada componente do versor \( \hat{d} \).
\( \vec{v} = \text{velocidade} \cdot \hat{d} = \text{velocidade} \cdot \frac{\vec{d}}{\|\vec{d}\|} \)

Conexão com o Mundo dos Jogos: Este é o processo exato para programar qualquer movimento com velocidade constante: obter a direção (do jogador ou da IA), normalizá-la e multiplicá-la pela velocidade do personagem. Isso garante que o personagem não se mova mais rápido nas diagonais, um bug comum em jogos iniciantes.

Verificando a Geometria da Fase (Propriedades Geométricas)

Objetivo da Missão: Usar a fórmula da distância para classificar um triângulo quanto aos lados.

Os designers de nível posicionaram três pilares de uma arena triangular nos pontos \( A = (1, 1) \), \( B = (5, 9) \) e \( C = (8, 5) \). Para a engine de física, é importante saber se este triângulo tem propriedades especiais. Calcule os comprimentos dos lados AB, BC e CA e classifique o triângulo como equilátero, isósceles ou escaleno.

Pedir Dica ao Mestre do Jogo...

Você precisa calcular três distâncias: \( d(A,B) \), \( d(B,C) \) e \( d(C,A) \). Depois, compare os comprimentos. Se todos forem iguais, é equilátero. Se dois forem iguais, isósceles. Se todos forem diferentes, escaleno.

Ver Detonado...
  1. Calcule o comprimento do lado AB: \( d(A,B) = \|\vec{B}-\vec{A}\| = \sqrt{(5-1)^2 + (9-1)^2} \).
  2. Calcule o comprimento do lado BC: \( d(B,C) = \|\vec{C}-\vec{B}\| = \sqrt{(8-5)^2 + (5-9)^2} \).
  3. Calcule o comprimento do lado CA: \( d(C,A) = \|\vec{A}-\vec{C}\| = \sqrt{(1-8)^2 + (1-5)^2} \).
  4. Compare os três resultados numéricos para classificar o triângulo.
Comparar \(d(A,B)\), \(d(B,C)\), \(d(C,A)\)

Conexão com o Mundo dos Jogos: Ferramentas de edição de níveis (Level Editors) frequentemente usam esses cálculos para fornecer informações úteis aos designers, como alinhar objetos, garantir simetria ou verificar se a geometria de uma área atende a certos requisitos de jogabilidade.

O Vetor Velocidade do Projétil (Síntese)

Objetivo da Missão: Construir um vetor velocidade a partir de um ponto de origem, um alvo e uma magnitude de velocidade.

Um arqueiro está na posição \( A = (1, 5) \) e atira uma flecha em uma maçã na posição \( B = (7, 13) \). A flecha, uma vez disparada, viaja a uma velocidade constante de 20 unidades por segundo. Qual deve ser o vetor velocidade \( \vec{v} \) da flecha para que ela siga a trajetória correta com a velocidade exata?

Ver Detonado...
  1. Primeiro, determine o vetor de direção do tiro, que é o vetor que vai do arqueiro até a maçã: \( \vec{d} = \vec{B} - \vec{A} \).
  2. Em seguida, normalize este vetor de direção para obter a "direção pura" do tiro, o versor \( \hat{d} \). Para isso, calcule a norma de \( \vec{d} \) e divida \( \vec{d} \) por ela.
  3. Finalmente, para dar a magnitude correta à flecha, multiplique o versor \( \hat{d} \) pela velocidade escalar desejada (20). O resultado é o vetor velocidade \( \vec{v} \).
\( \vec{v} = \text{velocidade} \cdot \frac{\vec{B}-\vec{A}}{\|\vec{B}-\vec{A}\|} \)

Conexão com o Mundo dos Jogos: Esta missão combina todas as habilidades da fase em um único problema, que é um dos mais comuns na programação de jogos: criar o movimento de um projétil. A mesma lógica se aplica a mísseis teleguiados, raios laser ou qualquer objeto que precise se mover de um ponto A para um ponto B com velocidade constante.

Posicionando Efeitos Visuais (Ponto em um Segmento a Distância Fixa)

Objetivo da Missão: Encontrar um ponto em um segmento de reta que está a uma distância conhecida da origem.

Um feixe de laser é disparado da posição \( A = (2, 2, 2) \) em direção a um ponto distante \( B = (12, 2, 7) \). Um efeito visual de "faísca" deve aparecer no ponto exato ao longo do feixe que está a 5 unidades de distância do ponto de partida A. Quais são as coordenadas desse ponto?

Ver Detonado...
  1. Encontre o vetor de direção do laser, \( \vec{d} = \vec{B} - \vec{A} \).
  2. Normalize o vetor de direção \( \vec{d} \) para obter o versor \( \hat{d} \), que representa a direção do feixe com comprimento 1.
  3. Para encontrar um ponto que está a 5 unidades de distância de A ao longo dessa direção, simplesmente escale o versor por 5: \( 5 \cdot \hat{d} \). Este será o vetor de deslocamento a partir de A.
  4. A posição final do efeito de faísca é a posição inicial mais o vetor de deslocamento: \( \vec{P}_{faísca} = \vec{A} + 5 \cdot \hat{d} \).
\( \vec{P} = \vec{P}_{inicial} + \text{distância} \cdot \hat{d} \)

Conexão com o Mundo dos Jogos: Essa técnica é usada para posicionar efeitos visuais (VFX) ao longo de uma trajetória, para determinar o ponto de impacto de um projétil de alcance limitado, ou para a IA decidir até onde pode se mover em uma determinada direção em um único turno.

A Fronteira do Campo de Força (Equação da Esfera)

Objetivo da Missão: Usar o conceito de distância para definir a equação de uma superfície esférica.

Um gerador de escudo está localizado na origem do mapa, \( C = (0, 0, 0) \), e projeta um campo de força perfeitamente esférico com raio 9. Um asteroide se aproxima e sua posição atual é \( P = (5, -7, 4) \). Verifique se o asteroide já colidiu com o escudo. Ele está dentro, fora ou exatamente na fronteira do campo de força?

Ver Detonado...
  1. A condição para um ponto P estar dentro ou sobre uma esfera de centro C e raio R é que a distância entre P e C seja menor ou igual a R: \( d(P, C) \le R \).
  2. Calcule a distância do asteroide ao centro do escudo: \( d(P, C) = \|\vec{P} - \vec{C}\| = \|\vec{P}\| \).
  3. Compare o valor da distância calculada com o raio do escudo (9).
  4. Se a distância for menor que 9, está dentro. Se for igual a 9, está na fronteira. Se for maior que 9, está fora. (Dica: é mais fácil comparar os quadrados da distância e do raio).
Comparar \( (x_p-x_c)^2 + (y_p-y_c)^2 + (z_p-z_c)^2 \) com \( R^2 \)

Conexão com o Mundo dos Jogos: Esta é a forma mais simples e comum de detecção de colisão, conhecida como "sphere casting" ou "bounding sphere". Muitos objetos complexos em jogos são aproximados por uma esfera invisível, e o jogo primeiro testa a colisão entre essas esferas (que é um cálculo de distância muito rápido) antes de fazer testes de colisão mais precisos e caros com a malha poligonal do objeto.