Sei sulla pagina 1di 8

Vetores aplicados ao desenvolvimento de jogos

Eu estudei vetores no colgio e na faculdade, mas nunca havia entendido qual sua utilizao prtica. J li vrios artigos sobre vetores, mas todos eles se focam em ensinar como realizar as operaes necessrias: adio, subtrao, etc. Neste artigo, quero focar mais tempo em mostrar aplicaes, do que em ensinar a matemtica que envolve o clculo com vetores. Tomei como base alguns artigos que li na prpria internet e agradeo muito aos seus autores, principalmente ao Wolfire que fez um extraordinrio trabalho descrevendo e ilustrando a utilizao de vetores em jogos. Adicionei tambm meus comentrios e meu prprio jeito de descrever as coisas, tentando tornar mais fcil de entender o contedo.

Exemplos de utilizao de vetores: Imaginando um sistema de coordenadas cartesianas com o centro na posio (0,0), os exemplos acima mostram como descrever a posio do homem em relao ao centro a coordenada x=2, que indica que ele est a duas oposies direita da origem e y=1 que indica que ele est uma posio acima da origem, ou simplesmente: (2,1). Um vetor, por si s apenas um conjunto de nmeros. Esses nmeros podem representar qualquer coisa dependendo do contexto em que so aplicados. Nos exemplos acima, a coordenada (-2,3) pode representar a direo em que o avio est se movimentando, como tambm poderia representar a posio de um obstculo. Por isso as unidades so muito importantes e o programador deve cuidar de represent-las corretamente. Vamos dizer que temos o seguinte vetor V(3,5,2). Esses nmeros no significam nada por si s. Quando algum v esse vetor ir perguntar: 3 o que?, 5 o que e 2 o que? Se o programador decidir que o primeiro algarismo significa o deslocamento na horizontal, o segundo algarismo representa a posio na vertical e o terceiro algarismo representa a profundidade, ento esse vetor pode significar a posio de um objeto no espao, conforme figura abaixo:

Adio de Vetores Utilizao: Por que adicionar Vetores? Uma utilizao da adio de vetores pode ser: Integrao com fsica Exemplo: Mario pulando

Definies: 1 - Os vetores representam a velocidade do Mrio em cada frame. 2 - Ele comea na posio (0,0). 3 - Quando comea o salto, sua velocidade (1,3) - ele est se movendo para cima e tambm para a direita. 4 - Sua acelerao durante o salto (0,-1), porque a gravidade o puxa para baixo.

