Jogos aplicados em sala por alfabetizadoras do PNAIC Biguaçu/SC
Vetores Aplicados Ao Desenvolvimento de Jogos
-
Upload
carygrant2003 -
Category
Documents
-
view
317 -
download
3
Transcript of Vetores Aplicados Ao Desenvolvimento de Jogos
Vetores aplicados ao desenvolvimento de jogos
Eu estudei vetores no colégio e na faculdade, mas nunca havia entendido qual sua utilização prática. Já li vários artigos sobre vetores, mas todos eles se focam em ensinar como realizar as operações necessárias: adição, subtração, etc. Neste artigo, quero focar mais tempo em mostrar aplicações, do que em ensinar a matemática que envolve o cálculo com vetores. Tomei como base alguns artigos que li na própria internet e agradeço muito aos seus autores, principalmente ao Wolfire que fez um extraordinário trabalho descrevendo e ilustrando a utilização de vetores em jogos. Adicionei também meus comentários e meu próprio jeito de descrever as coisas, tentando tornar mais fácil de entender o conteúdo.
Exemplos de utilização de vetores:Imaginando um sistema de coordenadas cartesianas com o centro na posição (0,0), os exemplos acima mostram como descrever a posição do homem em relação ao centro é a coordenada x=2, que indica que ele está a duas oposições à direita da origem e y=1 que indica que ele está uma posição acima da origem, ou simplesmente: (2,1).
Um vetor, por si só é apenas um conjunto de números. Esses números podem representar qualquer coisa dependendo do contexto em que são aplicados. Nos exemplos acima, a coordenada (-2,3) pode representar a direção em que o avião está se movimentando, como também poderia representar a posição de um obstáculo.Por isso as unidades são muito importantes e o programador deve cuidar de representá-las corretamente.
Vamos dizer que temos o seguinte vetor V(3,5,2). Esses números não significam nada por si só. Quando alguém 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 posição na vertical e o terceiro algarismo representa a profundidade, então esse vetor pode significar a posição de um objeto no espaço, conforme figura abaixo:
Adição de VetoresUtilização: Por que adicionar Vetores?Uma utilização da adição de vetores pode ser: Integração com física
Exemplo: Mario pulando
Definições:1 - Os vetores representam a velocidade do Mário em cada frame.2 - Ele começa na posição (0,0). 3 - Quando começa o salto, sua velocidade é (1,3) - ele está se movendo para cima e também para a direita. 4 - Sua aceleração 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 posição inicial (0,0). Então, para começar sua nova posição é: (1,3). 2 - Em seguida, adicionar a sua aceleração (0, -1) a sua velocidade (1,3) e conseguir sua nova velocidade que é: (1,2).3 - Fazemo-lo novamente para o segundo quadro. Nós adicionamos a sua velocidade (1,2) a sua posição (1,3) para obter (2,5). Em seguida, adicionamos a sua aceleração (0, -1) a sua velocidade (1,2) para obter sua nova velocidade: (1,1).
Normalmente, nos jogos o jogador controla a aceleração do personagem com o teclado ou joystick, e o jogo calcula a nova velocidade e posição através de integração física (via vetores neste caso).
Poderíamos fazer a mesma coisa utilizando equações físicas, (http://educacao.uol.com.br/fisica/ult1700u3.jhtm) ou através de devidas e integrais, mas este não é o escopo deste artigo. Basta fazer dois comentários: 1 - que o processo de derivação matemática equivale ao cálculo da taxa de variação, assim a velocidade é a derivada do espaço (taxa de variação do espaço percorrido) e a aceleração (taxa de variação da velocidade) é a derivada da velocidade.2 – que o método descrito acima, o qual é conhecido como força 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 direção do pulo a qualquer frame mais facilmente.
Subtração de Vetores:
Utilização: Normalmente é utilizada para descobrir o vetor necessário para se atingir uma determinada posição. Vejamos no exemplo abaixo:
Digamos que o jogador está de pé, na posição (1,2) com um rifle laser, e um robô inimigo está na posição (4,3). Para obter o vetor que o laser deve viajar para acertar o robô, você pode subtrair a posição do jogador da posição do robô:
(4,3)-(1,2) = (4-1, 3-2) = (3,1).
Multiplicação de Vetor por um escalar
Utilização: Utilizado para aplicar forças aos objetos, por exemplo, a força que a resistência do ar exerce em um determinado objeto.
Podemos simular a resistência 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 tópico.....)
Para saber o comprimento de um vetor, utilizamos o Teorema de Pitágoras, que diz o seguinte: A soma dos quadrados dos catetos de um triângulo é igual ao quadrado da hipotenusa.
Exemplo de Utilização:
Se tivermos uma nave com vetor de velocidade V (4,3), podemos também querer saber o quão rápido ela está indo, a fim de calcular o quanto a tela deve agitar ou o quanto de combustível 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 triângulo com lados 3 e 4, e use o teorema de Pitágoras 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
Distância
Se o jogador está em P (3,3) e há uma explosão de E (1,2), precisamos encontrar a distância entre eles para ver quanto dano o jogador tem. Poderíamos fazer isto facilmente utilizando o Teorema de Pitágoras também... Mas no entanto, não podemos calcular a hipotenusa (distância) se não sabemos ainda os lados
dos catetos. Para solucionar este problema então, teremos que combinar o uso de duas ferramentas que já estudamos: subtração e comprimento. Ao subtrair PE para obter o vetor de entre eles, ou seja, os catetos do triângulo, e depois encontrar o comprimento deste vetor para obter a distância entre eles.
A ordem não importa aqui, | | EP nos dará o mesmo resultado.
Distância = |P-E| = |(3,3)-(1,2)| = |(2,1)| = sqrt(22+12) = sqrt(5) = 2.23
Normalização
Em matemática, um vetor unitário ou versor num espaço vetorial normalizado é um vetor cujo comprimento é 1.Um vetor unitário é muitas vezes denotado com um “circunflexo”, logo: î.O termo vetor normalizado é algumas vezes utilizado simplesmente como sinônimo para vetor unitário.
Quando estivermos lidando com as direções (ao contrário de posições ou velocidades), é importante que eles tenham unidade de comprimento (comprimento de 1). Isto torna a vida muito mais fácil para nós. Por exemplo, digamos que há uma arma apontada na direção de (1,0) que dispara um tiro de 20 m / s. Qual é a velocidade da bala? Desde que a direção tem comprimento 1, podemos apenas multiplicar a direção e velocidade do projétil para obter a velocidade da bala: (20,0). Se o vetor de direção tivesse qualquer outro comprimento, não poderíamos fazer isso - a bala iria demasiado depressa ou demasiado lento.
Então, como vamos normalizar um vetor (ajustar o comprimento a uma unidade)? Fácil, 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 começar (05/03, 05/04).
Agora podemos usar o teorema de Pitágoras 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 estão apontando para a mesma direção, o produto escalar é positivo. Quando eles são perpendiculares, o produto escalar é zero, e quando elas apontam em direções opostas, é negativo. Basicamente, é proporcional ao quanto os vetores estão apontando na mesma direção. Esta é uma pequena amostra do poder do produto do ponto, e já bastante útil!O produto vetorial pode também ser utilizado para calcular a normal de um triângulo ou outro polígono, para permitir efeitos que simulam iluminação, dentre outros.
Como Calcular:
Em matemática, o produto vetorial é uma operação binária sobre vetores em um espaço vetorial. Pode ser denominado também como produto externo. Seu principal uso baseia-se 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 inútil num primeiro momento, mas vamos olhar alguns exemplos:
Exemplo:
Digamos que temos um guarda na posição G (1,3) olhando na direção D (1,1), com um campo de visão de 180 °. Temos um herói covarde por na posição H (3,2). Ele está no campo de visão do guarda? Podemos descobrir, verificando o sinal do produto de D e V (o vetor que parte do guarda para o herói). Isso nos dá:
Bibliografia:http://blog.wolfire.com/2009/07/linear-algebra-for-game-developers-part-1/
http://pt.wikipedia.org/wiki/Produto_vetorial