O que há de tão diferente / complicado / útil nos vetores?

21

Perdoe-me se isso não for considerado uma questão real, mas é algo sobre o qual estou genuinamente confuso.

Eu sempre ouço outros desenvolvedores de jogos falarem sobre como o uso de vetores é muito útil, mas também como todos são intimidados pela matemática e vetores de vetores podem parecer assustadores. Eu nunca cheguei a aprender sobre eles.

Então, finalmente, procurei Vector na Wikipedia e fiquei surpreso. A menos que eu esteja enganado, um vetor (por uma questão de simplicidade, digamos que seja 2D), é apenas uma coordenada xey. Se eu entendi errado, por favor me corrija.

Então, eis a minha pergunta: isso não significa que qualquer representação de coordenadas bidimensionais (ou tridimensionais) seja um vetor? Nesse caso, vetores e coordenadas são a mesma coisa. E é praticamente impossível criar um jogo sem o uso de coordenadas, então como os vetores são confusos ou novos para alguém que fez alguma programação de jogos?

Isso é algo que eu poderia usar alguns esclarecimentos. Qualquer ajuda é apreciada.

paisagem
fonte
5
Os vetores são bem simples até você começar a fazer rotações em 3D ... então você precisa de quaternions e eles vão explodir sua cabeça.
Alistair Buxton
A noção de vetor é realmente confusa. Eu perguntei em math, math.stackexchange.com/questions/429363 , math.stackexchange.com/questions/384927 , mas não obtive resposta clara. É pura frustração. Pode ser que você pode adicionar a ele.
Val
1
Com todas as más analogias nessas respostas, não é de admirar que as pessoas se confundam.
Alistair Buxton

Respostas:

29

Não deixe que um especialista em matemática o ouça chamando pontos ou coordenadas de vetores!

Um vetor 2D tem um componente x e y , não coordenado. Os vetores não definem uma posição, eles definem uma direção e uma magnitude.

Não sei dizer por que as pessoas são intimidadas por elas, provavelmente a mesma razão pela qual as pessoas são intimidadas pela matemática em geral, porque todo mundo diz que é difícil antes de saber alguma coisa sobre isso!

Vetores e coordenadas não são a mesma coisa. Eles parecem semelhantes, mas da maneira como são usados ​​é muito diferente.

Coordenadas definem uma posição no mundo. Os vetores definem uma direção e magnitude. Os dois são frequentemente usados ​​juntos. Como um exemplo:

Um personagem tem uma posição e uma velocidade. A posição é uma coordenada e a velocidade é um vetor. Adicionar a velocidade à posição moverá o caractere na direção do vetor a uma distância definida pela magnitude do vetor (observe que a magnitude do vetor é a velocidade, portanto, isso nos dá uma direção e uma velocidade).

Ou neste exemplo:

insira a descrição da imagem aqui

Os dois caracteres têm posições e o tiro a laser é um vetor. Um vetor entre as duas posições é (3,1). Isso significa que viaja +3 ao longo do eixo X e +1 ao longo do eixo Y. Onde a magnitude pode ser encontrada com Sqrt ((X X) + (Y Y)).

Uma boa visão geral da matemática vetorial pode ser encontrada no blog Wolfire

MichaelHouse
fonte
7
Não são apenas os matemáticos que ficam chateados quando alguém chama um vetor de ponto ou coordenada. Nós, físicos, vamos estragar tudo também.
TASagent 27/09/13
2
+1 Mas se eu estiver escolhendo nit, velocidade é um vetor e velocidade é a magnitude desse vetor.
precisa saber é o seguinte
2
@ Val: Eu não diria que é um absurdo. Ele aborda o equívoco da pergunta de que vetores são apenas coordenadas x e y. Tornar a resposta mais formal ou precisa ao mencionar 'elementos do espaço vetorial' não ajudaria ninguém, exceto ajudar a explicar por que as pessoas acham a álgebra vetorial intimidadora.
Marcks Thomas
3
Os vetores são apenas uma posição em que eles informam onde você estaria se os aplicasse (0,0). Os vetores podem modificar uma posição, mas não contêm informações de posição em si. Eu entendo o que você está dizendo. Penso que a diferença de que estamos a falar não é significativa para esta questão. É assim que os vetores são usados ​​no desenvolvimento de jogos. Obrigado pela sua contribuição.
MichaelHouse
4
@ Val: qualquer boa aula de álgebra linear estará de acordo com o Byte56: os vetores não são iguais às posições no espaço . Faz sentido adicionar "3 milhas ao norte e 1 milha a leste" a "1 milha ao sul"; mas não faz sentido adicionar "a posição da Casa Branca" à "posição do Pentágono". Depois de fixar o ponto de referência como (0,0), você pode usar vetores para determinar pontos e vice-versa; portanto, em algumas representações, eles se parecem; mas eles são diferentes. Abstratamente: compare espaço afim versus espaço vetorial .
PLL
9

Acho que o fator de intimidação pode surgir quando você começa a lidar com operações mais complicadas, como normalização, pontos e produtos cruzados, e usando vários sistemas de coordenadas com matrizes para se transformar entre eles. Isso não é necessariamente fácil de entender no início, mesmo se você tiver uma sólida geometria e álgebra.

