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;
|
const DEG = Math.PI / 180;
|
||||||
window.__skyTimeOffset = 0; // debug: ms somados ao relógio p/ testar a rotação
|
window.__skyTimeOffset = 0; // debug: ms somados ao relógio p/ testar a rotação
|
||||||
const PLANET_SPECS = [
|
const PLANET_SPECS = [
|
||||||
[Astronomy.Body.Mercury, 'Mercúrio', [205, 190, 165], 2439.7],
|
[Astronomy.Body.Mercury, 'Mercúrio', [190, 188, 182]],
|
||||||
[Astronomy.Body.Venus, 'Vênus', [255, 232, 180], 6051.8],
|
[Astronomy.Body.Venus, 'Vênus', [255, 241, 204]],
|
||||||
[Astronomy.Body.Mars, 'Marte', [255, 120, 82], 3389.5],
|
[Astronomy.Body.Mars, 'Marte', [238, 105, 70]],
|
||||||
[Astronomy.Body.Jupiter, 'Júpiter', [255, 218, 170], 69911],
|
[Astronomy.Body.Jupiter, 'Júpiter', [232, 202, 164]],
|
||||||
[Astronomy.Body.Saturn, 'Saturno', [238, 205, 135], 58232],
|
[Astronomy.Body.Saturn, 'Saturno', [224, 195, 128]],
|
||||||
[Astronomy.Body.Uranus, 'Urano', [145, 225, 235], 25362],
|
[Astronomy.Body.Uranus, 'Urano', [151, 223, 226]],
|
||||||
[Astronomy.Body.Neptune, 'Netuno', [105, 150, 255], 24622],
|
[Astronomy.Body.Neptune, 'Netuno', [91, 126, 220]],
|
||||||
];
|
];
|
||||||
const KM_PER_AU = 149597870.7;
|
const KM_PER_AU = 149597870.7;
|
||||||
const MOON_RADIUS_KM = 1737.4;
|
const MOON_RADIUS_KM = 1737.4;
|
||||||
|
|
@ -1841,7 +1841,8 @@ function updateSolarSystem(date, lst, W, H, horizonPx) {
|
||||||
const angularRadiusPx = (radiusKm, distanceAu) =>
|
const angularRadiusPx = (radiusKm, distanceAu) =>
|
||||||
Math.asin(Math.min(1, radiusKm / (distanceAu * KM_PER_AU))) / DEG *
|
Math.asin(Math.min(1, radiusKm / (distanceAu * KM_PER_AU))) / DEG *
|
||||||
(horizonPx / ALT_TOP);
|
(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
|
/* Transformação vetorial oficial do exemplo camera.js do Astronomy
|
||||||
Engine: ângulo do limbo claro em relação ao alto do horizonte. */
|
Engine: ângulo do limbo claro em relação ao alto do horizonte. */
|
||||||
|
|
@ -1864,14 +1865,16 @@ function updateSolarSystem(date, lst, W, H, horizonPx) {
|
||||||
} : null;
|
} : null;
|
||||||
|
|
||||||
const planets = [];
|
const planets = [];
|
||||||
for (const [body, name, color, radiusKm] of PLANET_SPECS) {
|
for (const [body, name, color] of PLANET_SPECS) {
|
||||||
const coords = bodyCoordinates(body);
|
const coords = bodyCoordinates(body);
|
||||||
if (!coords.sc) continue;
|
if (!coords.sc) continue;
|
||||||
const illumination = Astronomy.Illumination(body, date);
|
const illumination = Astronomy.Illumination(body, date);
|
||||||
planets.push({
|
planets.push({
|
||||||
...coords.sc, alt: coords.aa.alt, az: coords.aa.az, name, color, body,
|
...coords.sc, alt: coords.aa.alt, az: coords.aa.az, name, color, body,
|
||||||
magnitude: illumination.mag,
|
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 };
|
solarSystemFrame = { moon, planets };
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue