Você está na página 1de 11

Introdução

B
em-vindo ao maravilhoso mundo da física. Você pode estar pensando que “maravilhoso” e “física” não
pertencem à mesma frase. Uma vez que você começa a aprender um pouco de física, no entanto, você
descobrirá que é um assunto realmente interessante e gratificante, porque você começará a ganhar uma
compreensão de como as coisas funcionam. Você aprenderá, por exemplo, por que uma bola de golfe
engancha ou fatias. Você também aprenderá que a física realmente não é tão difícil quanto você poderia ter
pensado que era. Apenas alguns conceitos básicos são praticamente tudo o que você precisa para começar a
adicionar física realista em seu programas de jogos.
Fui programador de computador e engenheiro aeroespacial trabalhando para a NASA no passado 20
anos. Gosto muito do meu trabalho, mas uma das coisas que não gosto é quando tenho que pesquisar o
modelo físico para um dos programas que estou escrevendo. Inevitavelmente as referências que encontro
estão incompletas. Ou eles não explicam completamente as coisas ou “esquecem” de incluir elementos-
chave do modelo. Então eu tenho que tentar encontrar outro recurso para preencher as peças que faltam. Este
processo pode ser muito frustrante e demorado.
O que tentei fazer com este livro foi poupá-lo como programador de jogos deste processo torturado.
Este livro destina-se a fornecer todas as informações que você precisa para instalar física em seus programas
de jogo. Este livro será o recurso ao qual você recorrerá para todos de suas necessidades físicas. Por
exemplo, se você quiser criar um jogo de corrida de carros, este livro lhe dará não apenas as equações
básicas de aceleração para um carro, mas também o coeficiente de arrasto para um carro esportivo e as
equações que governam a derrapagem e o giro. Você não terá que pesquisar infinitamente o Internet ou
desenterrar outro livro para preencher as peças que faltam.

Para Quem é Este Livro


Como você provavelmente adivinhou pelo título, este livro se concentra na física necessária para a
programação de jogos, para adicionar realismo aos seus jogos. Você não precisa ter nenhum histórico em
física para fazer uso deste livro. Você não precisa ter uma vasta experiência em matemática para isso importa
também. Contanto que você saiba álgebra e trigonometria básicas no ensino médio, você será capaz de
entender os modelos físicos que são apresentados. Este livro pode ter sido intitulado “Física Básica para
Programadores de Jogos” porque se concentra no quadro geral. Você irá aprenda os conceitos fundamentais
de física necessárias para incorporar o realismo baseado na física em seus jogos com o mínimo de dor e
sofrimento de sua parte. Este livro não fica atolado em fórmulas matemáticas irremediavelmente
complicadas que teriam apenas um pequeno efeito sobre seus programas de jogo.
O Que Este Livro não É
Este livro se preocupa principalmente com a física e não é um livro de programação de jogos em si. Não
haverá nada neste livro sobre teoria dos jogos ou como renderizar imagens na tela. Muitos outros bons livros
sobre esses elementos de programação de jogos estão disponíveis, incluindo Advanced Java Game
Programming por David Croft (Apress, 2004). Este livro também se concentra nos fundamentos física e
geralmente não entrará em tópicos realmente avançados. Por exemplo, as equações são apresentadas que
permitirá que você crie um simulador de voo realista, mas assuntos avançados como modelagem da
estabilidade dinâmica de um avião em voo não são cobertos.

Como o livro é dividido


Este livro está organizado em duas seções principais. Os primeiros seis capítulos cobrirão conceitos básicos,
assuntos como mecânica newtoniana, cinemática e colisões. Esses tópicos serão aplicáveis para uma ampla
gama de situações de programação de jogos. Os primeiros seis capítulos fornecerão a você as ferramentas
para o seu cinto de ferramentas de física. Os capítulos 7 a 15 pegam os conceitos básicos e os aplicam a
modelos físicos específicos. Você aprenderá a modelar carros, aviões, barcos e foguetes. Você encontrará
capítulos sobre o desenvolvimento de simulações esportivas e sobre como modelar explosões, lasers, e
penetrações de projéteis. Os capítulos posteriores fornecerão todas as informações necessárias para instale
realismo baseado em física em seus jogos.