Além disso, pelo menos nos EUA, as pessoas que passaram pela típica sequência matemática do ensino médio estão acostumadas a pensar em geometria em termos de linhas, declives, ângulos etc. Eles precisam desaprender essas coisas até certo ponto e aprender a pense nisso em termos de vetores e matrizes. Não é que os conceitos de álgebra linear sejam tão extensos, mas que eles sejam um conjunto de conceitos um pouco diferente dos usados ​​na geometria clássica, que as pessoas provavelmente aprenderam na escola.


BTW, a distinção entre vetores e pontos está nas operações que você pode executar neles. Embora ambos sejam representados (em um sistema de coordenadas específico) por uma lista de componentes e, portanto, pareçam "iguais", as operações permitidas não são as mesmas. Por exemplo, você pode adicionar dois vetores ou multiplicar um vetor por um escalar. Você não pode fazer isso com pontos - ou pelo menos, não faz sentido fazê-lo. Mas você pode subtrair dois pontos, e o resultado é um vetor de um ponto para o outro. Você também pode adicionar um ponto a um vetor para obter um novo ponto.

Pontos e vetores também se comportam de maneira diferente em relação às transformações. Ou seja, os pontos estão sujeitos à tradução, enquanto os vetores não. Considere o exemplo de um objeto que se move com uma posição (ponto) e uma velocidade (vetor); se você traduzir o objeto para um lugar diferente, alterará sua posição, mas não sua velocidade.

De fato, promovendo essa linha de raciocínio, não existem apenas vetores; há outras entidades como covectors e bivectors , que também pode "olhar como" um vetor em termos de ter uma lista de componentes em um sistema de coordenadas, mas que se comportam de forma diferente em termos de operações disponíveis ea forma como eles reagem às transformações. Todos eles pertencem a um campo de matemática chamado álgebra de Grassmann . Além disso, pode-se ser ainda mais geral e considerar a álgebra tensorial . Isso é coisa avançada, no entanto.

Nathan Reed
fonte
1
Uma grande parte da minha confusão foi por que as pessoas pensavam que os vetores eram tão complicados, então isso ajudou. Talvez eu os ache simples, porque na verdade eu estava usando geometria na programação antes de ter cursado a geometria do ensino médio.
starscape 27/09/2013
1
O exemplo de posição versus velocidade usado em algumas respostas é dividido quando você tem posição (ponto), velocidade (vetor) e aceleração (vetor). Se você alterar a velocidade, a aceleração não muda, mas ambos são vetores. A distinção entre vetor e ponto, embora correta, é uma distração - na prática, todos os jogos armazenam posições como vetores implicitamente relativos à origem (talvez indiretamente se estiver usando um gráfico de cena).
Alistair Buxton
1
@AlistairBuxton Eu não sigo o seu ponto - se você traduzir seu sistema de coordenadas, nem a velocidade nem a aceleração de um objeto mudam, mas se você girar as coordenadas, a velocidade e a aceleração serão giradas. Então eu não vejo onde algo "quebra".
22813 Nathan Reed
2
@AlistairBuxton E não existe algo como "posições de loja como vetores". Jogos armazenar ambas as posições e vetores como listas de componentes escalares em um determinado sistema de coordenadas. Isso não os torna a mesma coisa. Para fazer uma analogia: ints e floats são armazenados como uma lista de bits binários, mas significam coisas diferentes e têm operações diferentes.
Nathan Reed
1
@ Val Você está completamente fora da base. Um vetor não é [posição p, velocidade v]. Ele não tem um ponto e uma velocidade dentro dele. É apenas [velocidade x, velocidade y, velocidade z] (para um vetor de velocidade). A questão é que esse é um tipo de coisa diferente de [posição x, posição y, posição z].
Nathan Reed
7

Vetores realmente não são tão ruins. Há apenas um pouco de matemática com as quais as pessoas não estão familiarizadas.

Em primeiro lugar, um vetor não representa uma posição no espaço. Isso é conceitualmente muito importante. Um vetor representa uma direção, como 'Norte', e uma magnitude. Em um mapa com coordenadas Math XY normais, 'Norte' seria o vetor (0,1) (acima no eixo Y). Isso não deve ser confundido com a posição (0,1), que é uma unidade acima, onde quer que você coloque a origem. Um vetor é uma direção e uma magnitude .

Deslocamento (movimento) é um vetor (como mover duas unidades para cima e uma unidade para a direita), a posição não.

Vetores, por si só, não são com o que as pessoas têm problemas. Geralmente são matrizes e operações em vetores.

Por exemplo, se você multiplicar um Vetor por matriz especial chamada 'Matriz de rotação', o vetor será girado pela quantidade especificada pela matriz. Além disso, algumas pessoas têm problemas com a multiplicação de matrizes. Procure se você não estiver familiarizado com isso.

Além disso, você pode 'empilhar' essas matrizes (ou operações) juntas. Como Gire 90 graus ao redor do eixo X, depois gire 90 graus ao redor do eixo Y. Se chamarmos a primeira matriz M e a segunda matriz N, a operação seria v * M * N. No entanto, a multiplicação de matrizes não é comutativa, portanto, não é o mesmo que v * N * M.

Na programação de gráficos, você realiza operações consideravelmente mais complicadas em vetores e outras matrizes regularmente. Transformações para FoV e colocar suas coordenadas no espaço da tela, etc. Não é tão ruim assim, mas pode ser intimidador para novas pessoas.

TASagent
fonte