Dominando o Stellarium: o poder oculto dos scripts.

O planetário virtual Stellarium é uma poderosa e divertida ferramenta para a simulação do céu. E é possível torná-lo ainda mais poderoso e divertido através de scripts que automatizam sua execução.

Os scripts são arquivos de texto com roteiros que comandam a execução automática de funções e a alteração de configurações no Stellarium. São especialmente úteis em exibições públicas, palestras e sessões de planetário, dispensando a necessidade da interação com o operador durante a sessão e tornando muito mais suaves as transições e animações.

Quer conhecer mais esse recurso do Stellarium e criar apresentações para impressionar seu público? Então esse post é pra você.

“Hello World”

Nosso primeiro script é o clássico “Hello World”, escrevendo uma saudação na tela do aplicativo.

Usaremos o console acessível através da tecla de função F12 de seu teclado.

Console de execução de Scripts no Stellarium 0.22.2 [Wandeclayt M./@ceuprofundo]

Dentro da aba “Script” no console, vamos digitar o nosso código. O código é razoavelmente simples e você certamente vai entender os parâmetros envolvidos, mas se quiser conhecer com mais detalhes a classe LabelMgr, utilizada para escrever a mensagem na tela, consulte a documentação do Stellarium aqui.

As linhas iniciadas com “//” são comentários, e não são interpretadas como comandos.

// primeiro vamos limpar a tela, apagando rotulos que possam estar exibidos
LabelMgr.deleteAllLabels();

// criamos variaveis para cada parametro
var mensagem = "Hello World!";
var posicaoX = 200;
var posicaoY = 400;
var tamanhoFonte = 36;
var corFonte = "#FFFF00" //amarelo

// exibicao da mensagem
LabelMgr.labelScreen(mensagem, posicaoX, posicaoY, true, tamanhoFonte, corFonte);

O resultado desse script é a exibição da mensagem “Hello World” em caracteres amarelos, com tamanho 36, na posição (x=200, y=400) da tela.

Um jeito mais curto de escrever isso seria inserir os valores diretamente na função, sem o uso de variáveis. :

LabelMgr.deleteAllLabels();
LabelMgr.labelScreen("Hello World", 200, 400, true, 36, "#FFFF00");

Segundos Passos

Você agora já deu seus primeiros passos no maravilhoso mundo dos scripts do Stellarium e é hora de descobrir um pouco mais do que esse mundo pode oferecer.

No próximo exemplo vamos automatizar algumas funções básicas, alterando seus parâmetros para visualizar a passagem meridiana do Sol em diversas latitudes no dia do equinócio de setembro de 2024.

Queremos que as funções sejam executadas em sequência e que haja um intervalo entre a execução de algumas delas.

A sequência de comandos desejada é:

  1. Ajustar a data e hora para (“2024:09:22T12:00:00”, “local”)
  2. Interromper passagem do tempo;
  3. Habilitar visualização realista;
  4. Ajustar posição para São José dos Campos (-23.22, -45.90, 650m)
  5. Ajustar campo para 180º;
  6. Olhar para o zênite, de frente para o sul.;
  7. Exibir linha da eclíptica;
  8. Exibir equador celeste;
  9. Deslocar para a latitude de alcântara, mantendo a longitude;
  10. Deslocar para o trópico de câncer, mantendo a longitude;
// Author: Projeto Ceu Profundo
// Version: 0.0.1
// License: Public Domain
// Name: Primeira Luz - Tarefa 1 (Equinócio de Setembro)
// Description: Exibe o Sol ao meio dia local em três latitudes diferentes.

// Made on Stellarium 0.22.2

//1. Ajustar a data e hora para ("2024:09:22T12:00:00", "local")
core.setDate("2024:09:22T12:00:00", "local");
//2. Interromper passagem do tempo;
core.setTimeRate(0);
//3. Habilitar visualização realista;
core.clear("natural");
core.wait(5) // introduz um atraso de 5 segundos até a próxima função
//4. Ajustar posição para São José dos Campos (-23.22, -45.90, 650m)
core.setObserverLocation(-45.9, -23.22, 650., 3., "São José dos Campos", "Terra");
//5. Ajustar campo para 180º;
StelMovementMgr.zoomTo(180, 2);
//6. Olhar para o zênite, de frente para o sul.;
StelMovementMgr.lookZenith();
core.wait(2) // introduz um atraso de 2 segundos até a próxima função
//7. Exibir linha da eclíptica;
GridLinesMgr.setFlagEclipticLine(true);
core.wait(2) // introduz um atraso de 2 segundos até a próxima função
//8. Exibir equador celeste;
GridLinesMgr.setFlagEquatorLine(true);
core.wait(2) // introduz um atraso de 2 segundos até a próxima função
//9. Deslocar para a latitude de alcântara, mantendo a longitude;
core.setObserverLocation(-45.9, -2.5, 10., 3., "Alcântara", "Terra");
core.wait(5) // introduz um atraso de 5 segundos até a próxima função
//10. Deslocar para o trópico de câncer, mantendo a longitude;
core.setObserverLocation(-45.9, 23.22, 10., 3., "Trópico de Câncer", "Terra");