Uma Nota Sobre os Programas de Amostra


Quase todos os capítulos contêm um ou mais jogos de amostra que demonstram como codificar os modelos
físicos apresentados no capítulo. Como este livro se concentra na física, os gráficos nas GUI’s para os jogos
de amostra são bastante básicos - geralmente apenas figuras bidimensionais e desenhos animados. Enquanto
os gráficos são primitivos, a física embutida nos jogos de amostra é real e irá retratar realisticamente o que o
jogo pretende modelar. Programas de jogos podem ser escritos em muitas linguagens de programação
diferentes. Para manter as coisas consistentes em todo o livro, os programas de amostra mostrados neste
livro são todos escritos em Java, mas o código que implementa os modelos físicos deve ser facilmente
reconhecível por qualquer pessoa com um plano de fundo de programação C, C++ ou C#. Há muitos
comentários ao longo dos programas, e o código foi feito para ser o mais legível possível. Para você que
prefere programa em C ou C#, você pode baixar versões de todos os programas de amostra escritos nessas
linguagens no site da Apress em www.apress.com.

Uma Nota Sobre os Exercícios


Muitos dos programas incluem exercícios que testam o conhecimento do leitor sobre os conceitos que são
abordados no capítulo. Normalmente, os exercícios vão um pouco além do material que é apresentados no
capítulo e são uma boa maneira de testar sua compreensão geral do assunto matéria. Os exercícios destinam-
se a estudantes que estão usando este livro como parte de seu curso, mas outros leitores são encorajados a
experimentar os exercícios também. As respostas dos exercícios sempre são fornecidas no final do capítulo
em que são apresentados.

Petiscos
Física é realmente um assunto interessante, e é um assunto que vem se desenvolvendo ao longo de milhares
de anos. anos. A história da física está cheia de muitos personagens fascinantes e peculiares. Espalhados por
toda parte o livro são seções Tidbit que fornecem curiosidades históricas e outras informações interessantes
sobre os assuntos abordados no capítulo. Você já se perguntou com o que eles costumavam fazer bolas de
golfe nos velhos tempos? Bem, há um boato que irá dizer-lhe.

Contate-me
Se você tiver alguma dúvida ou comentário sobre o livro, pode me enviar um e-mail para
grantepalmer@msn.com. Diga-me o que você gosta sobre o livro, ou coisas que você acha que eu poderia
fizeram melhor. Deixe-me também saber se há algum assunto que você gostaria de ver no futuro edições do
livro.
Capítulo 1

Adicionando Realismo em seus Jogos

Você é um programador de jogos. Você sabe como renderizar cenas complexas de perseguição de carros na
tela. Você conhece a teoria dos jogos e como tornar seus jogos interessantes e cheios de estratégia. Mas
física? Física é para velhos em jalecos brancos que trabalham em laboratórios secretos. Programadores de
jogos são... bem, programadores. Por que um programador de jogos precisa saber sobre física? Acontece que
um conhecimento de física é crucialmente importante para a programação de jogos. Isto tornará seus jogos
mais divertidos de jogar e mais realistas. O objetivo deste livro é levar um pouco do mistério da física e
fornecer os conceitos e ferramentas que você precisará adicionar física realista para seus programas de jogo.
Por que você precisa saber física? Bem, aqui estão apenas alguns dos motivos:

A Física Evitará que Seus Jogos Pareçam Falsos


