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

Planetário Virtual Céu Profundo: Relógios Celestes

O equinócio de Outono se aproxima! Vamos nos despedir do Verão no sábado 20/03 às 06:37 no horário de Brasília.

Nesta data, os raios solares iluminarão igualmente os hemisférios sul e norte da Terra e um observador situado sobre a linha do equador verá o Sol passando sobre sua cabeça ao meio dia local e neste instante uma haste vertical não projetará sombra.

Um ano de observações pelo satélite geoestacionário EUMETSAT mostram como se sucedem as as estações e como varia a iluminação em cada hemisfério ao longo do ano.

Para os observadores nas demais localidades do planeta, a menor sombra produzida por uma haste vertical neste dia (aquela produzida pelo Sol ao meio dia local) formará com a haste um triângulo que tem um dos ângulos equivalente à latitude local!

O satélite norte americano DSCOVR (Deep Space Climate Observatory) está posicionado no ponto lagrangeano L1, este é um dos pontos de equilíbrio entre as atrações gravitacionais da Terra e do Sol e nesta posição uma espaçonave se mantém fixa na linha que une a Terra ao Sol, ou seja, sua visão coincide com o ponto de vista do Sol!
O DSCOVR enxerga sempre a porção iluminada da Terra e ao longo do ano é possível perceber em suas imagens como varia a iluminação sobre os hemisférios Norte e Sul, produzindo as estações.

No equinócio de 20 de março de 2020, os dois hemisférios aparecem igualmente iluminados nesta imagem da câmera EPIC do satélite DSCOVR. [NASA/NOAA/USAF.]
Em 20 de junho de 2020, o Hemisfério Norte recebe mais luz que o Hemisfério Sul. Estamos no solstício de iverno do hemisfério sul e no solstício de verão do hemisfério norte. O Polo Norte é visível na imagem. [NASA/NOAA/USAF]
Em 22 de setembro de 2020, os dois hemisférios estão novamente igualmente iluminados. É equinócio de primavera no Hemisfério Sul e equinócio de outono no Hemisfério Norte. [NASA/NOAA/USAF]
Em 21 de dezembro de 2020 o Sol banha intensamente o Hemisfério Sul. É o nosso solstício de verão. No Hemisfério Norte, começa o inverno. O Polo Sul é visível na imagem. [NASA/NOAA/USAF]

Ficou confuso? Achou difícil visualizar? Calma! Seus problemas acabaram! Vamos ilustrar tudo isso e muito mais na sessão do Planetário Virtual Céu Profundo/Museu Interativo de Ciências nesta terça (16/03) às 20h em nosso canal no Youtube e na página do Facebook do Museu Interativo de Ciências (MIC) de São José dos Campos.

Vamos mostrar também como o céu e suas regularidades definiram nosso calendário e nosso relógio e como você também pode, através de observações, encontrar estas regularidades! Aproveite pra seguir e ativar as notificações pra não perder as próximas sessões!

Planetário Virtual na Semana Nacional de Ciência e Tecnologia

Numa parceria com o Centro de Estudos Astronômicos (CEA) transmitiremos dentro da programação da Semana Nacional de Ciência e Tecnologia sessões diárias de planetário virtual e de observação telescópica em nosso canal do Youtube.
As atividades acontecem de segunda a sexta (19 a 23/10) e terão participação de astrônomos convidados, professores e divulgadores da astronomia.
Acompanhe:

Segunda 19/10
10:00h – Observação Solar: https://youtu.be/yklEpZP_mTQ
15:00h – Planetário Virtual: https://youtu.be/bEJIGogZKDQ
20:00h – Observação de Júpiter: https://youtu.be/WX_OcNIcXx0

Terça 20/10

9:00h – Planetário Virtual: https://youtu.be/XbKD1eJu4xQ
20:00h – Observação de Saturno: https://youtu.be/kdjoux14gtE

Quarta 21/10

10:15h – Observação Solar: https://youtu.be/V4-g1Bn2ZwE
15:00h – Planetário Virtual: https://youtu.be/XGRtM3QD7-8
20:00h – Observação de Marte: https://youtu.be/Urb1yUXE5u0

Quinta 22/10

20:00h – Observação Lunar: Observação Cancelada (Meteorologia)

Sexta 23/10

13:30h – Planetário Virtual: https://youtu.be/pGzmf–VktA
15:00h – Observação Solar: https://youtu.be/nr579-eq3OY
20:00h – Observação Lunar: https://youtu.be/C2UnazyrMK4