Próximos Passos

Agora você já deve ter percebido que o céu não é o limite (#BaDumTss) para a sua criatividade na hora de escrever scripts para o Stellarium.

Os seus scripts serão tão complexos e atraentes quanto o seu repertório permitir. Familiarização com as funções e capacidades do Stellarium é a condição fundamental para automatizar essas funções e capacidades através de scripts. A documentação em http://stellarium.org/doc/head/ é bem completa e é uma grande aliada para usuários mais avançados. Mas se você quer seguir adiante sem mergulhar no manual, listamos a seguir alguns comandos úteis em um guia de referência para seus primeiros scripts.


GUIA DE REFERÊNCIA

Core (Funções Básicas)

core.clear(“natural“) – Limpa as opções de exibição. Apaga linhas, marcadores e rótulos. Exibe atmosfera e paisagem.

core.setDate(“aaaa-mm-ddThh:mm:ss”, “local/utc”) – Ajusta a data/hora.
core.setDate(“now”) – Ajusta a data/hora para a data/hora atual do sistema.

core.wait(i) – Introduz uma pausa de i segundos.
core.setTimeRate(i) – Ajusta a velocidade da simulação (0=tempo interrompido, 1=velocidade natural, n = tempo acelerado n vezes.)
core.waitFor(“aaaa-mm-ddThh:mm:ss”, “local/utc”) – Espera até a data/hora indicada.

core.setObserverLocation(longitude, latitude, altitude, duração, nome, planeta)
core.setGuiVisible(true/false) – exibe(true)/oculta(false) a interface gráfica.
core.setFlagGravityLabels(true/false) – habilita/desabilita rótulos orientados com o horizonte.

core.selectConstellationByName(“constelação”) – Seleciona a constelação indicada. Use o nome da constelação em latim ou o código de três letras (ex: “Virgo” ou “Vir”).
core.selectObjectByName(“nome do objeto”) – Seleciona um objeto celeste. Use a designação do objeto em um catálogo de céu profundo (NGC, Messier…), uma designação estelar (Bayer, Flamsteed, HD… ), o nome de uma constelação – em latim ou usando a designação de 3 letras da IAU – ou o nome de um planeta (em inglês).

core.moveToAltAzi(atura, azimute, duração) – aponta para a atura e azimute indicados.
core.moveToObject(“nome do objeto”, duração) – aponta para um objeto celeste indicado. Use a designação do objeto em um catálogo de céu profundo (NGC, Messier…), uma designação estelar (Bayer, Flamsteed, HD… ), o nome de uma constelação – em latim ou usando a designação de 3 letras da IAU – ou o nome de um planeta (em inglês).
core.moveToSelectedObject(duração) – Aponta para um objeto selecionado.

http://stellarium.org/doc/head/classStelMainScriptAPI.html

LandscapeMgr (Atributos de Cenário)

LandscapeMgr.setFlagCardinalPoints(false) – exibe(true)/oculta(false) os pontos cardais.
LandscapeMgr.setFlagAtmosphere(true/false) – exibe(true)/oculta(false) atmosfera.

GridLinesMgr (Atributos de Linhas)

GridLinesMgr.setFlagEquatorGrid(true/false) – exibe(true)/oculta(false) a grade equatorial.
GridLinesMgr.setFlagEquatorLine(
true/false) – exibe(true)/oculta(false) o equador celeste.
GridLinesMgr.setFlagAzimuthalGrid(
true/false) – exibe(true)/oculta(false) a grade azimutal.
GridLinesMgr.setFlagEclipticLine(true/false) – exibe(true)/oculta(false) a linha da eclíptica.
GridLinesMgr.setFlagMeridianLine(true/false) – exibe(true)/oculta(false) a linha do meridiano local.
GridLinesMgr.setFlagCircumpolarCircles(
true/false) – exibe(true)/oculta(false) círculos circumpolares.
GridLinesMgr.setFlagCelestialPoles(true/false) – exibe(true)/oculta(false) os polos celestes.

http://stellarium.org/doc/head/classGridLinesMgr.html

ConstellationMgr (Atributos de constelações)

ConstellationMgr.setFlagArt(true/false) – exibe(true)/oculta(false) arte das constelações.
ConstellationMgr.setFlagBoundaries(true/false) – exibe(true)/oculta(false) bordas das constelações.
ConstellationMgr.setFlagLines(true/false) – exibe(true)/oculta(false) linhas das constelações.
ConstellationMgr.setFlagLabels(true/false) – exibe(true)/oculta(false) rótulos das onstelações.

StelMovementMgr ()

StelMovementMgr.lookZenith() – aponta para o zênite, com o Sul na parte de baixo da tela.
StelMovementMgr.deselection() – desfaz a seleção de objeto.
StelMovementMgr.zoomTo(campo em graus, duração) – ajusta o zoom para o campo indicado.

http://stellarium.org/doc/head/classStelMovementMgr.html

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *