Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ on:
workflow_dispatch:
inputs:
tag:
description: 'Tag version to release (e.g., 1.0.2)'
description: 'Tag version to release (e.g., 1.0.3)'
required: true
type: string

Expand Down Expand Up @@ -78,7 +78,7 @@ jobs:
- Para outros sistemas operacionais, consulte [BUILD.md](https://github.com/${{ github.repository }}/blob/main/BUILD.md)

---
**Full Changelog**: https://github.com/${{ github.repository }}/compare/v1.0.1...v${{ steps.get_version.outputs.VERSION }}
**Full Changelog**: https://github.com/${{ github.repository }}/compare/v1.0.2...v${{ steps.get_version.outputs.VERSION }}
draft: false
prerelease: false
generateReleaseNotes: false
Expand Down
41 changes: 38 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

**Acesse o site:** [https://geovannisz.github.io/LayoutGeneratorBINGO/](https://geovannisz.github.io/LayoutGeneratorBINGO/)

**Versão:** 1.0.2 | **Autor:** Geovanni Fernandes Garcia | **Licença:** MIT
**Versão:** 1.0.3 | **Autor:** Geovanni Fernandes Garcia | **Licença:** MIT

---

Expand Down Expand Up @@ -135,10 +135,15 @@ A seção final permite exportar os dados configurados em formatos compatíveis
* **Estrutura JavaScript Modular**:
* `constants.js`: Constantes físicas, dimensões e configurações centralizadas.
* `main.js`: Ponto de entrada e orquestração.
* `tabs.js`: Gerenciador de navegação por abas (TabManager).
* `bingo_layouts.js`: Algoritmos de geração de layouts.
* `generator.js`: UI e lógica do "Gerador de Layout".
* `stations.js`: Gerenciador de estações com 10 tipos de layout.
* `map.js`: Funcionalidades do mapa interativo.
* `export.js`: Exportação de dados OSKAR.
* `export.js`: Exportação de dados OSKAR (WGS84, ECEF, ENU).
* `ini_generator.js`: Geradores de arquivos INI OSKAR (Interferometer, Imager, Beam Pattern).
* `sky_model.js`: Gerador de Sky Model OSKAR (12 colunas, 4 modos).
* `uv_coverage.js`: Visualização de cobertura UV com aceleração WebGPU.
* `beam_pattern.js`: Simulação do padrão de feixe.
* `beam_worker.js` (2D), `beam_worker_3d.js` (3D), `beam_gpu.js` (WebGPU), `heatmap_worker.js` (Mapa de Calor).
* `psf_analyzer.js`: UI da Análise da PSF.
Expand All @@ -150,7 +155,37 @@ A seção final permite exportar os dados configurados em formatos compatíveis
* `csv_filter.py`: Filtro de dados CSV.
* `telescope_gen.py`: Geração de configurações de telescópio (desenvolvimento).

## 🔧 Melhorias Recentes (v1.0.2)
## 🔧 Melhorias Recentes (v1.0.3)

### 🆕 Novos Módulos

* **Sistema de Abas (TabManager)**: Navegação por abas com botões `.tab-btn` e painéis `.tab-content`, evento `tabChanged` customizado.
* **Gerenciador de Estações (`stations.js`)**: 10 tipos de layout de estação (grid, circular, spiral, y_shape, cross, random, logarithmic, sunflower, dual_ring, elliptical) com geração em tempo real (debounce 150ms) ao alterar parâmetros.
* **Gerador INI OSKAR (`ini_generator.js`)**: Três geradores — `oskar_sim_interferometer` (73 parâmetros), `oskar_imager` (34 parâmetros), `oskar_sim_beam_pattern` (42 parâmetros) — alinhados com TutorialOSKAR.tex. Inputs de caminho de arquivo usam colagem via clipboard (fa-paste).
* **Gerador de Sky Model (`sky_model.js`)**: 4 modos (single, grid, random, power_law) com suporte completo a 12 colunas OSKAR (RA, Dec, I, Q, U, V, refFreq, spectralIndex, RM, major, minor, pa). Validação de fontes e tabela interativa com ordenação por coluna.
* **Cobertura UV (`uv_coverage.js`)**: Visualização de cobertura UV com aceleração WebGPU (≥10 estações), shader WGSL (workgroup_size 64), fallback CPU automático. Componente Bz incluído no cálculo de baselines 3D.

### 📐 Exportação e Coordenadas

* **Correção de ordem de coordenadas**: `layout_wgs84.txt` e `position.txt` agora usam lon,lat,alt conforme convenção OSKAR.
* **Seletor de formato de coordenadas**: Radio buttons para alternar entre WGS84 (padrão), ECEF e ENU na seção de exportação, com tooltips explicativos (ℹ️).
* **Consolidação WGS84**: Textarea standalone removida; dados WGS84 servidos exclusivamente via seletor de rádio.

### 🗺️ Mapa e Interação

* **Ctrl+scroll zoom**: Zoom no mapa desabilitado por scroll simples; mensagem overlay "Use Ctrl + scroll para dar zoom" exibida por 1.5s.
* **Toggle de distância no mapa**: Exibição de linhas de distância entre estações.
* **Leaflet atualizado**: CDN de 1.7.1 → 1.9.4.

### 🔧 Correções e Melhorias

* **Heatmap race condition**: Worker agora retorna `layoutHash` para validar resultados contra o layout atual, evitando resultados descartados incorretamente.
* **Heatmap tooltip**: Exibição de intensidade interpolada no tooltip do mapa de calor.
* **BUILD.md**: Seções adicionadas para Linux e macOS, detecção de LFS melhorada.
* **Python `telescope_gen.py`**: Caminhos hardcoded substituídos por `os.path.dirname` + `argparse` CLI.
* **Terminação de linha adaptativa**: `getOsLineEnding()` detecta Windows via `navigator.userAgentData.platform` com fallback para `navigator.platform`.

### 🔧 Melhorias da v1.0.2

### Organização do Código
* Criado arquivo `js/constants.js` centralizando constantes físicas, CIDs IPFS e configurações compartilhadas
Expand Down
64 changes: 58 additions & 6 deletions TODO.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Este documento rastreia as tarefas concluídas durante o desenvolvimento do site Gerador de Layouts de Antenas BINGO e lista possíveis melhorias e adições futuras.

**Versão Atual:** 1.0.2 | **Última Atualização:** Janeiro 2026
**Versão Atual:** 1.0.3 | **Última Atualização:** Fevereiro 2026

## 🚀 Fase 1: Fundação e Configuração Inicial

Expand Down Expand Up @@ -227,6 +227,58 @@ Este documento rastreia as tarefas concluídas durante o desenvolvimento do site
* [x] Executar code review e corrigir issues.
* [x] Executar CodeQL scan (0 vulnerabilidades).

## 🚀 Fase 9: Módulos OSKAR, Estações, Sky Model e Cobertura UV (v1.0.3)

* [x] **Sistema de Abas e Navegação:**
* [x] Implementar `TabManager` com botões `.tab-btn` e painéis `.tab-content`.
* [x] Disparar evento customizado `tabChanged` ao trocar de aba.
* [x] Adicionar acesso rápido às abas no `main.js`.
* [x] **Gerenciador de Estações (`stations.js`):**
* [x] Implementar 10 tipos de layout: grid, circular, spiral, y_shape, cross, random, logarithmic, sunflower (Fibonacci), dual_ring, elliptical.
* [x] Adicionar geração automática em tempo real com debounce (150ms) ao alterar parâmetros.
* [x] Manter botões "Gerar" e "Randomizar" para controle explícito.
* [x] Geração inicial no carregamento da página.
* [x] Implementar parâmetros de espaçamento exponencial por tipo de layout.
* [x] **Gerador INI OSKAR (`ini_generator.js`):**
* [x] Implementar `OskarIniGenerator` para `oskar_sim_interferometer` (73 parâmetros em 5 seções).
* [x] Implementar `OskarImagerGenerator` para `oskar_imager` (34 parâmetros).
* [x] Implementar `OskarBeamPatternGenerator` para `oskar_sim_beam_pattern` (42 parâmetros).
* [x] Alinhar todos os geradores com TutorialOSKAR.tex (tooltips, defaults, parâmetros faltantes).
* [x] Inputs de caminho de arquivo via clipboard paste (fa-paste) com fallback.
* [x] Utilitário `getOsLineEnding()` para detectar terminação de linha do SO.
* [x] Todos os geradores prepõem seção `[General] app=...`.
* [x] **Gerador de Sky Model (`sky_model.js`):**
* [x] Implementar 4 modos de geração: single, grid, random, power_law.
* [x] Suporte completo a 12 colunas OSKAR (RA, Dec, I, Q, U, V, refFreq, spix, RM, major, minor, pa).
* [x] Helper `_buildGaussianFields(prefix)` para evitar duplicação.
* [x] Validação de fontes: RA ∈ [0°, 360°), Dec ∈ [-90°, +90°], Flux ≥ 0.
* [x] Tabela interativa com coluna "Tipo" (ponto vs Gaussiana) e ordenação por coluna.
* [x] Exportação no formato OSKAR de 12 colunas.
* [x] **Cobertura UV (`uv_coverage.js`):**
* [x] Implementar visualização de cobertura UV com Plotly.js.
* [x] Aceleração WebGPU com shader WGSL (workgroup_size 64) para ≥10 estações.
* [x] Fallback automático para CPU (`_computeUVonCPU`).
* [x] Incluir componente Bz no cálculo de baselines 3D.
* [x] **Exportação e Coordenadas:**
* [x] Corrigir ordem de coordenadas: `layout_wgs84.txt` e `position.txt` para lon,lat,alt.
* [x] Implementar seletor de formato (WGS84/ECEF/ENU) com radio buttons e tooltips.
* [x] Remover textarea WGS84 standalone; consolidar no seletor de rádio.
* [x] ZIP export lê de `export-layout-wgs84-alt`.
* [x] **Mapa Interativo:**
* [x] Implementar Ctrl+scroll zoom com overlay de mensagem (1.5s).
* [x] Adicionar toggle de distância no mapa.
* [x] Atualizar Leaflet CDN de 1.7.1 → 1.9.4.
* [x] **Correções de Bugs:**
* [x] Corrigir race condition no heatmap (worker retorna `layoutHash` para validação).
* [x] Corrigir cache de heatmap para evitar dados obsoletos.
* [x] Adicionar tooltip de intensidade no mapa de calor.
* [x] Melhorar sincronização de workers.
* [x] **Infraestrutura:**
* [x] Atualizar BUILD.md com seções Linux e macOS.
* [x] Python `telescope_gen.py`: substituir caminhos hardcoded por `os.path.dirname` + `argparse`.
* [x] Adicionar campo de nome de arquivo de imagem customizável.
* [x] Habilitar carregamento local de dados.

---

## 🔮 Futuras Melhorias e Adições
Expand All @@ -250,8 +302,8 @@ Este documento rastreia as tarefas concluídas durante o desenvolvimento do site
* [ ] **Mais Algoritmos de Layout**:
* [ ] Implementar layouts otimizados para baixa redundância (algoritmo de minimização de sidelobes).
* [ ] Layouts baseados em otimização por algoritmos genéticos.
* [ ] Layout Y-shaped (formato em Y) comum em radioastronomia.
* [ ] Layout logarítmico-espiral.
* [x] Layout Y-shaped (formato em Y) comum em radioastronomia. *(implementado em v1.0.3 no StationManager)*
* [x] Layout logarítmico-espiral. *(implementado em v1.0.3 no StationManager)*
* [ ] **Editor de Layout Manual Avançado**:
* [ ] Ferramentas de alinhamento (alinhar à grade, alinhar horizontalmente/verticalmente).
* [ ] Ferramentas de distribuição (distribuir uniformemente).
Expand All @@ -271,9 +323,9 @@ Este documento rastreia as tarefas concluídas durante o desenvolvimento do site
* [ ] Identificação e listagem dos níveis dos lóbulos laterais mais altos.
* [ ] Visualização 2D/3D da própria PSF como superfície.
* [ ] Comparação lado-a-lado de PSFs de diferentes layouts.
* [ ] **Análise de Cobertura UV**:
* [ ] Plotar a cobertura no plano UV para o arranjo gerado.
* [ ] Simular cobertura UV ao longo de diferentes horas de observação (Earth rotation synthesis).
* [x] **Análise de Cobertura UV**: *(implementado em v1.0.3)*
* [x] Plotar a cobertura no plano UV para o arranjo gerado.
* [x] Simular cobertura UV ao longo de diferentes horas de observação (Earth rotation synthesis).
* [ ] Calcular métricas de cobertura UV (filling factor, gaps).
* [ ] **Simulação de Observação**:
* [ ] Simular imagem de fonte pontual com o beam pattern atual.
Expand Down
6 changes: 3 additions & 3 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<meta name="keywords" content="BINGO, antenas, layout generator, design de antenas, simulação de antenas, rádio astronomia, PSF, padrão de feixe, OSKAR, BAO, tiles de antena, rádio telescópio, cosmologia, phased array, beam pattern, array factor">
<meta name="theme-color" content="#2c3e50">
<meta name="color-scheme" content="light dark">
<meta name="generator" content="BINGO Layout Generator v1.0.2">
<meta name="generator" content="BINGO Layout Generator v1.0.3">
<link rel="canonical" href="https://geovannisz.github.io/LayoutGeneratorBINGO/">
<title>Gerador de Layouts de Antenas BINGO | Design e Simulação de Arranjos | Rádio Astronomia</title>

Expand Down Expand Up @@ -62,7 +62,7 @@
"operatingSystem": "Web-based",
"url": "https://geovannisz.github.io/LayoutGeneratorBINGO/",
"browserRequirements": "HTML5-compatible browser with JavaScript and Canvas support",
"softwareVersion": "1.0.2",
"softwareVersion": "1.0.3",
"releaseNotes": "https://github.com/Geovannisz/LayoutGeneratorBINGO/releases",
"screenshot": "https://geovannisz.github.io/LayoutGeneratorBINGO/BINGO-ABDUS.png",
"featureList": [
Expand Down Expand Up @@ -690,7 +690,7 @@ <h3><i class="fas fa-crosshairs"></i> Resolução Angular</h3>
</main>

<footer role="contentinfo">
<p style='text-align: center; opacity: 0.7;'>Versão 1.0.2</p>
<p style='text-align: center; opacity: 0.7;'>Versão 1.0.3</p>
<p>Gerador de Layouts de Antenas BINGO - Ferramenta para design e simulação no projeto de rádio astronomia BINGO.</p>
<nav class="footer-links" aria-label="Links externos">
<a href="https://github.com/Geovannisz/LayoutGeneratorBINGO/tree/main" target="_blank" rel="noopener noreferrer" title="Documentação do Projeto (README)">
Expand Down
2 changes: 1 addition & 1 deletion js/beam_gpu.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
* Falls back to CPU calculation when WebGPU is not available.
*
* @author Geovanni Fernandes Garcia
* @version 1.0.2
* @version 1.0.3
*/

'use strict';
Expand Down
2 changes: 1 addition & 1 deletion js/beam_pattern.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* @requires BingoConstants
* @requires Plotly
* @author Geovanni Fernandes Garcia
* @version 1.0.2
* @version 1.0.3
*/

'use strict';
Expand Down
2 changes: 1 addition & 1 deletion js/beam_worker.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
* Este worker é executado em uma thread separada para não bloquear a UI.
*
* @author Geovanni Fernandes Garcia
* @version 1.0.2
* @version 1.0.3
*/

'use strict';
Expand Down
2 changes: 1 addition & 1 deletion js/beam_worker_3d.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
*
* @requires beam_gpu.js
* @author Geovanni Fernandes Garcia
* @version 1.0.2
* @version 1.0.3
*/

'use strict';
Expand Down
2 changes: 1 addition & 1 deletion js/bingo_layouts.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
* nas dimensões do tile e um fator de separação.
*
* @author Geovanni Fernandes Garcia
* @version 1.0.2
* @version 1.0.3
*/

'use strict';
Expand Down
2 changes: 1 addition & 1 deletion js/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
*
* @fileoverview Centralized constants for the BINGO Layout Generator application.
* @author Geovanni Fernandes Garcia
* @version 1.0.2
* @version 1.0.3
*/

'use strict';
Expand Down
2 changes: 1 addition & 1 deletion js/export.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* @requires FileSaver
* @requires BingoConstants
* @author Geovanni Fernandes Garcia
* @version 1.0.2
* @version 1.0.3
*/

'use strict';
Expand Down
2 changes: 1 addition & 1 deletion js/generator.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
* @requires BingoLayouts
* @requires BingoConstants
* @author Geovanni Fernandes Garcia
* @version 1.0.2
* @version 1.0.3
*/

'use strict';
Expand Down
2 changes: 1 addition & 1 deletion js/heatmap_worker.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
* Full spectrum coverage for maximum data discrimination.
*
* @author Geovanni Fernandes Garcia
* @version 1.0.2
* @version 1.0.3
*/

'use strict';
Expand Down
2 changes: 1 addition & 1 deletion js/ini_generator.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
*
* @requires BingoConstants
* @author Geovanni Fernandes Garcia
* @version 1.0.2
* @version 1.0.3
*/

'use strict';
Expand Down
2 changes: 1 addition & 1 deletion js/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
* @requires PSFAnalyzer
* @requires PSFEeThetaPlotter
* @author Geovanni Fernandes Garcia
* @version 1.0.2
* @version 1.0.3
*/

'use strict';
Expand Down
2 changes: 1 addition & 1 deletion js/map.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
* @requires Leaflet
* @requires BingoConstants
* @author Geovanni Fernandes Garcia
* @version 1.0.2
* @version 1.0.3
*/

'use strict';
Expand Down
2 changes: 1 addition & 1 deletion js/psf_analysis_worker.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
*
* @requires beam_gpu.js
* @author Geovanni Fernandes Garcia
* @version 1.0.2
* @version 1.0.3
*/

'use strict';
Expand Down
2 changes: 1 addition & 1 deletion js/psf_analyzer.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
*
* @requires psf_analysis_worker.js
* @author Geovanni Fernandes Garcia
* @version 1.0.2
* @version 1.0.3
*/

'use strict';
Expand Down
2 changes: 1 addition & 1 deletion js/psf_ee_theta_plot.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
* @requires Plotly
* @requires PSFAnalyzer
* @author Geovanni Fernandes Garcia
* @version 1.0.2
* @version 1.0.3
*/

'use strict';
Expand Down
2 changes: 1 addition & 1 deletion js/sky_model.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
*
* @requires BingoConstants
* @author Geovanni Fernandes Garcia
* @version 1.0.2
* @version 1.0.3
*/

'use strict';
Expand Down
2 changes: 1 addition & 1 deletion js/stations.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
*
* @requires BingoConstants
* @author Geovanni Fernandes Garcia
* @version 1.0.2
* @version 1.0.3
*/

'use strict';
Expand Down
2 changes: 1 addition & 1 deletion js/tabs.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
* suporte a navegação por teclado e troca programática de abas.
*
* @author Geovanni Fernandes Garcia
* @version 1.0.2
* @version 1.0.3
*/

'use strict';
Expand Down
2 changes: 1 addition & 1 deletion js/uv_coverage.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
* @requires BingoConstants
* @requires Plotly
* @author Geovanni Fernandes Garcia
* @version 1.0.2
* @version 1.0.3
*/

'use strict';
Expand Down
2 changes: 1 addition & 1 deletion main.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
* Gerencia a criação de janelas, ciclo de vida da aplicação e atualizações automáticas.
*
* @author Geovanni Fernandes Garcia
* @version 1.0.2
* @version 1.0.3
*/

'use strict';
Expand Down
Loading