Vamos acompanhar o salto nos primeiros frames: 1 - Para o primeiro quadro: somaremos a velocidade (1,3) a sua posio inicial (0,0). Ento, para comear sua nova posio : (1,3). 2 - Em seguida, adicionar a sua acelerao (0, -1) a sua velocidade (1,3) e conseguir sua nova velocidade que : (1,2). 3 - Fazemo-lo novamente para o segundo quadro. Ns adicionamos a sua velocidade (1,2) a sua posio (1,3) para obter (2,5). Em seguida, adicionamos a sua acelerao (0, -1) a sua velocidade (1,2) para obter sua nova velocidade: (1,1). Normalmente, nos jogos o jogador controla a acelerao do personagem com o teclado ou joystick, e o jogo calcula a nova velocidade e posio atravs de integrao fsica (via vetores neste caso). Poderamos fazer a mesma coisa utilizando equaes fsicas, (http://educacao.uol.com.br/fisica/ult1700u3.jhtm) ou atravs de devidas e integrais, mas este no o escopo deste artigo. Basta fazer dois comentrios: 1 - que o processo de derivao matemtica equivale ao clculo da taxa de variao, assim a velocidade a derivada do espao (taxa de variao do espao percorrido) e a acelerao (taxa de variao da velocidade) a derivada da velocidade. 2 que o mtodo descrito acima, o qual conhecido como fora bruta, mais utilizado em jogos pois permite ao jogador interagir a qualquer momento como jogo, ou seja, no exemplo do Mario pulando, o jogador poderia mudar a direo do pulo a qualquer frame mais facilmente. Subtrao de Vetores: Utilizao: Normalmente utilizada para descobrir o vetor necessrio para se atingir uma determinada posio. Vejamos no exemplo abaixo:

Digamos que o jogador est de p, na posio (1,2) com um rifle laser, e um rob inimigo est na posio (4,3). Para obter o vetor que o laser deve viajar para acertar o rob, voc pode subtrair a posio do jogador da posio do rob: (4,3)-(1,2) = (4-1, 3-2) = (3,1).

Multiplicao de Vetor por um escalar Utilizao: Utilizado para aplicar foras aos objetos, por exemplo, a fora que a resistncia do ar exerce em um determinado objeto.

Podemos simular a resistncia exercida pelo ar, multiplicando a velocidade do jogador por 0,9 a cada frame. Para fazer isso, basta multiplicar cada componente do vetor por escalar. Se a velocidade do jogador (10,20), a nova velocidade : 0.9*(10,20) = (0.9*10, 0.9*20) = (9,18). Ferramentas para trabalhar com Vetores Comprimento / Magnitude (Rever este tpico.....) Para saber o comprimento de um vetor, utilizamos o Teorema de Pitgoras, que diz o seguinte: A soma dos quadrados dos catetos de um tringulo igual ao quadrado da hipotenusa.

Exemplo de Utilizao:

Se tivermos uma nave com vetor de velocidade V (4,3), podemos tambm querer saber o quo rpido ela est indo, a fim de calcular o quanto a tela deve agitar ou o quanto de combustvel ela deve usar. Para isso, precisamos encontrar o comprimento (ou magnitude) do vetor V. O comprimento de um vetor frequentemente escrito utilizando o sinal | | , de modo que o comprimento de V | V |. Podemos pensar em V como um tringulo com lados 3 e 4, e use o teorema de Pitgoras para encontrar a hipotenusa: x2 + y2 = h2. Isto , o comprimento de um vetor com componentes H (x, y) sqrt (x2 + y2). Assim, para calcular a velocidade do nosso navio, que s usar: |V| = sqrt(42+32) = sqrt(25) = 5 Distncia

Se o jogador est em P (3,3) e h uma exploso de E (1,2), precisamos encontrar a distncia entre eles para ver quanto dano o jogador tem. Poderamos fazer isto facilmente utilizando o Teorema de Pitgoras tambm... Mas no entanto, no podemos calcular a hipotenusa (distncia) se no sabemos ainda os lados dos

catetos. Para solucionar este problema ento, teremos que combinar o uso de duas ferramentas que j estudamos: subtrao e comprimento. Ao subtrair PE para obter o vetor de entre eles, ou seja, os catetos do tringulo, e depois encontrar o comprimento deste vetor para obter a distncia entre eles. A ordem no importa aqui, | | EP nos dar o mesmo resultado. Distncia = |P-E| = |(3,3)-(1,2)| = |(2,1)| = sqrt(22+12) = sqrt(5) = 2.23 Normalizao Em matemtica, um vetor unitrio ou versor num espao vetorial normalizado um vetor cujo comprimento 1. Um vetor unitrio muitas vezes denotado com um circunflexo, logo: . O termo vetor normalizado algumas vezes utilizado simplesmente como sinnimo para vetor unitrio. Quando estivermos lidando com as direes (ao contrrio de posies ou velocidades), importante que eles tenham unidade de comprimento (comprimento de 1). Isto torna a vida muito mais fcil para ns. Por exemplo, digamos que h uma arma apontada na direo de (1,0) que dispara um tiro de 20 m / s. Qual a velocidade da bala? Desde que a direo tem comprimento 1, podemos apenas multiplicar a direo e velocidade do projtil para obter a velocidade da bala: (20,0). Se o vetor de direo tivesse qualquer outro comprimento, no poderamos fazer isso - a bala iria demasiado depressa ou demasiado lento. Ento, como vamos normalizar um vetor (ajustar o comprimento a uma unidade)? Fcil, dividimos cada componente pelo comprimento do vetor. Se queremos normalizar vetor u com componentes (3,4), basta dividir cada componente pelo seu comprimento, 5, para comear (05/03, 05/04).

Agora podemos usar o teorema de Pitgoras para provar que tem o comprimento 1: (3/5)2 + (4/5)2 = 9/25 + 16/25 = 25/25 = 1 Produto

Aqui, podemos ver que quando os vetores esto apontando para a mesma direo, o produto escalar positivo. Quando eles so perpendiculares, o produto escalar zero, e quando elas apontam em direes opostas, negativo. Basicamente, proporcional ao quanto os vetores esto apontando na mesma direo. Esta uma pequena amostra do poder do produto do ponto, e j bastante til! O produto vetorial pode tambm ser utilizado para calcular a normal de um tringulo ou outro polgono, para permitir efeitos que simulam iluminao, dentre outros. Como Calcular: Em matemtica, o produto vetorial uma operao binria sobre vetores em um espao vetorial. Pode ser denominado tambm como produto externo. Seu principal uso baseiase no fato que o resultado de um produto vetorial sempre perpendicular a ambos os vetores originais. O produto vetorial pode ser representado graficamente, como se segue:

Para obter o produto escalar de dois vetores, multiplicamos os componentes e, em seguida os adicionamos. (a1,a2)(b1,b2) = a1b1 + a2b2 Por exemplo, (3,2) (1,4) = 3 * 2 * 1 + 4 = 11. Este parece tipo de intil num primeiro momento, mas vamos olhar alguns exemplos: Exemplo:

Digamos que temos um guarda na posio G (1,3) olhando na direo D (1,1), com um campo de viso de 180 . Temos um heri covarde por na posio H (3,2). Ele est no campo de viso do guarda? Podemos descobrir, verificando o sinal do produto de D e V (o vetor que parte do guarda para o heri). Isso nos d:

Bibliografia: http://blog.wolfire.com/2009/07/linear-algebra-for-game-developers-part-1/ http://pt.wikipedia.org/wiki/Produto_vetorial

Potrebbero piacerti anche