Refine ship orders and viewer controls
This commit is contained in:
@@ -15,6 +15,7 @@ import type {
|
||||
import type { ZoomBlend } from "./viewerConstants";
|
||||
|
||||
export const KILOMETERS_PER_AU = 149_597_870.7;
|
||||
export const METERS_PER_KILOMETER = 1000;
|
||||
export const DISPLAY_UNITS_PER_KILOMETER = 0.0000015;
|
||||
export const DISPLAY_UNITS_PER_LIGHT_YEAR = 2600;
|
||||
|
||||
@@ -44,7 +45,7 @@ function formatNumber(value: number, fractionDigits: number) {
|
||||
}
|
||||
|
||||
export function formatLocalDistance(value: number): string {
|
||||
return `${formatNumber(value, 0)} km`;
|
||||
return `${formatNumber(value, value >= 100 ? 0 : 1)} m`;
|
||||
}
|
||||
|
||||
export function formatSystemDistance(value: number): string {
|
||||
@@ -76,6 +77,16 @@ export function formatAdaptiveDistanceFromKilometers(kilometers: number): string
|
||||
return `${formatNumber(meters, meters >= 100 ? 0 : 1)} m`;
|
||||
}
|
||||
|
||||
export function formatAdaptiveDistanceFromMeters(meters: number): string {
|
||||
const absoluteMeters = Math.max(0, meters);
|
||||
if (absoluteMeters >= METERS_PER_KILOMETER) {
|
||||
const kilometers = absoluteMeters / METERS_PER_KILOMETER;
|
||||
return `${formatNumber(kilometers, kilometers >= 100 ? 0 : 2)} km`;
|
||||
}
|
||||
|
||||
return `${formatNumber(absoluteMeters, absoluteMeters >= 100 ? 0 : 1)} m`;
|
||||
}
|
||||
|
||||
export function formatShipSpeed(ship: ShipSnapshot): string {
|
||||
const speed = Math.max(0, ship.travelSpeed);
|
||||
const unit = ship.travelSpeedUnit;
|
||||
@@ -107,7 +118,7 @@ export function smoothBand(value: number, start: number, end: number): number {
|
||||
}
|
||||
|
||||
export function computeZoomBlend(distance: number): ZoomBlend {
|
||||
const localToSystem = smoothBand(distance, 1200, 5200);
|
||||
const localToSystem = smoothBand(distance, 120, 650);
|
||||
const systemToUniverse = smoothBand(distance, 9000, 22000);
|
||||
|
||||
return {
|
||||
|
||||
Reference in New Issue
Block a user