Stylize Moon and planet visibility
This commit is contained in:
parent
e262395fb3
commit
4e31217186
1 changed files with 13 additions and 10 deletions
|
|
@ -1269,13 +1269,13 @@ const TWINKLE_MAG = 4.0; // até esta magnitude a estrela cintila; acima é e
|
|||
const DEG = Math.PI / 180;
|
||||
window.__skyTimeOffset = 0; // debug: ms somados ao relógio p/ testar a rotação
|
||||
const PLANET_SPECS = [
|
||||
[Astronomy.Body.Mercury, 'Mercúrio', [205, 190, 165], 2439.7],
|
||||
[Astronomy.Body.Venus, 'Vênus', [255, 232, 180], 6051.8],
|
||||
[Astronomy.Body.Mars, 'Marte', [255, 120, 82], 3389.5],
|
||||
[Astronomy.Body.Jupiter, 'Júpiter', [255, 218, 170], 69911],
|
||||
[Astronomy.Body.Saturn, 'Saturno', [238, 205, 135], 58232],
|
||||
[Astronomy.Body.Uranus, 'Urano', [145, 225, 235], 25362],
|
||||
[Astronomy.Body.Neptune, 'Netuno', [105, 150, 255], 24622],
|
||||
[Astronomy.Body.Mercury, 'Mercúrio', [190, 188, 182]],
|
||||
[Astronomy.Body.Venus, 'Vênus', [255, 241, 204]],
|
||||
[Astronomy.Body.Mars, 'Marte', [238, 105, 70]],
|
||||
[Astronomy.Body.Jupiter, 'Júpiter', [232, 202, 164]],
|
||||
[Astronomy.Body.Saturn, 'Saturno', [224, 195, 128]],
|
||||
[Astronomy.Body.Uranus, 'Urano', [151, 223, 226]],
|
||||
[Astronomy.Body.Neptune, 'Netuno', [91, 126, 220]],
|
||||
];
|
||||
const KM_PER_AU = 149597870.7;
|
||||
const MOON_RADIUS_KM = 1737.4;
|
||||
|
|
@ -1841,7 +1841,8 @@ function updateSolarSystem(date, lst, W, H, horizonPx) {
|
|||
const angularRadiusPx = (radiusKm, distanceAu) =>
|
||||
Math.asin(Math.min(1, radiusKm / (distanceAu * KM_PER_AU))) / DEG *
|
||||
(horizonPx / ALT_TOP);
|
||||
const moonRadius = angularRadiusPx(MOON_RADIUS_KM, moonCoords.eq.dist);
|
||||
const realMoonRadius = angularRadiusPx(MOON_RADIUS_KM, moonCoords.eq.dist);
|
||||
const moonRadius = Math.max(realMoonRadius, Math.min(18, H * 0.0075));
|
||||
|
||||
/* Transformação vetorial oficial do exemplo camera.js do Astronomy
|
||||
Engine: ângulo do limbo claro em relação ao alto do horizonte. */
|
||||
|
|
@ -1864,14 +1865,16 @@ function updateSolarSystem(date, lst, W, H, horizonPx) {
|
|||
} : null;
|
||||
|
||||
const planets = [];
|
||||
for (const [body, name, color, radiusKm] of PLANET_SPECS) {
|
||||
for (const [body, name, color] of PLANET_SPECS) {
|
||||
const coords = bodyCoordinates(body);
|
||||
if (!coords.sc) continue;
|
||||
const illumination = Astronomy.Illumination(body, date);
|
||||
planets.push({
|
||||
...coords.sc, alt: coords.aa.alt, az: coords.aa.az, name, color, body,
|
||||
magnitude: illumination.mag,
|
||||
radius: Math.max(0.55, angularRadiusPx(radiusKm, coords.eq.dist)),
|
||||
/* Tamanho visual ampliado por magnitude: os discos angulares reais
|
||||
seriam subpixel, mas posição e brilho relativo continuam reais. */
|
||||
radius: Math.max(1.8, Math.min(5.2, 3.45 - illumination.mag * 0.46)),
|
||||
});
|
||||
}
|
||||
solarSystemFrame = { moon, planets };
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue