Eu sou novo em programação e programação de jogos. Estou lendo algo sobre vetores e matemática, mas tenho uma pergunta - onde uso vetores na programação de jogos? Talvez alguém possa dar um exemplo simples de onde você está usando vetores (em 2D)?
Eu encontrei exemplos, mas na maioria deles eles estão no console onde eles produzem números e grandes exemplos que eu não entendo.
class Star
aquiPoint2D
usado emclass ResizeRectangle
Respostas:
O que são vetores?
Vetores são conjuntos de coordenadas de dimensão variável. Cada coordenada em um vetor representa uma posição absoluta nessa direção do espaço em que o vetor está.
Observe que, em todos os casos, atribuímos significado aos vetores para o nosso problema. Embora você encontre normalmente vetores sendo usados para geometria em jogos, não há razão para que você não possa fazer outra coisa com eles.
Por que eu uso vetores?
Primeiro, você nunca precisa usar vetores. Contanto que você esteja acompanhando xey, ou quaisquer coordenadas de sua preferência, de alguma forma você estará bem.
No entanto, a vantagem de usar vetores é que eles representam perfeitamente coisas como direção e posição e também possuem várias operações matemáticas definidas para facilitar sua vida.
Para um exemplo simples, considere o produto escalar .
Suponha que você tenha um sistema de radar em um jogo de cima para baixo. Todo inimigo que aparecer no setor do radar (algum pedaço em forma de torta em 2D) deve ter um pequeno ponto vermelho na tela. Então, você precisa descobrir quais são os inimigos na sua seção de radar.
Você pode testar se os inimigos estão dentro de um triângulo. Você também pode testar se os inimigos estão contidos na interseção dos dois meios espaços dos planos / linhas que definem os dois lados do setor de radar.
Ou você pode simplesmente usar um produto escalar para fazer a verificação. Aqui está como:
Isso é muito útil e agora também permite que você tenha facilmente radares que apontam em direções diferentes (apenas altere o vetor para frente) e tenham larguras diferentes (apenas altere o ângulo da largura do radar) - e você também pode reutilizar o mesmo código para esses casos !
Por que mais eu uso vetores?
Se você estiver em 2D, talvez a melhor maneira de obter efeitos e movimentos complexos (rotação, redimensionamento etc.) seja usar um gráfico de cena. Um planeta tem uma nave em órbita, a nave tem um drone em órbita. O cálculo para isso sem usar a matemática vetorial é realmente muito feio.
Com a matemática vetorial, representamos cada uma como tendo um ponto e uma matriz de transformação 3x3. O planeta usa sua transformação, a nave usa sua transformação e a transformação do planeta, e o drone usa sua transformação e a transformação da nave e a transformação do planeta.
Quando o planeta se move, você muda sua transformação, e a nave e o drone são posicionados automaticamente "de graça". Código muito mais limpo.
Ainda não está convencido. Os vetores também são a representação nativa de posição, geometria e movimento usada por quase todas as bibliotecas gráficas - e certamente pelo OpenGL e DirectX. Não é provável que você se afaste sem precisar usá-los.
Conclusão Os vetores são uma ferramenta poderosa para escrever código claro que resolve problemas geométricos de maneira limpa e elegante.
fonte
Um exemplo 2D são as coordenadas da tela, identifica um pixel na tela e possui um componente x e um y [x, y], isto é, posição superior esquerda da tela [0, 0]
Outro exemplo: imagine um texto rolando da borda direita da tela para a borda esquerda da tela. Agora você precisa definir a velocidade do texto de rolagem em pixels por segundo, ou seja, [-20, 0], o que significa que o texto rola 20 pixels para a esquerda por segundo e nunca altera a altura.
Outro exemplo mais avançado: imagine um jogo 2D que deve rodar em diferentes resoluções de tela 800x600, 1024x768 etc. Isso pode ser feito facilmente usando internamente uma largura de tela de 0,0 a 1,0 e uma altura de 0,0 a 1,0 para desacoplar a lógica do jogo da resolução de tela real. Agora, quando você desenha na tela, basta multiplicar o vetor interno pelo vetor de resolução:
note, todas as 3 variáveis são vetores 2D aqui, elas têm um componente x e um y, ou seja, para este internal_pos [0,5, 0,25]:
Portanto, a posição interna [0,5, 0,25] é transformada na posição atual da tela [400, 150]
Esse era o material básico. A verdadeira vantagem dos vetores é a aplicação na Álgebra Linear, na qual você pode usar matrizes para transformar seus vértices (girar, escalar, espelhar etc.), ou seja, para girar facilmente toda a sua posição interna em 90 graus, ou você deve trocar a tela-y posição 0 de cima para baixo na tela, porque, por exemplo, uma biblioteca de terceiros que você usa, usa esta convenção.
fonte
screen_pos = internal_pos * screen_resolution
é invariável por coordenadas da maneira que você a escreveu, poderia ser escrita de maneira mais apropriada , onde há um mapeamento linear (que pode ser escrito como uma matriz, neste caso diagonal).screen_pos = map_to_screen * internal_pos
map_to_screen
Aqui está uma ótima explicação de vetores no desenvolvimento de jogos no blog da Wolfire Games:
http://blog.wolfire.com/2009/07/linear-algebra-for-game-developers-part-1/
fonte
Um vetor é uma entidade que possui um valor e uma direção. Exemplos de vetores no mundo real e jogos baseados em física incluem velocidade e momento. As propriedades que possuem apenas valores, mas sem direção, são chamadas de escalares e incluem localização, massa, densidade e assim por diante.
Os vetores são necessários para jogos que emulam propriedades físicas semelhantes a vetores (como mencionado - velocidade, aceleração e assim por diante). A matemática usada para cálculos de vetores é chamada álgebra linear .
fonte
Em qualquer lugar em que você tenha um número para cada dimensão para representar algo, a coleção desses números pode ser considerada um vetor. Posição, velocidade e aceleração são os principais exemplos de vetores. Em alguns casos, também pode ser prático representar a direção da face como um vetor.
Para coisas básicas, não importa se você considera esses números vetores ou não, mas se deseja fazer algum tipo de física, deve procurar a matemática vetorial.
fonte
Muito simplesmente, qualquer coisa com uma posição ou uma direção, que esteja em todo lugar no jogo, eles usam vetores. Um vetor é como um ponto
No entanto, a diferença realmente se resume a isso. Um ponto é apenas um ponto, enquanto um vetor é uma seta.
se você tem
você está dizendo que eu quero dizer neste local x 5 e y 10.
no entanto, quando você declara um vetor ...
Você realmente está dizendo que estou declarando uma flecha de 0,0 a x 5, y 10;
você pode até ter o ponto do qual seu vetor está apontando para ser um ponto no espaço de qualquer lugar, por exemplo, vamos usar um ponto e um vetor para mover nosso objeto, usaremos um Point2 para armazenar sua localização e um vector2 para movê-lo .
agora você pode usar um vetor para mover esse ponto, digamos que queremos mover esse ponto para cima do eixo x 10 unidades para que você tenha
Agora, o point mudou para onde sua seta de vetor disse.
ponto agora é
Uma última coisa a observar é que, às vezes, um vetor é usado como um ponto e vice-versa, apenas porque eles mantêm o mesmo tipo de dados.
fonte
v = pos - origin
assimv != pos
desde origem é um ponto{0, 0, 0, 1}