If you're seeing this message, it means we're having trouble loading external resources on our website.

Se você está atrás de um filtro da Web, certifique-se que os domínios *.kastatic.org e *.kasandbox.org estão desbloqueados.

Conteúdo principal

Mais matemática de vetores

A adição foi realmente apenas o primeiro passo. Há muitas operações matemáticas que são usadas comumente com vetores. Abaixo há uma lista compreensiva de operações disponíveis como funções no objeto PVector do ProcessingJS. Permearemos algumas das principais agora. Conforme nossos exemplos se tornarem mais sofisticados em seções posteriores, continuaremos a revelar os detalhes de mais funções.
  • sub() — subtrai vetores
  • mult() — escala o vetor com multiplicação
  • div() — escala o vetor com divisão
  • mag() — calcula a magnitude de um vetor
  • normalize() — normaliza o vetor a uma unidade de comprimento de 1
  • limit() — limita a magnitude de um vetor
  • heading2D() — o posicionamento 2D de um vetor expressado como um ângulo
  • dist() — a distância euclidiana entre dois vetores (considerados como pontos)
  • angleBetween() — encontra o ângulo entre dois vetores
  • dot() — o produto escalar de dois vetores
  • cross() — o produto escalar de dois vetores (relevante apenas em três dimensões)
Já havendo abordado a adição, vamos introduzir a subtração. Esta não é tão difícil: basta substituir o sinal de mais por um de menos!

Subtração de Vetores

w=uv
pode ser escrito como:
wx=uxvx
wy=uyvy
e assim a função dentro de PVector fica assim:
PVector.prototype.sub = function(vector2) {
    this.x = this.x - vector2.x;
    this.y = this.y - vector2.y;
  };
O seguinte exemplo demonstra a subtração de vetores tomando a diferença entre dois pontos—a localização do mouse e o centro da janela.
Propriedades Básicas dos Números com Vetores
Quando calculamos com números reais, eles obedecem regras básicas:
A regra comutativa: 3+2=2+3
A regra associativa: (3+2)+1=3+(2+1)
As mesmas regras são válidas para a matemática com vetores:
A regra comutativa: u+v=v+u
A regra associativa: u+(v+w)=(u+v)+w

Multiplicação de Vetores

Seguindo para a multiplicação, temos que pensar um pouco diferente. Quando falamos sobre multiplicar um vetor, o que queremos dizer tipicamente é escalar um vetor. Se quiséssemos escalar um vetor para o dobro do seu tamanho ou um terço dele (mantendo a sua direção), diríamos: "multiplique o vetor por 2" ou "multiplique o vetor por 1/3". Note que estamos multiplicando um vetor por um escalar; um número simples, não um outro vetor.
Para escalar um vetor, multiplicamos cada componente (x e y) por um escalar.
w=un
pode ser escrito como:
wx=uxn   wy=uyn
Escalando um vetor
Vejamos um exemplo com notação veotrial.
u=(3,7)n=3w=unwx=33wy=73w=(9,21)
Portanto, a função interna do objeto PVector é escrita como:
PVector.prototype.mult = funcao(n) {
   este.x = este.x * n;
   este.y = este.y * n;
}
E usar mult no código é simples:
var u = new PVector(-3,7);
// Este PVector possui agora o triplo do tamanho e é igual a (-9,21).
u.mult(3);
Aqui está o exemplo anterior, mas nós multiplicamos o vetor por 0,5 a cada vez, assim ele é dimensionado pela metade:
Em vez de multiplicar por 0,5 no código anterior, poderíamos também ter dividido por 2. A divisão funciona exatamente como a multiplicação —nós apenas substituímos o sinal de multiplicação (asterisco) pelo sinal de divisão (barra).
É assim que o método div é implementado internamente:
PVector.prototype.div = funcao(n) {
   este.x = este.x / n;
   este.y = este.y / n;
}
E é assim que podemos usá-lo no código:
var u = new PVector(8, -4);
u.div(2);

Mais propriedades de números com vetores

Assim como na adição, regras algébricas básicas de multiplicação se aplicam a vetores.
A regra associativa: (nm)v=n(mv)
A propriedade distributiva com 2 escalares, 1 vetor: (n+m)v=nv+mv
A distributiva com 2 vetores e 1 escalar: (u+v)n=un+vn
Quer praticar sua matemática vetorial? Você pode aprender mais aqui na Khan Academy, em nossa unidade Álgebra Linear: Vetores.
Este curso "Natural Simulations" é um derivado do "The Nature of Code" por Daniel Shiffman, usado sob a Creative Commons Attribution-NonCommercial 3.0 Unported License.

Quer participar da conversa?

Nenhuma postagem por enquanto.
Você entende inglês? Clique aqui para ver mais debates na versão em inglês do site da Khan Academy.