Os jogadores são bastante sofisticados. Eles sabem quando algo parece ou age falso, e eles vai te bater por
isso. Nada fará um jogo perder credibilidade mais rápido do que se a física que ele usa for incorreta. Por
outro lado, se você acertar a física, seus jogos serão elogiados pela comunidade de jogos. Olhe nos quadros
de avisos do jogo e nas revisões e você verá muitos exemplos deste fato.
Aqui está um exemplo de uma revisão positiva da avaliação da X-treme Gaming Radio da Microsoft
Jogo MS Flight Simulator 2004:
Se você procura realismo em um simulador de voo, então este jogo é o caminho para vai. A
experiência é de tirar o fôlego, pois você quase pode sentir a reação do avião seu entorno.
Se você ler esta resenha, provavelmente pensará: “Este jogo parece ótimo. eu deveria verificar fora.”
Os desenvolvedores acertaram a física e as pessoas notaram. Por outro lado, se você ignorar a física
adequada, poderá receber uma revisão como a que postado em www.gametour.com sobre o jogo Jet Moto 3,
Agora, por mais que a série tenha tentado promover física e controle realistas, eu apenas tenho que
dizer que não há equação física para uma moto a jato pairando. ELES FAZEM NÃO EXISTE.
Se alguém ler uma resenha como essa, poderá pensar “Ei, esse jogo parece brega. Eu não acho que
vou comprar”.
A questão é que a física importa. É uma das primeiras coisas que revisores e usuários em potencial
olharão quando estiverem avaliando seu jogo. Tenha em mente ao criar jogos (assim como escrevendo
livros) que você não pode fingir. Se você usar física falsa em seus jogos, alguém aviso, e que alguém vai
escrever nos fóruns do jogo e dizer ao mundo o quão ruim é o seu jogo é. Enquanto se você dedicar tempo e
esforço para acertar a física, seus jogos terão a reputação de serem os jogos mais legais e realistas do
mercado.
Adicionar Realismo Baseado em Física É Mais Fácil do que
Você Pode Pensar
A física tem a infeliz reputação de ser muito difícil. As pessoas pensam em Albert Einstein trancado em seu
escritório gerando equações matemáticas horrivelmente complicadas por anos e anos. Na realidade, a
maioria dos modelos de física que você precisa como programador de jogos, e a maioria dos os modelos
físicos discutidos neste livro são razoavelmente simples. Noventa e cinco por cento das equações
matemáticas que você verá neste livro serão equações algébricas ou trigonometria simples (senos e
cossenos).
Vejamos alguns exemplos rápidos dos tipos de equações matemáticas que você encontra neste livro.
Uma tarefa comum para programadores de jogos é modelar a trajetória de um projétil - uma bala, bala de
canhão, basquete e assim por diante. Uma das coisas normalmente exigidas é determinar a altitude do
projétil em um determinado momento. Se a única força que atua sobre o projétil é a gravidade puxando-o
para a terra, a altitude do projétil é uma função do tempo decorrido tempo, t, a velocidade inicial, v0, a
altitude inicial, z0, e a aceleração da gravidade, g.
                                          (1.1)             

A equação (1.1) é uma equação algébrica simples e, no entanto, há física real nela. Em algumas
situações, computando a trajetória de uma bola de basquete, por exemplo, a Equação (1.1) é a expressão que
você usará em seus programas de jogo. Um exemplo de quando a trigonometria é usada é o problema de
modelar um carro parado em uma rampa inclinada como mostrado na Figura 1-1.

Figura 1-1. A força que atua sobre o carro é uma função do seno do ângulo de inclinação.

A força da gravidade puxará o carro pela rampa. A intensidade da força é igual a massa do carro, m, a
aceleração da gravidade, g, e o seno do ângulo da rampa, Ɵ.
F = mgsinq
Mais uma vez, a Equação (1.2) é simples, mas modela com precisão a força gravitacional agindo no carro.
Você pode usar a Equação (1.2) para determinar se os freios podem segurar o carro rampa ou para
determinar a velocidade do carro se ele começar a descer a rampa.
Agora, é verdade que algumas das equações do livro serão mais complicadas do que Equações (1.1) e
(1.2), mas como foi mencionado antes, 95% da matemática neste livro é álgebra e trigonometria. E os outros
5%? Haverá momentos no livro em que teremos para fazer uso de coisas chamadas equações diferenciais em
nossos modelos físicos. Eles podem soar um pouco assustadores, mas na verdade são apenas equações
usadas neste livro para descrever como as quantidades como velocidade ou mudança de posição ao longo do
tempo. Vamos fornecer-lhe um pequeno programa útil que resolve equações diferenciais que você pode usar
em seus programas de jogo.
Então, uma coisa que torna a incorporação da física em seus programas de jogo mais fácil do que
você poderia ter pensado é que a matemática na maior parte não é tão complicada. Outra coisa boa sobre a
física é que na maioria dos casos você pode fazer seus modelos de física tão simples ou tão complicado
quanto você gosta ou precisa. Por exemplo, o voo de um projétil pode ser modelado usando uma simples
equação algébrica. Se desejar, você pode adicionar alguma complexidade ao modelo incluindo efeitos como
arrasto aerodinâmico ou rotação, mas esses efeitos mais complicados são simplesmente adicionados ao
modelo básico. Se o modelo simples é tudo que você precisa, você pode ficar com ele e deixar de fora as
coisas mais complicadas.

