Artigo sobre vetores matemáticos

22 respostas
V

Oi pessoal,

Deixei no fórum de programação de jogos um artigo sobre vetores matemáticos. Para quem está se interessando por jogos e computação gráfica aprender esse conceito é uma boa, pois com ele você pode:

  • Fazer calculos balísticos: tiros de revolver, balas de canhão, bolinhas de tênis. Com ou sem vento;
  • Calcular campos de visão;
  • Fazer objetos se deslocarem junto a outros: seja uma lua orbitando um planeta, uma câmera seguindo um personagem, etc;
  • Calcular trajetórias em linha reta
  • Efetuar cálculos de iluminação.
  • Cálculos de comportamento de grupo, os Steering Behaviors.

Acompanham o artigo a implementação de classes de vetores 2D e 3D tanto para Java quanto para C++. Quem se interessar, o link é esse aqui:
O uso de vetores nos jogos

Por favor, deixem sua opinião no site. E comentários também serão muito bem-vindos! :slight_smile:

22 Respostas

V

Republiquei o artigo sobre vetores no meu portal, o Ponto V! Agora o conteúdo está online, não é mais um PDF. O link nesse post foi atualizado. :slight_smile:

J

Excelente artigo vini. muito bem ilustrado e fácil de entender.

V

Excelente artigo vini. muito bem ilustrado e fácil de entender.

Valeu.

Um futuro artigo talvez traga a parte de vetores em 3D, incluindo usos para o produto vetorial. Mas já seria um tema um pouco mais complexo que decidi trabalhar em separado.

M

Hehe… só o que posso dizer. “I read it first”

Já tinha gostado naquela época e agora tem mais coisas.

Ficou bem legal.

V

Mark_Ameba:
Hehe… só o que posso dizer. “I read it first”

Já tinha gostado naquela época e agora tem mais coisas.

Ficou bem legal.

Putz. Pior que é, vc foi praticamente o cara que apontou os primeiros erros de português, hehehehe.
Aliás, se alguém aqui ler e encontrar, por favor, pode corrigir.

U

Excelente! :smiley: :smiley:
vlw

L

Oi,

Muito bom! Parabéns =)

Tchauzin!

M

Ressaltando que aprendi Matematica Vetorial com esse artigo.

Realmente me ajudou muito.

R

Ola pessoal.

Gostei muito do artigo, está muito bem concebido. Parabéns!!
Tenho uma pequena dúvida. Espero que consigas ajudar.
É possível tirar uma probabilidade de colisão entre um vector com outro?
Queria tirar a probabilidade para assim poder evitar uma colisão entre dois vectores.

Cumprimentos
Rui

M

rp-braga:
Ola pessoal.

Gostei muito do artigo, está muito bem concebido. Parabéns!!
Tenho uma pequena dúvida. Espero que consigas ajudar.
É possível tirar uma probabilidade de colisão entre um vector com outro?
Queria tirar a probabilidade para assim poder evitar uma colisão entre dois vectores.

Cumprimentos
Rui

O ViniGodoy é o cara certo para responder, mas eu posso te dar uma dica de como eu resolveria isso.

Primeiro criava uma linha a partir da posição de cada objeto sobre sua direção infinitamente, descobrir onde as duas retas se intersectam, e baseado no ponto de intersecção, ver quanto tempo cada objeto demora para chegar lá e se o tempo for quase o mesmo voce já sabe que eles irão colidir.

V

rp-braga:
Ola pessoal.

Gostei muito do artigo, está muito bem concebido. Parabéns!!
Tenho uma pequena dúvida. Espero que consigas ajudar.
É possível tirar uma probabilidade de colisão entre um vector com outro?
Queria tirar a probabilidade para assim poder evitar uma colisão entre dois vectores.

Cumprimentos
Rui

O que seus vetores representam? Vetores, por si só, não tem posições no espaço, portanto, nunca colidem (ou sempre colidem, se vc encarar que todos começam no 0,0).
O que quer dizer com “probabilidade de colisão”?

Você pode fazer o cálculo de ray tracing, e dizer se dois feixes colidem em algum ponto no espaço, e a que distância. Mas não há “probabilidades” nisso, pois o comportamente não é estatístico, e sim, deterministico.

