Conteúdo principal
Curso: Programação > Unidade 5
Lição 4: Vetores- Introdução aos vetores
- Mais matemática de vetores
- Magnitude e normalização de vetores
- Movimento de vetores
- Funções estáticas vs. métodos de instância
- Movimento interativo de vetor
- Desafio: Rastreador de mouse
- Projeto: Criaturas computacionais
© 2024 Khan AcademyTermos de usoPolítica de privacidadeAviso de cookies
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.add()
— soma vetores
sub()
— subtrai vetoresmult()
— escala o vetor com multiplicaçãodiv()
— escala o vetor com divisãomag()
— calcula a magnitude de um vetornormalize()
— normaliza o vetor a uma unidade de comprimento de 1limit()
— limita a magnitude de um vetorheading2D()
— o posicionamento 2D de um vetor expressado como um ângulodist()
— a distância euclidiana entre dois vetores (considerados como pontos)angleBetween()
— encontra o ângulo entre dois vetoresdot()
— o produto escalar de dois vetorescross()
— 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
pode ser escrito como:
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:
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:
A regra associativa:
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.
pode ser escrito como:
Vejamos um exemplo com notação veotrial.
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:
A propriedade distributiva com 2 escalares, 1 vetor:
A distributiva com 2 vetores e 1 escalar:
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.