[English]

É possível programar os parâmetros de simulação por meio de um arquivo texto.

I) Instruções para fazer o arquivo "Parameters.txt"

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 fazer este arquivo seguindo as instruções abaixo.

2ª) Automaticamente criar e salvar um arquivo "Parameters.txt" padrão com a simulação "Três bolas. (padrão)", editar este arquivo e 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 construir arquivos com nomes diferentes para cada simulação que você criar.

Depois de criado o arquivo, carregue-o selecionando a opção (1) no menu e assim você poderá executar suas simulações específicas.

O arquivo deve conter todas as variáveis (36 no total). Cada variável tem que ficar em uma linha com o formato [a variável, um ou mais espaços, e o valor], como este modelo:

VARIÁVEL valor

Exemplo:

NBALLS 2

Isso significa que estamos definindo o parâmetro "NBALLS", que é o número das bolas em simulação, com o valor "2".

Nota: o número máximo de bolas dependerá da potência do computador que você tem, mas internamente está limitado ao tamanho da variável tipo inteiro (32767). Não testamos ou programamos para estas condições extremas.

Exemplo:

BALL_MASS 1.0

Isso significa que estamos definindo o parâmetro "BALL_MASS", que é a massa das bolas em simulação, com o valor "1.0".

Um exemplo inteiro de todos os parâmetros, com a configuração para inicializar a simulação "Três bolas. (padrão)" (opção 1 do menu), está abaixo:

(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 de todas as 36 variáveis, e algumas linhas em branco entre elas. O arquivo tem algumas linhas em branco entre grupos separados de parâmetros relacionados. Essas linhas são opcionais. Você pode optar por fazer o arquivo sem elas ou colocar outras para esclarecer os blocos.

Sugestão: 1) Selecione toda a área (de parâmetros) acima com o mouse. 2) Clique no botão direito (e selecione "copiar"). Esta ação automaticamente "copia" o conteúdo para a memória. 3) Vá para o editor de texto e escolha "colar" (como texto). Mesmo que antes de cada variável apareçam espaços, o arquivo será entendido corretamente. 4) Salve o arquivo no formato ".txt".

A seguir, vamos explicar 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 de bola (BALL_RADIUS x), velocidade inicial das bolas (BALL_SPEED x), massa de cada bola (BALL_MASS x.x), a gravidade que operará nas bolas (BALL_GRAVITY x), a constante gravitacional em caso de simulações gravitacionais (BALL_G x), o modo do algoritmo de colisão (PUSH_PULL x), e o coeficiente de restituição para simulações parcialmente inelásticas (COEF_RESTITUTION x.x). O PUSH_PULL é uma configuração interna no algoritmo (você pode testar para ver as diferenças), que poderá ser "0" ou "1" e o 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" for "1", a simulação lerá os parâmetros relacionados às bolas 0 e 1 (as duas primeiras bolas). Os parâmetros que começam em BALL0_SPEED e terminam em BALL1_MASS controlarão as duas primeiras bolas (bola 0 e bola 1).

Eles podem controlar suas posições, tamanhos, massa e a velocidade inicial (velocidade e ângulo). Isso é útil para fazer testes, mas também para simular o lançamento de um satélite.

No caso da bola 0, também pode controlar sua "segunda velocidade", ou "velocidade delta", que é uma velocidade que será adicionada em um determinado momento, para mudar sua trajetória, usando BALL0_TIME (o tempo), BALL0_DELTA_SPEED (a velocidade adicionada), BALL0_DELTA_ANGLE (o ângulo desta velocidade).

No caso das "Três bolas. (padrão)", simulação, IS_TESTING é "0", para que possamos ignorar esses parâmetros. Mas há outros casos em que poderíamos usar essa opção.

Veja os detalhes, com um exemplo, no "Lançamento de satélite" que vamos explicar abaixo.

De volta à nossa explicação, depois desses três blocos, o próximo grupo é:

PISTON_MASS  10

PISTON_GRAVITY 0.0

Temos a massa do pistão (PISTON_MASS x) e a gravidade que vai operar no pistão (PISTON_GRAVITY x.x).

O próximo grupo é:

BOTTOM_TEMP_MIN 0.0

BOTTOM_TEMP_MAX 100.0

Temos uma simulação de uma injeção de "energia" (uma aproximação) que poderia operar a partir do fundo. Ele controlará 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

Ele mostra as opções de renderização, como o tamanho da tela em pontos ou pixels (SCREEN_WIDTH, SCREEN_HEIGHT) e a cor (BACKGROUND), que tem opções '0' e '1'. A PERCENT_WIDTH é a quantidade de espaço utilizada pelo cilindro, e também o PERCENT_HEIGHT. O ZOOM_FACTOR criará um efeito zoom, para que possamos escolher uma área grande, mas aplicar um pequeno fator de zoom para encaixá-la na tela.

 

II) Simulação elementar de "lançamento de satélite"

Como desafio, você pode encontrar os parâmetros para um lançamento de satélite elementar. Você precisará definir NBALLS 2 e IS_TESTING 1 para poder programar as duas primeiras bolas. Uma será o planeta e a outra o satélite.

Você precisará definir os tamanhos do satélite (BALL0_RADIUS) e do planeta (BALL1_RADIUS) e suas massas (BALL1_MASS, BALL0_MASS), e suas posições (BALL0_X, BALL0_Y) e (BALL1_X, BALL1_Y).

Você precisará pensar em BALL0_SPEED (a velocidade de lançamento), BALL0_VEL_ANGLE (o ângulo de lançamento: definido em 90 graus), BALL0_TIME (o tempo para orbitar, quando devemos ligar a velocidade de órbita), BALL0_DELTA_SPEED (a velocidade da órbita), BALL0_DELTA_ANGLE (o ângulo para a velocidade inicial da órbita: definido em 0 graus).

Exemplo de "Lançamento por 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)

Dado os parâmetros acima, você precisará programar a BALL0_SPEED (velocidade inicial no lançamento do satélite), BALL0_TIME (quando ele vai ligar a velocidade da órbita), e BALL0_DELTA_SPEED (a segunda velocidade: com isso temos a velocidade inicial da órbita). Veja que o ângulo inicial de lançamento é BALL0_VEL_ANGLE 90 e o ângulo para a segunda velocidade (a velocidade delta) é BALL0_DELTA_ANGLE 0.

Dica: Defina a BALL0_DELTA_SPEED com zero, mas BALL0_TIME com tempo suficiente para a bola inverter sua velocidade. Preste atenção nos dados que o programa irá imprimir. Você vai descobrir a quanta altitude esses valores podem levar.

 

III) Colisão parcialmente inelástica

A programação de "IS_TESTING 1" também é útil para simular a colisão de duas bolas e estudar o efeito do coeficiente de restituição em uma colisão parcialmente inelástica. Basta definir NBALLS 2 e ajustar os outros 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)

Veja o coeficiente de restituição e a forma 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!