Produto de ponto vetorial 2D

O produto escalar (também chamado de produto escalar) é a magnitude do vetor b multiplicada pelo tamanho da projeção de a em b. O tamanho da projeção é um cosθ (onde θ é o ângulo entre os 2 vetores). Em outras palavras:

a.b = |a||b|cosθ

Uma boa analogia física é pensar nas almofadas de impulso em Mario Kart. Se você se aproximar de um bloco com | a | igual a zero, você não obterá nenhum aumento, ou seja, 0 * b * cosθ é igual a 0. Se você se aproximar do bloco a 90 graus, também não obterá nenhum aumento, ou seja, a * b * cos PI / 2 é igual a 0. Se você abordagem -PI / 2 <θ <PI / 2 então você receberá um impulso. Se sua velocidade de entrada for | a |, o aumento máximo que você obterá será | b | e a quantidade real que você obterá será cosθ. Se você estiver perfeitamente alinhado, obterá | a || b |.

Código C:

float VectorDotProduct(ZVector2 v1, ZVector2 v2)
{
return v1.x * v2.x + v1.y * v2.y;
}

Nota

Para obter o vetor totalmente projetado, basta multiplicar o vetor de destino (o
vetor no qual projetamos) pelo resultado escalar do produto escalar.