Adicionar Física Não Afetará o Desempenho do Jogo


Outra razão pela qual alguns programadores de jogos relutam em adicionar realismo baseado em
física aos seus games é a percepção de que “toda aquela matemática complicada vai desacelerar o jogo”. Isso
pode tem sido verdade nos dias sombrios, quando os computadores ostentavam “desempenho de 500
quilohertz”, mas processadores de computador modernos são rápidos o suficiente para percorrer qualquer
coisa, menos os mais complicados modelos de física. Seus jogos gastarão muito mais tempo renderizando do
que avaliando qualquer modelo de física que você incorporar neles.
Os exemplos de jogos apresentados neste livro demonstram que a física não desacelera o jogo
atuação. O simulador de carro apresentado no Capítulo 8 usa uma física razoavelmente complexa modelo
para simular as capacidades de aceleração e mudança de marcha de um carro esportivo. O jogo correu tão
rapidamente em um PC Pentium 4 de 1,6 GHz (um computador mais antigo e bastante lento) que um
temporizador teve que ser embutido no programa para realmente desacelerar o jogo. Caso contrário, o
usuário não teria tempo para mude as marchas antes de atingir a velocidade máxima do motor. A mesma
condição é válida para o simulador de voo que será apresentado no Capítulo 10. As equações físicas são
calculadas rapidamente que o jogo tem que ser retardado intencionalmente. Os modelos físicos no carro e
simuladores de voo teriam que ser significativamente mais complicados para que houvesse qualquer efeito
sobre a execução dos jogos.
Conhecer Um Pouco De Física Fará De Você Um Melhor
Programador De Jogos
Ter uma compreensão baseada na física de como as coisas funcionam fará de você um jogo melhor
programador de várias maneiras. Por um lado, ter uma compreensão física do que você é tentar simular dá a
você o conhecimento de quais efeitos incluir em seu jogo. Por exemplo, digamos que você esteja criando um
jogo de golfe. Você sabe que as bolas de golfe podem enganchar, cortar puxar, mas como você modela esses
efeitos? Se você conhece a física por trás do vôo da bola de golfe, sabe que é o giro dado à bola de golfe que
causa esses efeitos. Você pode então obter o cálculo matemático equações que descrevem o spin e criam
efeitos de spin realistas em sua simulação de golfe.
Como outro exemplo, considere uma simulação de carro em que o carro tem que fazer uma curva em
a estrada. Se você não sabia nada sobre física, você poderia simplesmente fazer o carro dar a volta na curva
em qualquer velocidade que estivesse viajando. Se você conhecesse a física correta, no entanto, você sabe
que quando um objeto percorre uma curva, um efeito conhecido como força centrípeta empurra o objeto para
fora. Se o carro estiver muito rápido ou se a curva for muito fechada, as rodas do carro não serão capazes de
se manter na estrada e o carro deslizará ou girará para fora. Força centrípeta pode ser um efeito interessante e
emocionante para adicionar à sua simulação de carro se você estiver ciente de sua existência.
Ter conhecimento de física também permite que você saiba quais efeitos deixar de fora do seu jogo.
Um exemplo clássico é quando uma pessoa é atingida por uma bala em um jogo de computador e é jogado
para trás através de uma janela ou algo assim. Na realidade, a força causada por uma bala atingir um objeto é
relativamente pequeno – não o suficiente para fazer alguém recuar.

Vamos adicionar algum realismo aos seus jogos


