I) Instruções para fazer o arquivo "Parameters.txt"
É possível programar os parâmetros da simulação por meio de um arquivo texto.
Há duas opções para criar o arquivo de parâmetros:
1ª) Construir um arquivo "Parameters.txt" para programar os parâmetros da simulação. Você pode criar esse arquivo seguindo as instruções abaixo.
2ª) Criar automaticamente e salvar um arquivo "Parameters.txt" padrão com a simulação "Três bolas (padrão)", editar esse arquivo, alterar os valores das variáveis para criar sua simulação específica e salvar um novo arquivo “*.txt”. Use a opção (3) do menu.
Use qualquer editor de texto, mas sempre salve como texto simples “.txt” (sem formatação). Você pode escolher outro nome para o arquivo e criar arquivos diferentes para cada simulação que fizer.
Depois de criar o arquivo, carregue‑o selecionando a opção (1) no menu, e assim poderá executar suas simulações específicas.
O arquivo deve conter todas as variáveis (36 no total). Cada variável deve estar em uma linha, no formato [a variável, um ou mais espaços e o valor], conforme o modelo:
VARIÁVEL valor
Exemplo:
NBALLS 2
Isso significa que estamos definindo o parâmetro "NBALLS", que é o número de bolas na simulação, com o valor “2”.
Nota: o número máximo de bolas dependerá da capacidade do seu computador, mas internamente é limitado ao tamanho do tipo inteiro (32767). Não testamos ou programamos para condições extremas.
Exemplo:
BALL_MASS 1.0
Isso define o parâmetro “BALL_MASS”, que é a massa das bolas na simulação, com o valor “1.0”.
A seguir, um exemplo completo de todos os parâmetros com a configuração para inicializar a simulação “Três bolas (padrão)” (opção 1 do menu):
(Início do arquivo)
GAS_MODE 0
NBALLS 3
BALL_RADIUS 20
BALL_SPEED 60
BALL_MASS 0.1
BALL_GRAVITY 0
BALL_G 0
PUSH_PULL 1
COEF_RESTITUTION 1.0
IS_TESTING 0
BALL0_SPEED 0.0
BALL0_VEL_ANGLE 90
BALL0_X 0
BALL0_Y 0
BALL0_RADIUS 12
BALL0_MASS 1e-6
BALL0_TIME 0
BALL0_DELTA_SPEED 0.0
BALL0_DELTA_ANGLE 0
BALL1_SPEED 0
BALL1_VEL_ANGLE 0
BALL1_X 1000
BALL1_Y 1000
BALL1_RADIUS 200
BALL1_MASS 0.0
PISTON_MASS 10
PISTON_GRAVITY 0.0
BOTTOM_TEMP_MIN 0.0
BOTTOM_TEMP_MAX 100.0
BACKGROUND 1
SCREEN_WIDTH 480
PERCENT_WIDTH 0.50
SCREEN_HEIGHT 480
PERCENT_HEIGHT 0.80
WALL_WIDTH 20
ZOOM_FACTOR 1.0
(Fim do arquivo)
Por favor, não escreva “(Início do arquivo)” e “(Fim do arquivo)”. Escreva apenas os nomes e valores das 36 variáveis, com algumas linhas em branco entre grupos de parâmetros relacionados. Essas linhas são opcionais; você pode removê‑las ou inserir outras para deixar os blocos mais claros.
Sugestão: 1) Selecione toda a área (dos parâmetros) acima. 2) Clique com o botão direito e escolha “copiar”. 3) Vá ao editor de texto e selecione “colar” (como texto). O arquivo será reconhecido corretamente mesmo que apareçam espaços antes de cada variável. 4) Salve o arquivo no formato “.txt”.
A seguir, explicamos cada grupo e variável.
O primeiro grupo é:
GAS_MODE 0
NBALLS 3
BALL_RADIUS 20
BALL_SPEED 60
BALL_MASS 0.1
BALL_GRAVITY 0
BALL_G 0
PUSH_PULL 1
COEF_RESTITUTION 1.0
Contém o modo de simulação (GAS_MODE x), número de bolas (NBALLS x), raio das bolas (BALL_RADIUS x), velocidade inicial (BALL_SPEED x), massa de cada bola (BALL_MASS x.x), gravidade aplicada (BALL_GRAVITY x), constante gravitacional (BALL_G x), modo de colisão (PUSH_PULL x) e coeficiente de restituição (COEF_RESTITUTION x.x). O PUSH_PULL é uma configuração interna (padrão: “1”).
O próximo grupo tem três blocos e começa com IS_TESTING:
IS_TESTING 0
BALL0_SPEED 0.0
BALL0_VEL_ANGLE 90
BALL0_X 0
BALL0_Y 0
BALL0_RADIUS 12
BALL0_MASS 1e-6
BALL0_TIME 0
BALL0_DELTA_SPEED 0.0
BALL0_DELTA_ANGLE 0
BALL1_SPEED 0
BALL1_VEL_ANGLE 0
BALL1_X 1000
BALL1_Y 1000
BALL1_RADIUS 200
BALL1_MASS 0.0
Quando IS_TESTING = “1”, a simulação lê os parâmetros das bolas 0 e 1. Eles controlam posições, tamanhos, massa e velocidade inicial (módulo e ângulo). É útil para testes e para simulações como “lançamento de satélite”.
Para a bola 0, é possível definir uma “segunda velocidade” (delta speed), adicionada em um instante específico, usando BALL0_TIME, BALL0_DELTA_SPEED e BALL0_DELTA_ANGLE.
Na simulação “Três bolas (padrão)”, IS_TESTING = 0, então esses parâmetros são ignorados. No entanto, em outros casos eles são essenciais.
A seguir veremos o exemplo de “Lançamento de satélite”.
Depois desses blocos, o próximo grupo é:
PISTON_MASS 10
PISTON_GRAVITY 0.0
Esse grupo define a massa do pistão (PISTON_MASS x) e a gravidade aplicada ao pistão (PISTON_GRAVITY x.x).
O próximo grupo é:
BOTTOM_TEMP_MIN 0.0
BOTTOM_TEMP_MAX 100.0
Há uma simulação de injeção de “energia” pela base (aproximação). Ela controla quanta energia pode ser inserida usando as teclas → e ←.
O grupo final é:
BACKGROUND 1
SCREEN_WIDTH 480
PERCENT_WIDTH 0.50
SCREEN_HEIGHT 480
PERCENT_HEIGHT 0.80
WALL_WIDTH 20
ZOOM_FACTOR 1.0
Mostra opções de renderização, como o tamanho da área de desenho em pixels (SCREEN_WIDTH, SCREEN_HEIGHT) e a cor (BACKGROUND), com opções “0” e “1”. PERCENT_WIDTH e PERCENT_HEIGHT definem a fração ocupada pelo cilindro. O ZOOM_FACTOR cria um efeito de zoom para ajustar áreas grandes à tela.
II) Simulação elementar de “lançamento de satélite”
Como desafio, você pode encontrar os parâmetros para um lançamento elementar de satélite. Defina NBALLS 2 e IS_TESTING 1 para programar as duas primeiras bolas: o planeta e o satélite.
Defina os tamanhos (BALL0_RADIUS e BALL1_RADIUS), massas (BALL1_MASS, BALL0_MASS) e posições (BALL0_X, BALL0_Y, BALL1_X, BALL1_Y).
Você precisará também definir BALL0_SPEED (velocidade de lançamento), BALL0_VEL_ANGLE (ângulo de lançamento: 90°), BALL0_TIME (instante de ativação da órbita), BALL0_DELTA_SPEED (velocidade orbital) e BALL0_DELTA_ANGLE (ângulo da velocidade orbital inicial: 0°).
Exemplo de “Lançamento de satélite” (omitimos três valores com xxx):
(Início do arquivo)
GAS_MODE 0
NBALLS 2
BALL_RADIUS 8
BALL_SPEED 0
BALL_MASS 1.0
BALL_GRAVITY 0
BALL_G 100000.0
PUSH_PULL 1
COEF_RESTITUTION 1.0
IS_TESTING 1
BALL0_SPEED xxx
BALL0_VEL_ANGLE 90
BALL0_X 1000
BALL0_Y 788
BALL0_RADIUS 12
BALL0_MASS 1e-6
BALL0_TIME xxx
BALL0_DELTA_SPEED xxx
BALL0_DELTA_ANGLE 0
BALL1_SPEED 0
BALL1_VEL_ANGLE 0
BALL1_X 1000
BALL1_Y 1000
BALL1_RADIUS 200
BALL1_MASS 50.0
PISTON_MASS 1e10
PISTON_GRAVITY 0.0
BOTTOM_TEMP_MIN 0.0
BOTTOM_TEMP_MAX 100.0
BACKGROUND 1
SCREEN_WIDTH 2000
PERCENT_WIDTH 0.90
SCREEN_HEIGHT 2000
PERCENT_HEIGHT 0.90
WALL_WIDTH 20
ZOOM_FACTOR 0.40
(Fim do arquivo)
Diante dos parâmetros acima, você precisará programar BALL0_SPEED (velocidade inicial), BALL0_TIME (instante de ativação da órbita) e BALL0_DELTA_SPEED (segunda velocidade). O ângulo inicial é BALL0_VEL_ANGLE 90, e o ângulo da segunda velocidade é BALL0_DELTA_ANGLE 0.
Dica: defina BALL0_DELTA_SPEED como zero, mas BALL0_TIME suficientemente grande para permitir que a bola inverta sua velocidade. Observe os dados impressos pelo programa para descobrir a altitude resultante.
III) Colisão parcialmente inelástica
A programação com IS_TESTING 1 também é útil para simular a colisão entre duas bolas e estudar o efeito do coeficiente de restituição. Basta definir NBALLS 2 e ajustar os demais parâmetros. Abaixo está um exemplo:
(Início do arquivo)
GAS_MODE 0
NBALLS 2
BALL_RADIUS 8
BALL_SPEED 60
BALL_MASS 0.1
BALL_GRAVITY 0
BALL_G 0
PUSH_PULL 1
COEF_RESTITUTION 0.8
IS_TESTING 1
BALL0_SPEED 40.0
BALL0_VEL_ANGLE 0
BALL0_X 200
BALL0_Y 200
BALL0_RADIUS 20
BALL0_MASS 10
BALL0_TIME 0
BALL0_DELTA_SPEED 0.0
BALL0_DELTA_ANGLE 0
BALL1_SPEED 0
BALL1_VEL_ANGLE 0
BALL1_X 280
BALL1_Y 200
BALL1_RADIUS 20
BALL1_MASS 10
PISTON_MASS 1e6
PISTON_GRAVITY 0.0
BOTTOM_TEMP_MIN 0.0
BOTTOM_TEMP_MAX 100.0
BACKGROUND 1
SCREEN_WIDTH 480
PERCENT_WIDTH 0.50
SCREEN_HEIGHT 480
PERCENT_HEIGHT 0.80
WALL_WIDTH 20
ZOOM_FACTOR 1.0
(Fim do arquivo)
Observe o coeficiente de restituição e como os parâmetros após IS_TESTING 1 foram configurados. A bola 0 está programada para colidir com a bola 1.
Boas simulações!