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

I Campanha LCO 2023 – Primeiros Passos.

Estamos entrando na primeira campanha de observação com telescópios robóticos da rede LCO em 2023, e se você está participando pela primeira vez, certamente não faltam dúvidas.
A boa notícia é que estamos aqui para saná-las e garantir que todo mundo possa aprender (e se divertir muito) fazendo imagens de objetos de céu profundo com instrumentos de alto desempenho localizados em alguns dos melhores sítios para observação astronômica do mundo!

Vou precisar instalar algum aplicativo?

Janela do aplicativo DS9, com dados de imagem da galáxia M101
Janela do DS9 com imagem da galáxia M101 capturada com telescópios do LCO.

Sim. Para visualizar e processar nossas imagens, usaremos o software SAO Image DS9, um programa gratuito e de código aberto usado extensivamente na astronomia profissional e que permite não apenas visualizar os dados, mas também realizar uma série de tarefas científicas em nossas imagens. Comece procurando a versão adequada para seu sistema operacional no site https://ds9.si.edu e instale, tomando o cuidado de não realizar a instalação em nenhum caminho que inclua pastas com espaços ou caracteres especiais ou acentuados em seu nome!

Devo instalar mais alguma coisa?

Janela do Stellarium com dados do aglomerado aberto M6.

É interessante ter o planetário virtual Stellarium funcionando também. Ele também é disponibilizado para todos os sistemas operacionais mais populares e também é gratuito e de código aberto. Baixe em https://stellarium.org

No Stellarium você vai poder visualizar os objetos visíveis no período da campanha e pode inclusive ter ideia das dimensões e brilho desses objetos! É uma boa ferramenta para o planejamento.

E agora, o que tenho que fazer?

Você receberá alguns emails da organização do projeto e da coordenação internacional do IASC com instruções para criar sua conta de acesso e depois terá 1h de tempo de observação alocado a essa conta.

Quando você tiver seus dados de login, pode acessar o portal do IASC/LCO

Portal IASC/LCO

Você encontrará vários links úteis e tutoriais no site, mas aqui no ceuprofundo.com e nas lives de treinamento nos canais do Céu Profundo e do Observatório Nacional no Youtube vamos detalhar todos os passos e tirar todas as dúvidas. Você também receberá o link para entrar num grupo do whatsapp em seu email cadastrado.

E por onde começo a entender o que são objetos de céu profundo?

O vídeo abaixo é uma introdução aos objetos de céu profundo. É um excelente primeiro passo:

Agora me empolguei! Que mais devo assistir?

Primeiro leia esse post mais detalhado aqui no site mesmo (Olha lá em cima no menu! temos uma aba LCO):
https://ceuprofundo.com/2022/08/16/lco-guia-do-participante/

E depois vem nessa playlist pensada exatamente para participantes do projeto LCO:


Leia também