Espero que agora você esteja convencido da ideia de programadores de jogos aprendendo sobre física e
pronto para começar a adicionar modelos de física realistas aos seus programas de jogo. Então vamos
mergulhar e iniciar. A primeira coisa que faremos é passar algum tempo repassando alguns conceitos básicos
que você usará em toda a sua modelagem física. Alcançaremos esse objetivo nos Capítulos 2 a 6. Assim que
tivermos o básico em mãos, desenvolveremos modelos físicos para aplicações específicas incluindo esportes,
carros, barcos, aviões, foguetes, explosões e lasers. Vamos virar a página e comece com o básico.
Capítulo 2

Alguns Conceitos Básicos

D
epois de ler o Capítulo 1, você provavelmente está ansioso para incorporar a física realista em suas
simulações de jogos. Antes de entrarmos em modelos físicos específicos para modelar como os aviões voam
ou o que acontece quando um taco atinge uma bola de beisebol, você precisa ter uma compreensão de alguns
conceitos e definições que serão usados ao longo do livro. Os assuntos abordados neste capítulo são coisas
que podem ser usadas em qualquer modelo baseado em física. Muito deste material pode ser familiar para
você, mas mesmo que você saiba a maior parte do que está aqui, é uma boa ideia atualizar sua memória para
“armar o palco” para o resto do livro.
Os modelos de física geralmente são expressos matematicamente e, como você provavelmente sabe,
matemática é uma linguagem só para si, cheia de símbolos estranhos e letras engraçadas. Neste capítulo,
revisaremos algumas nomenclaturas matemáticas básicas, para que você não fique confuso quando vir os
símbolos α ou Σ mais adiante no livro. Este capítulo também apresentará alguns conceitos matemáticos
básicos e técnicas de solução que serão usadas no desenvolvimento dos modelos físicos nos capítulos
subsequentes.
Na maioria das vezes, quando você está colocando física em seus jogos, você estará lidando com um
mundo tridimensional - como uma bola de golfe voa pelo ar ou como um carro canto. Neste capítulo,
discutiremos como os referenciais de coordenadas são usados para posicionar um objeto no espaço e sobre
os diferentes tipos de referenciais de coordenadas. Você vai ver como certas características, como a
velocidade, podem ser expressas tridimensionalmente usando um conceito conhecido como vetor.
Alguns dos assuntos específicos que investigaremos neste capítulo incluem o seguinte:
 Sistemas de unidades
 Notação científica
 Notação de soma
 Letras gregas
 Sistemas de coordenadas e quadros de referência
 Escalares e vetores
 Matrizes e multiplicação de matrizes
 Matrizes de rotação
 Derivadas e equações diferenciais
Ao terminar este capítulo, você estará armado e pronto para mergulhar no maravilhoso mundo da
física, então vamos começar.

Sistemas de Unidades
Para descrever o mundo físico, precisamos medir as coisas. Queremos saber o quão pesado algo é ou
quão rápido ele está viajando. Para medir as coisas, é necessário um sistema de unidades. Isto seria bom se
houvesse um sistema universal de unidades. Infelizmente, existem dois amplamente sistemas de unidades
utilizados, nomeadamente o Sistema Internacional de Unidades e o Sistema Inglês de Unidades, e esta é uma
situação que cria o potencial de confusão e erros. Ambos os sistemas de unidades serão discutidos nesta
seção e os fatores de conversão serão fornecidos para mover de um sistema para outro.
O Sistema Internacional de Unidades, ou unidades SI, inclui três unidades fundamentais de medida
para massa, comprimento e tempo. A unidade de comprimento no sistema SI é o metro, a unidade de massa é
o quilograma, e a unidade de tempo é o segundo. As três quantidades são geralmente abreviadas como m, kg
e s. A maioria das outras quantidades físicas, densidade, pressão, força e assim por diante, podem ser
expressas em termos de metros, quilogramas e segundos. Existem também unidades de medida menores do
SI que usará de tempos em tempos neste livro. Um grama (g) é 1/1000 ou “um milésimo” de um quilograma.
Um centímetro (cm) é 1/100 de um metro e um milímetro (mm) é 1/1000 de um metro. A unidade de medida
de temperatura no sistema SI é Kelvin (K).
Um sistema de unidades mais antigo conhecido como Sistema de Unidades Inglês ainda é
amplamente utilizado em alguns países. A unidade de massa no sistema inglês é a libra-massa (lbm) ou o
slug. A unidade de comprimento é o pé (ft). Um elemento consistente entre os sistemas inglês e SI é que o
tempo em ambos os sistemas é medido em segundos. O sistema inglês ainda é amplamente utilizado em os
Estados Unidos e (como você poderia esperar) a Inglaterra. A maior parte do resto do mundo usa unidades
SI. A temperatura no sistema inglês é expressa em graus Fahrenheit (ºF) ou Rankine (R).
O Sistema Internacional de Unidades é mais lógico porque diferentes unidades da mesma quantidade
estão relacionadas entre si por fatores de dez. Existem 100 centímetros em um metro e 1000 metros em um
quilômetro (km). O sistema inglês envolve fatores de conversão mais arbitrários. Há 12 polegadas em um pé
e 5280 pés em uma milha.
Este livro tenderá a se inclinar mais para o sistema de unidades do SI, mas a unidade equivalente em
inglês valores para equações e constantes serão fornecidos algumas vezes. A Tabela 2-1 mostra as unidades
de medida para algumas quantidades físicas comuns, juntamente com fatores de conversão para mover de do
sistema inglês para o sistema SI. Se você multiplicar o valor em unidades inglesas pela conversão fator, você
chegará ao valor em unidades do SI. Por exemplo, uma milha é igual a 1,609 km.
Quantidade Unidade Inglesa Unidade SI Fator de Conversão
Length toot (ft) meter (m) 0.3048
mile kilometer (km) 1.609

