GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» player não consegue andar
por lovn7 Qui 21 Nov 2024, 13:33

» É possível fazer istó no game maker
por William Lima Qui 21 Nov 2024, 10:56

» Rio Rise - novo launcher do Gta San Andreas SAMP Brasil
por Lua Sáb 16 Nov 2024, 20:22

» (Resolvido) Cenario longo x Texture Pages
por josuedemoraes Sáb 16 Nov 2024, 15:31

» Kids' band
por Adilson Lucindo Santos Sex 15 Nov 2024, 12:23

» (RESOLVIDO) Engasgos-Troca de Sprites/animações
por josuedemoraes Ter 12 Nov 2024, 01:49

» Block Room - DEMO
por Joton Qua 06 Nov 2024, 22:58

» Game Infinito vertical (subindo)
por macmilam Sáb 26 Out 2024, 12:36

» Retorno da GMBR!!!
por Dancity Ter 22 Out 2024, 16:36

» Máquina de estados
por aminaro Qui 10 Out 2024, 13:33

» como faço pra um objeto colidir com o outro e diminuir a vida do player ?
por josuedemoraes Qui 03 Out 2024, 16:51

» RESOLVIDO: Colisão com objetos moveis
por josuedemoraes Qua 02 Out 2024, 20:28

» Crypt of the Blood Moon
por divin sphere Qua 11 Set 2024, 18:18

» como fazer um objeto seguir?
por divin sphere Dom 18 Ago 2024, 18:08

» Procuro de alguém para Modelar/Texturizar/Animar objetos 3D
por un00brn Dom 11 Ago 2024, 11:10

» Destruição de cenário (estilo DD Tank)
por CoronelZeg Sex 09 Ago 2024, 17:16

» RESOLVIDO-Como destruir uma instancia especifica de um objeto
por josuedemoraes Ter 23 Jul 2024, 00:40

» Automatizar a coleta de id
por GabrielXavier Seg 22 Jul 2024, 18:01

» Preciso de ajuda para concluir um pequeno projeto
por lmoura Qui 27 Jun 2024, 15:45

» ANGULO ACOMPANHAR O OBJETO
por Klinton Rodrigues Qui 27 Jun 2024, 08:34

» Musica reinicia quando sala reinicia
por GabrielXavier Ter 18 Jun 2024, 07:28

» como fazer uma copia de gd
por generico_cube Sex 14 Jun 2024, 15:48

» Square Adventure
por guilherme551 Ter 11 Jun 2024, 09:54

» como posso definir limite de uma variavel
por GabrielXavier Sex 07 Jun 2024, 14:14

» [Resolvido] Dúvida, colisão única de objeto
por vdm842 Sex 24 maio 2024, 09:50


O Básico Sobre Vetores

3 participantes

Ir para baixo

O Básico Sobre Vetores Empty O Básico Sobre Vetores

Mensagem por LeandroDaher Dom 04 maio 2014, 20:18

Título: O Básico Sobre Vetores
Versão do GM: Todas
Dificuldade: Varia para cada pessoa
Link para download da Engine: Não possui engine
Requer Extensões: Não
Requer DLLs: Não
Tags: Básico; Vetor; Vetores; Matemática


Vetores

    Vetores são amplamente utilizados no campo da matemática e física, principalmente no desenvolvimento de jogos sendo quase que obrigatório para todos os programadores. Utilizaremos vetores frequentemente durante o desenvolvimento de um jogo, seja quando quisermos implementar uma Inteligência Artificial ou apenas fazer coisas mais básicas como rotação e translação.

    Mas o que é um vetor? Você provavelmente já aprendeu que um ponto no plano cartesiano pode ser expresso com dois números, por exemplo: 

P = (x, y)

    Um vetor 2D (bidimensional) é parecido, temos abaixo:
V = (xy)

    Entretanto, embora similares, um vetor representa dois valores: direção e magnitude. O lado direito da Figura 1 mostra o vetor (3, 2) situado na origem.


O Básico Sobre Vetores 124akc9
Figura 1: Um ponto P e um vetor V.

Adição de Vetores

    Imagine que você está em uma ilha e tem um mapa e nele está escrito uma mensagem: O tesouro está enterrado no ponto X, você pode chegar até lá seguindo os vetores (-5, 5), (0, -10), (13, 7), (-4, 3).

    Agora imagine que além de você existem mais três pessoas na ilha, cada uma com uma cópia deste mapa. Enquanto todos iam em direção a cada vetor você foi mais esperto e encontrou um caminho direto para o tesouro, quando todos chegaram o tesouro não estava mais lá e você saiu rindo e feliz da vida. Você se deu bem porque sabia que ao somar os vetores, você encontraria um único vetor que o levaria direto ao ponto X, resultando no vetor (4, 5), exatamente o mesmo resultado se seguisse cada vetor individualmente.

    A Figura 2 mostra o caminho que seus três concorrentes seguiram e a Figura 3 mostra o caminho que você seguiu.


O Básico Sobre Vetores 2m4py5t

Figura 2



O Básico Sobre Vetores 2qujbkk

Figura 3

    Portanto para somar os vetores, basta somar seus componentes individualmente. Por exemplo:

v = (4, 2)

u = (6, 3)


Vr = v + u

Vr = (4+6, 2+3)

Vr = (10, 5)


Diferença entre vetores


    Se v=(x,y) e u=(a,b), definimos a diferença entre v e u, por:

