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.
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 é:
- Ajustar a data e hora para (“2024:09:22T12:00:00”, “local”)
- Interromper passagem do tempo;
- Habilitar visualização realista;
- Ajustar posição para São José dos Campos (-23.22, -45.90, 650m)
- Ajustar campo para 180º;
- Olhar para o zênite, de frente para o sul.;
- Exibir linha da eclíptica;
- Exibir equador celeste;
- Deslocar para a latitude de alcântara, mantendo a longitude;
- 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