Talvez se você descrever melhor seu problema podemos ajuda-lo a criar um modelo matemático adequado as suas necessidades.

V

Vai aqui um material pra te ajudar:
http://softsurfer.com/Archive/algorithm_0104/algorithm_0104B.htm#Line%20Intersections

J

Olá vini! Vc pode deixar a versão em pdf também para download?

V

A versão em pdf já está bastante desatualizada.

R

ViniGodoy:

O que seus vetores representam? Vetores, por si só, não tem posições no espaço, portanto, nunca colidem (ou sempre colidem, se vc encarar que todos começam no 0,0).
O que quer dizer com “probabilidade de colisão”?

Você pode fazer o cálculo de ray tracing, e dizer se dois feixes colidem em algum ponto no espaço, e a que distância. Mas não há “probabilidades” nisso, pois o comportamente não é estatístico, e sim, deterministico.

Talvez se você descrever melhor seu problema podemos ajuda-lo a criar um modelo matemático adequado as suas necessidades.

A ideia e ter varios vectores em movimento e conseguir fazer com que eles não colidam.
Temos dois vectores bastante afastados com diferentes velocidade de movimento. Eles vão em algum ponto colidir, mas não se sabe quando. Quanto mais próximos tiverem de se cruzarem com uma velocidade constante, maior é a probabilidade de passarem um por cima do outro.
Ou seja eles se eles tiverem a tal probabilidade muito alta um deles toma a decisão de diminuir/aumentar a velocidade de movimento afim de não passaram um por cima do outro.
Não sei se me consegui fazer entender com a minha explicação.

O problema é que não consigo perceber como vou conseguir saber quando dois vectores estão cruzando num certo espaço a uma certa altura.

Isto tudo é para tentar simular carros em movimento sobre segmentos de recta em java.

M

Esse calculo é deterministico, voce nao vai saber a “probabilidade” dele se chocar ali, mas sim “em quanto tempo” vão se chocar ali.

V

Dê uma olhada sobre steering behaviors:
http://www.red3d.com/cwr/steer/

Em especial Obstacle Avoidance:
http://www.red3d.com/cwr/steer/Obstacle.html

E unaligned collision avoidance:
http://www.red3d.com/cwr/steer/Unaligned.html

Se você quiser um modelo para veículos reais, aí é bom estudar um pouco a teoria de controladores.

R

ViniGodoy:
Dê uma olhada sobre steering behaviors:
http://www.red3d.com/cwr/steer/

Em especial Obstacle Avoidance:
http://www.red3d.com/cwr/steer/Obstacle.html

E unaligned collision avoidance:
http://www.red3d.com/cwr/steer/Unaligned.html

Se você quiser um modelo para veículos reais, aí é bom estudar um pouco a teoria de controladores.

Precisava de criar algo do género do Unaligned Collision Avoidance steering behavior. Sabes de algum exemplo java que eu posso ver?
A animação unaligned collision avoidance está brutal. Já andei a procura na net mas não consigo encontrar exemplo deste tipo de abordagem as colisões.

V

Se eu não me enganho, você podia baixar os applets desse site junto com o código fonte da OpenSteer.

De qualquer forma, dê uma lida no pdf sobre steering behaviors, cujo link está na página inicial. Ele explica como fazer boa parte dos efeitos.

D

Alguma recomendação de um bom livro de geometria analítica?

V

Se quiser livros com enfoques em jogos, veja as recomendações de livros do Ponto V:
http://pontov.com.br/site/livrosv

Há muitos livros recomendados de computação gráfica, geometria, matemática, física para jogos, etc.

M

ViniGodoy:
Se eu não me enganho, você podia baixar os applets desse site junto com o código fonte da OpenSteer.

De qualquer forma, dê uma lida no pdf sobre steering behaviors, cujo link está na página inicial. Ele explica como fazer boa parte dos efeitos.

Só é possivel baixar a engine em C, a versão Applet não é disponibilizada.

Criado 9 de julho de 2008
Ultima resposta 13 de ago. de 2011
Respostas 22
Participantes 8