v - u = (x-a,y-b)
Produto de um número escalar por um vetor

    Se v=(x,y) é um vetor e c é um número real, definimos a multiplicação de c por v como:

c * v = (c * vx, c * vy)


Magnitude de um vetor


    A magnitude (ou módulo) de um vetor é seu comprimento. Para calcular a magnitude basta utilizar o Teorema de Pitágoras. Por exemplo, qual a magnitude do vetor (4, 5)?


O Básico Sobre Vetores Mrts1i
Figura 4


    Repare que devemos utilizar duas barras verticais em volta de um vetor para denotar seu comprimento.


O Básico Sobre Vetores Eskp6s
Figura 5


Normalização de Vetores


   Quando um vetor é normalizado, ele retém sua direção, mas sua magnitude (ou módulo) é recalculada para que tenha uma unidade de comprimento (um comprimento de 1). Para fazer isso divide-se cada componente do vetor pela magnitude dele. Sendo assim:

N = v / |v|

   Para normalizar o vetor (4, 5) podemos fazer isto:

NovoX = 4 / 6.403 = 0.62
NovoY = 5 / 6.403 = 0.78

    Vetores normalizados são muito úteis, você saberá o porquê em breve.


Produto escalar (Dot Product)


    O produto escalar é o ângulo entre dois vetores. Dado dois vetores 2D u e v a equação é a seguinte:


u • v = uxvx + uyvy


    O símbolo • denota o produto escalar (em inglês, ponto é dot). Entretanto a equação não nos dá um ângulo. Se você quer um ângulo, você vai ter um! Abaixo uma outra maneira de calcular o produto escalar:


u • v = |u||v| cos(Θ)


    Rearranjando temos:


cos(Θ) = u • v / |u||v|


    É aqui que você descobre um dos usos úteis da normalização de vetores, se u e v são normalizados, podemos simplificar a equação:


cos(Θ) = u • v / 1 x 1


cos(Θ) = u • v


cos(Θ) = uxvx + uyvy


Obs.: Θ = ângulo.


    Um dos grandes usos do produto escalar é que você pode saber rapidamente quando um objeto está na frente ou atrás de outro. O produto escalar do vetor da face do objeto 1 e do vetor do objeto 2 para o objeto 1 será positivo se o objeto 2 estiver na frente do plano da face do objeto 1 e negativo se estiver atrás. Veja na figura 6.


O Básico Sobre Vetores 9svs5w
Figura 6


    Chegamos ao fim do tutorial, espero que tenha gostado. Espero que pesquisem mais sobre o assunto pois eu o abordei muito vagamente aqui, obrigado por ler.


Última edição por leandrohackerx em Dom 04 maio 2014, 23:21, editado 3 vez(es) (Motivo da edição : Problemas com tags html.)
LeandroDaher
LeandroDaher

Data de inscrição : 13/05/2010
Reputação : 3
Número de Mensagens : 357
Prêmios : O Básico Sobre Vetores Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

O Básico Sobre Vetores Empty Re: O Básico Sobre Vetores

Mensagem por fredcobain Dom 04 maio 2014, 21:56

Leandro, seu tutorial está bem escrito, bem ilustrado e bem identado.

Mas eu acredito que iria agregar bastante valor vc dar uma aplicação prática (para jogos) dessa disciplina no seu tutorial. Em quais situações poderíamos aplicar esses conhecimentos ?

Eu sugiro começar pelas funções do GML lenghtdir_x e lenghtdir_y (que usam componentes de vetor).
Depois falar um pouco sobre as funções trigonometricas (e suas aplicações).

Com isso, certamente seu tutorial vai ter potencial para entrar no Staff Choice.

E aí, topa o desafio ?
=)
fredcobain
fredcobain

Games Ranking : Sem avaliações

Data de inscrição : 14/04/2011
Reputação : 163
Número de Mensagens : 692
Prêmios : O Básico Sobre Vetores Empty

Medalhas x 0 Tutoriais x 3 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

O Básico Sobre Vetores Empty Re: O Básico Sobre Vetores

Mensagem por LeandroDaher Dom 04 maio 2014, 22:19

Opa, gostei da ideia. Estou a uns dois anos sem mexer com GM, passei este tempo aprendendo sobre como criar jogos do zero (ainda não tomei vergonha na cara pra criar um jogo Smile ) e estudando um pouco de música. Vou preparar um material esta semana pra postar algo mais completo aqui, só preciso de uns dias pra organizar tudo pois tenho tempo apenas a noite. Valeu!
LeandroDaher
LeandroDaher

Data de inscrição : 13/05/2010
Reputação : 3
Número de Mensagens : 357
Prêmios : O Básico Sobre Vetores Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

O Básico Sobre Vetores Empty Re: O Básico Sobre Vetores

Mensagem por Gabreel Seg 05 maio 2014, 03:10

Além do que o Fred falou aconselho que explique um pouco melhor os vetores, acho que é um pouco complicado você ir de uma ideia praticamente vazia para normas e consequentemente para ângulo entre vetores. Na realidade não só vetores são essenciais na programação de jogos como a trigonometria e toda  geometria. O fórum precisa de mais aulinhas como essa, é até interessante, se você quiser, 'ensinar' esses assuntos!
Gabreel
Gabreel

Data de inscrição : 02/10/2009
Reputação : 52
Número de Mensagens : 2232
Prêmios : O Básico Sobre Vetores Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Javascript
  • Outros


Ir para o topo Ir para baixo

O Básico Sobre Vetores Empty Re: O Básico Sobre Vetores

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos