Test that the system view warms a host's planets by the luminosity the archive gives it
d94451e passes the host's surface luminosity, the archive's st_lum where it has one, to the
SystemOrbitsRenderer that classifies each planet, and no test looked at what the renderer got: the
review's mutants that handed it the derived luminosity, none, or the Sun's all passed 807 of 807.
Its commit says 544 planet temperatures move by more than 10 % and 98 planets change class with it.
The scene spec now enters Proxima and checks that Proxima b's marker carries the texture of the
appearance 0.00151 L☉ gives it (228 K, temperate), after checking that null and 1 L☉ each give
another class, so that the texture can tell them apart. Controls: the renderer given
starSurfaceOf(star, []).luminositySolar (the fixture has no measured band, so none), null, or 1
each fail it.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -17,6 +17,8 @@ import { galacticNormal } from './grid-plane';
|
|||||||
import { catalogueCensus, positionsNote } from './star-readouts';
|
import { catalogueCensus, positionsNote } from './star-readouts';
|
||||||
import { closestApproachAu, SUN_RADIUS_AU } from './system-framing';
|
import { closestApproachAu, SUN_RADIUS_AU } from './system-framing';
|
||||||
import { blackbodyColor, SOLAR_EFFECTIVE_TEMPERATURE_K } from '../../shared/astro/stellar';
|
import { blackbodyColor, SOLAR_EFFECTIVE_TEMPERATURE_K } from '../../shared/astro/stellar';
|
||||||
|
import { appearanceForExoplanet } from '../../shared/astro/body-appearance';
|
||||||
|
import { planetTexture } from '../../shared/rendering/procedural-planet-texture';
|
||||||
import { JumpLinkRenderer } from './jump-link-renderer';
|
import { JumpLinkRenderer } from './jump-link-renderer';
|
||||||
import { StarFieldRenderer } from './star-field-renderer';
|
import { StarFieldRenderer } from './star-field-renderer';
|
||||||
import { LabeledPoint, StarLabelOverlay } from './star-label-overlay';
|
import { LabeledPoint, StarLabelOverlay } from './star-label-overlay';
|
||||||
@@ -1014,6 +1016,17 @@ describe('GalaxySystemSceneComponent camera-flight transitions', () => {
|
|||||||
expect(scene.hudReadouts().find((readout) => readout.label === 'Radius')?.value).toBe('0.141 solar radii');
|
expect(scene.hudReadouts().find((readout) => readout.label === 'Radius')?.value).toBe('0.141 solar radii');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("warms a host's planets by the luminosity the archive gives it, in the system as on their own page", async () => {
|
||||||
|
const scene = await enter(PROXIMA);
|
||||||
|
const planet = (scene.systemRenderer as unknown as { members: { id: string; marker: THREE.Mesh }[] }).members.find((member) => member.id === PROXIMA_B.id)!;
|
||||||
|
// The archive's 1.51×10⁻³ L☉ puts b at 228 K, temperate. The fixture has no measured band, so
|
||||||
|
// without it b gets no temperature and another class, as it does in the Sun's light.
|
||||||
|
const warmed = appearanceForExoplanet(PROXIMA_B, 0.00151);
|
||||||
|
expect(warmed.planetClass).not.toBe(appearanceForExoplanet(PROXIMA_B, null).planetClass);
|
||||||
|
expect(warmed.planetClass).not.toBe(appearanceForExoplanet(PROXIMA_B, 1).planetClass);
|
||||||
|
expect((planet.marker.material as THREE.MeshStandardMaterial).map).toBe(planetTexture(warmed, { width: 128, height: 64 }));
|
||||||
|
});
|
||||||
|
|
||||||
it('keeps the camera three radii out from a supergiant drawn at the radius its type and brightness give', async () => {
|
it('keeps the camera three radii out from a supergiant drawn at the radius its type and brightness give', async () => {
|
||||||
const scene = await enter(ANTARES);
|
const scene = await enter(ANTARES);
|
||||||
const radius = scene.starMarkerGeometry.parameters.radius;
|
const radius = scene.starMarkerGeometry.parameters.radius;
|
||||||
|
|||||||
Reference in New Issue
Block a user