Mass pound-mass (lbm) kilogram (kg) 0.4536


slug kilogram (kg) 14.593

Force pound (lb) Newton (N) 4.448

Pressure lb/in² N/m² 6894.7

Density slug/ft³ kg/m³ 515.379


lbm/ft³ kg/m³ 16.018

Temperature Fahrenheit (°F) Kelvin (K) 5/9(F + 459.67)


Rankie (R) Kelvin (K) 5/9

Ao longo dos séculos, muitos outros tipos de unidades foram concebidos que você pode encontrar de
tempos em tempos. No sistema inglês, algumas das “outras” unidades podem parecer um pouco estranhas.
Por exemplo, um grão é uma unidade de massa no sistema inglês, e há 7024 grãos por libra. O sistema SI
também define unidades de medida adicionais, mas estas são sempre definidas em termos de as unidades
fundamentais. Um Newton, por exemplo, é um kg-m/s².

    Tidbit As unidades do sistema inglês de unidades foram desenvolvidas ao longo de muitas centenas de anos, e
algumas as origens são interessantes. O pé foi tirado da medida de um pé humano (segundo o rei à legenda). Zero
graus na escala de temperatura Fahrenheit foram baseados na temperatura mais fria que Dr. Fahrenheit poderia
alcançar em seu laboratório.

A principal coisa sobre sistemas de unidades para programadores de jogos é certificar-se de usar um
sistema consistente de unidades. Se você misturar e combinar unidades inglesas e SI, não obterá a responda.
Por exemplo, digamos que você queira calcular a aceleração de uma flecha de acordo com a equação F=ma.
Digamos também que você queira atirar uma flecha cuja massa, m, é dada como 500 grãos de um arco que
pode fornecer uma força, F, de 5 N. Se você quiser a aceleração, a, em unidades de m/s2, você deve primeiro
converter a massa da flecha de grãos para kg.

    Tidbit Um caso clássico de como misturar e combinar unidades pode causar grandes problemas é o que aconteceu
com o Missão da NASA Mars Climate Orbiter em 1999. Uma equipe de engenheiros trabalhando no projeto usou
unidades inglesas e outra equipe usou unidades do SI. A confusão resultante criou um erro no programa de orientação
que causou a espaçonave entrar na atmosfera marciana em um ângulo muito íngreme. A missão espacial de um bilhão
de dólares falhou.

Sicirnetific Notatoin
No mundo da física, às vezes é necessário trabalhar com números muito grandes ou muito pequenos. Por
exemplo, a constante gravitacional, uma quantidade que relaciona a força que dois objetos exercem sobre
entre si, é um número muito pequeno. Escrito em notação decimal padrão, é igual ao que se segue:

Você também pode gostar