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!