Turn Venus's map north up, so Maxwell Montes is drawn in the north where the IAU puts it

venus.jpg, from the Solar System Scope pack, is the Magellan radar map turned half round: south up
and east to the left. Its brightest feature north or south of 50 degrees, Maxwell Montes, sat at
63.4 S, 8.9 W (blurred at sigma 3), with Lakshmi Planum east of it; the IAU Gazetteer puts Maxwell
at 65.2 N, 3.3 E, at Lakshmi's eastern end. The IAU pole and W are right (Venus's sub-Earth
longitude matched Horizons to the thousandth), and so is MAP_TO_BODY, which Earth, Mars, the Moon
and Mercury were checked against; the file was not, and its surface was drawn turned 180 degrees
about the prime meridian's axis.

Turned back with PIL's ROTATE_180 and re-saved on the file's own quantisation tables (0.03 grey
levels from the exact turn, 240 079 bytes), its brightest point is 63.7 N, 8.3 E with Lakshmi to
the west, and the dev server serves that file. The textures README records the check, the
MAP_TO_BODY comment adds Venus to the maps it names, and texture-catalog.spec.ts pins the checked
file's SHA-256, since no image decoder runs in the unit suite (a triple-slash reference gives that
one spec Node's types).

Control: the pack's file put back fails "wraps Venus in the map turned north up".

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-29 19:07:03 +02:00
co-authored by Claude Opus 5.5
parent 34ae803c06
commit 87e9ec274b
4 changed files with 24 additions and 1 deletions
+3 -1
View File
@@ -19,7 +19,9 @@ const Z_AXIS = new THREE.Vector3(0, 0, 1);
* Greenwich is in the middle of Earth's; on Mars's, Olympus Mons (226.2 E, which is -133.8) sits a * Greenwich is in the middle of Earth's; on Mars's, Olympus Mons (226.2 E, which is -133.8) sits a
* little over a third of the width left of centre; on the Moon's, Mare Crisium (59 E) is right of * little over a third of the width left of centre; on the Moon's, Mare Crisium (59 E) is right of
* centre and Mare Orientale (95 W) left of it; on Mercury's, the rayed crater Kuiper (31.5 W, 11 S) * centre and Mare Orientale (95 W) left of it; on Mercury's, the rayed crater Kuiper (31.5 W, 11 S)
* is just left of centre and below the equator. A map labelled in west longitude, as most planets' * is just left of centre and below the equator; on Venus's, Maxwell Montes (65.2 N, 3.3 E) is the
* brightest spot, high and just right of centre — Solar System Scope ships that map turned half
* round, south up, and it is kept turned back. A map labelled in west longitude, as most planets'
* are, is still drawn with east to the right, as any map of a sphere seen from outside is; only its * are, is still drawn with east to the right, as any map of a sphere seen from outside is; only its
* numbers run the other way. So longitude 0 is +X and 90 E is -Z, and a quarter turn about X * numbers run the other way. So longitude 0 is +X and 90 E is -Z, and a quarter turn about X
* carries that onto the IAU's body-fixed frame: pole +Z, prime meridian +X, 90 E +Y. * carries that onto the IAU's body-fixed frame: pole +Z, prime meridian +X, 90 E +Y.
@@ -1,3 +1,7 @@
/// <reference types="node" />
// Node, for the one test that reads a map's bytes from disk.
import { createHash } from 'node:crypto';
import { readFileSync } from 'node:fs';
import * as THREE from 'three/webgpu'; import * as THREE from 'three/webgpu';
import { describe, expect, it } from 'vitest'; import { describe, expect, it } from 'vitest';
@@ -11,6 +15,16 @@ describe('bodyTexturePath', () => {
} }
}); });
it('wraps Venus in the map turned north up, the one checked for Maxwell Montes', () => {
// As the Solar System Scope pack ships it, venus.jpg is the Magellan map turned half round:
// Maxwell Montes, 65.2 N 3.3 E in the IAU Gazetteer, was its brightest point at 63 S 9 W. The
// file turned back puts it at 63.7 N 8.3 E; see assets/textures/README.md. No decoder runs
// here, so the check is pinned to those bytes.
expect(bodyTexturePath('venus')).toBe('assets/textures/bodies/venus.jpg');
const bytes = readFileSync(`${process.cwd()}/src/assets/textures/bodies/venus.jpg`);
expect(createHash('sha256').update(bytes).digest('hex')).toBe('4528b8e9a3cf880d80e8a5321a3001e8792bc18f266c06f3456a6bd8475e021d');
});
it('leaves the bodies with no map it could check to their derived surface', () => { it('leaves the bodies with no map it could check to their derived surface', () => {
for (const id of ['miranda', 'ariel', 'umbriel', 'titania', 'oberon', 'hyperion', 'eris']) { for (const id of ['miranda', 'ariel', 'umbriel', 'titania', 'oberon', 'hyperion', 'eris']) {
expect(bodyTexturePath(id)).toBeUndefined(); expect(bodyTexturePath(id)).toBeUndefined();
+7
View File
@@ -12,6 +12,13 @@ prime meridian (W) then turns longitude 0 to where it belongs at any date.
and the skybox come from the Solar System Scope texture pack, and `jupiter` from its 8k pack, via and the skybox come from the Solar System Scope texture pack, and `jupiter` from its 8k pack, via
Wikimedia Commons. See each file's Commons page for the original credit line. Wikimedia Commons. See each file's Commons page for the original credit line.
`venus.jpg` is kept turned 180 degrees from the pack's file, which is the Magellan radar map with
south up and east to the left: there Maxwell Montes (65.2 N, 3.3 E in the IAU Gazetteer), the
brightest feature north or south of 50 degrees, sat at 63 S, 9 W, with Lakshmi Planum east of it
instead of west. Turned back (PIL `ROTATE_180`, re-saved on the file's own quantisation tables, 0.03
grey levels from the exact turn), its brightest point is at 63.7 N, 8.3 E, with Lakshmi to the west.
`texture-catalog.spec.ts` pins the checked file's SHA-256.
`saturn_ring.png` is a 1 280 by 78 px strip. Its x axis runs straight out from Saturn: read off its `saturn_ring.png` is a 1 280 by 78 px strip. Its x axis runs straight out from Saturn: read off its
alpha, the C ring's inner edge (74 490 km) is at px 91, the B ring's inner and outer edges (92 000 alpha, the C ring's inner edge (74 490 km) is at px 91, the B ring's inner and outer edges (92 000
and 117 580 km) at 404.5 and 860, the A ring's outer edge (136 775 km) at 1 204 and the F ring and 117 580 km) at 404.5 and 860, the A ring's outer edge (136 775 km) at 1 204 and the F ring
Binary file not shown.

Before

Width:  |  Height:  |  Size: 235 KiB

After

Width:  |  Height:  |  Size: 234 KiB