Colimação de telescópios Newtonianos e Dobsonianos com a câmera do celular.
O CollimaScope transforma o celular em um ocular de colimação assistida: a câmera olha pelo focador e o app desenha, por cima do preview ao vivo, círculos de referência geometricamente perfeitos, mira central, marcadores de parafusos e grade — guiando um fluxo de 7 etapas que vai da calibração do preview até a validação em estrela. Tudo offline, sem conta, sem rastreamento e com uma única permissão: a câmera.
⬇️ Baixar o APK (Releases) — requer Android 7+ e câmera traseira.
- Fluxo guiado em 7 etapas — cada etapa traz objetivo, instrução e as guias visuais adequadas já posicionadas; notas ópticas aparecem quando a física do telescópio pede (ex.: offset aparente do secundário em Newtonianos rápidos).
- Círculos que nunca achatam — a regra central do app: guias principais são círculos perfeitos definidos só por centro e raio. Não existe largura/altura nem escala X/Y em nenhuma guia de referência.
- Editor de guias em painel compacto — chips para selecionar qualquer guia da etapa, sliders de raio/espessura/opacidade, 6 cores predefinidas, travar/ocultar/centralizar/duplicar/excluir — sem cobrir o preview.
- Modo avançado — quem já tem o adaptador calibrado pula direto para a colimação; um seletor de etapas permite saltar para qualquer estágio a qualquer momento.
- Perfis de equipamento — telescópios (abertura, focal, focador 1,25"/2", marca central, nº de parafusos, offset do secundário) e adaptadores de celular ficam salvos para reuso entre sessões.
- Histórico com antes/depois — cada sessão registra capturas por etapa; a exportação grava a imagem com o overlay de guias desenhado por cima.
- Modo vermelho — tema noturno em tons de vermelho para preservar a adaptação da visão ao escuro no campo.
- Interface escura, em português (pt-BR), Material Design 3.
| # | Etapa | Objetivo |
|---|---|---|
| 1 | Calibração do preview | Confirmar que o preview não está deformado: um círculo de teste deve parecer redondo em pé e deitado |
| 2 | Calibração do adaptador | Alinhar a câmera do celular com o eixo do focador e salvar o perfil do adaptador |
| 3 | Centralizar no focador | Fazer o círculo-guia coincidir com a borda interna do tubo do focador |
| 4 | Verificar secundário | Posicionar o secundário sob o focador, respeitando a geometria (offset aparente é normal em alguns Newtonianos) |
| 5 | Alinhar secundário → primário | Ajustar o secundário até o primário inteiro aparecer no círculo, com a marca central sobre a mira |
| 6 | Ajustar primário | Colimar o primário até o reflexo da marca central coincidir com a mira, com anéis concêntricos e marcadores dos parafusos como referência |
| 7 | Validação em estrela | Star test: estrela brilhante centralizada e desfocada deve mostrar anéis simétricos |
O app é um assistente visual — ele não emite instruções ópticas do tipo "gire o parafuso X em Y graus". A precisão final vem do preview sem distorção, dos círculos de referência e do alinhamento físico do celular ao focador.
| Peça | Onde | O que faz |
|---|---|---|
ViewportTransform |
core/viewport/ |
mapeia coordenadas entre sensor → preview → widget com escala sempre uniforme (mesmo fator em X e Y), tanto em cover quanto em contain — é isso que garante círculo perfeito em qualquer orientação e resolução |
Point2D |
core/geometry/ |
coordenadas normalizadas (0.0–1.0) independentes de pixels; raios são fração do menor lado visível |
| Guias | features/collimation/domain/ |
hierarquia sealed — CircleGuide, CrosshairGuide, GridGuide, ScrewMarkerGuide, SpiderGuide — serializada em JSON por etapa |
GuidePainter |
shared/painters/ |
CustomPainter que desenha as guias sobre o preview; círculos principais nunca passam por drawOval |
| Workflow | features/collimation/ |
CollimationWorkflowEngine define textos, notas ópticas e guias padrão de cada etapa; o controller (Riverpod) gerencia sessão, navegação e edições |
| Persistência | core/storage/ |
perfis, sessões e guias em armazenamento local (SharedPreferences) — nada sai do aparelho |
Decisões de projeto que valem conhecer antes de contribuir:
- A elipse é só diagnóstico. Existe uma
DiagnosticEllipseno domínio, mas ela nunca pode ser usada como referência principal — se um círculo de referência parecer oval, o problema é o preview (etapa 1), não a guia. - Escala uniforme é inegociável. Qualquer mudança no viewport precisa
manter o mesmo fator de escala em X e Y.
BoxFit.fille afins são bugs por definição neste app. - Guias padrão são ponto de partida, não verdade. Cada etapa nasce com
guias sensatas (
defaultGuides), mas o usuário pode editar, duplicar e reposicionar tudo — o estado editado é o que persiste na sessão.
Requisitos:
- Flutter (canal estável) com as ferramentas de Android
git clone https://github.com/AmaroMiranda/collima_scope.git
cd collima_scope
flutter pub get
flutter run # dispositivo real recomendado (precisa de câmera)Release:
flutter build apk --releaseO emulador funciona para navegar na interface, mas a validação de verdade pede um aparelho real apontado para um focador — o preview da câmera é o coração do app.
flutter testA suíte cobre o ViewportTransform (escala uniforme, cover/contain,
rotações), a serialização das guias, o controller do fluxo de colimação e a
exportação com overlay.
lib/
app/ MaterialApp, tema (escuro + modo vermelho), rotas
core/
geometry/ Point2D normalizado
viewport/ ViewportTransform (escala uniforme)
camera/ engine da câmera (plugin camera)
storage/ persistência local
export/ exportação de captura com overlay
features/
collimation/ workflow, controller, tela da câmera, editor de guias
telescope_profile/ perfis de telescópio (CRUD)
adapter_profile/ perfis de adaptador (CRUD)
history/ sessões, capturas antes/depois, detalhe
guide/ guia educativo das etapas
home/ tela inicial
shared/painters/ GuidePainter (CustomPainter das guias)
test/ viewport, guias, controller, exportação
- Nenhuma chave de API, nenhum backend, nenhum rastreamento
- Funciona 100% offline; dados ficam no aparelho
- Permissão única: câmera
- Fork, branch (
git checkout -b feature/sua-ideia), commits descritivos, PR. - Respeite a regra dos círculos: qualquer PR que introduza escala não-uniforme no viewport ou desenhe guia principal como elipse será recusado — essa é a invariante que faz o app funcionar.
- Mudanças de comportamento óptico (textos das etapas, notas, guias padrão) devem citar a referência de colimação que as justifica.
- Teste em dispositivo real antes de abrir o PR.
Ideias já mapeadas para V2: detecção automática de círculos (OpenCV), análise de desalinhamento assistida, suporte a SCT/RC e refratores, iOS.
Preciso de um adaptador de celular? Não é obrigatório para explorar o app, mas para colimar de verdade sim: a câmera precisa estar estável e centralizada no focador. Qualquer suporte universal de ocular funciona.
O círculo de teste parece oval. E agora? Não continue — é exatamente para isso que a etapa 1 existe. Verifique se o preview não está sendo esticado por alguma configuração de tela/zoom do aparelho e reinicie a sessão.
Funciona em SCT, RC ou refrator? O fluxo atual foi desenhado para Newtonianos e Dobsonianos. Outros desenhos ópticos estão no radar da V2.
Funciona em iPhone? Ainda não — Android primeiro. iOS depende de demanda (e de um Mac por perto).
Copyright 2026 Amaro Miranda
Licenciado sob a MIT License.