Entrar
Últimos assuntos
» player não consegue andarpor 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
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
O Básico Sobre Vetores
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 = (x, y)
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.
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.
Figura 2
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:
Magnitude de um vetor
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)?
Figura 4
Repare que devemos utilizar duas barras verticais em volta de um vetor para denotar seu comprimento.
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.
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- Data de inscrição : 13/05/2010
Reputação : 3
Número de Mensagens : 357
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: O Básico Sobre Vetores
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 ?
=)
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- Games Ranking :
Data de inscrição : 14/04/2011
Reputação : 163
Número de Mensagens : 692
Prêmios :
x 0 x 3 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: O Básico Sobre Vetores
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 ) 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- Data de inscrição : 13/05/2010
Reputação : 3
Número de Mensagens : 357
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: O Básico Sobre Vetores
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- Data de inscrição : 02/10/2009
Reputação : 52
Número de Mensagens : 2232
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Plataformas :- Game Maker 8.0 ou 8.1
- Game Maker Studio 1.4
- Game Maker Studio 2.0
- Javascript
- Outros
Tópicos semelhantes
» Básico sobre Variáveis
» Tutorial básico sobre Arrays
» [Engine] Vetores 2D
» Pixel Art e Vetores õ/ [Exposição]
» Utilizando vetores nos movimentos
» Tutorial básico sobre Arrays
» [Engine] Vetores 2D
» Pixel Art e Vetores õ/ [Exposição]
» Utilizando vetores nos movimentos
GMBR :: Ensine & Aprenda :: Tutoriais :: Game Maker
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos