mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-04 02:14:01 +00:00
Adds a Local ADS-B layer fed by your own receivers: a browser WebUSB RTL-SDR (with FM listening) and local 1090/978 MHz decoder feeds (LOCAL_RECEIVER_FEEDS, local and private addresses only). Local aircraft draw in magenta with class, silhouettes, 3D models, trails and a position sanity filter; the click card names the band and input that heard them. Builds on Sameh Khamis's SDR prototype and the initial GEV port by Mazeyar Moeini Feizabadi (#134); the decoder-feed design follows the notes on #57. Closes #57. Co-authored-by: Sameh Khamis <[email protected]> Co-authored-by: Mazeyar Moeini Feizabadi <[email protected]>
53 lines
1.7 KiB
JavaScript
53 lines
1.7 KiB
JavaScript
import {
|
|
CLASS_MODEL_REAL,
|
|
CLASS_MODEL_URL,
|
|
CLASS_SCALE_3D,
|
|
} from '../../data/aircraftClass.js';
|
|
import {
|
|
trailAnchorForModel,
|
|
visualCenterForModel,
|
|
} from '../../data/modelVisualAnchor.js';
|
|
import {
|
|
MODEL_BELLY_OFFSET_NATIVE,
|
|
MODEL_COLOR_BLEND_AMOUNT,
|
|
MODEL_NATIVE_RADIUS_M,
|
|
MODEL_SCALE,
|
|
PLANE_MODEL_URL,
|
|
} from './policy.js';
|
|
|
|
/**
|
|
* The glTF asset, scale and measured geometry a civil aircraft class renders
|
|
* with. Real per-class GLBs are baked to real-world meters (scale 1, measured
|
|
* belly and radius); classes without one share airplane.glb at the class's
|
|
* 3D scale. Shared by the Flights layer and the Local ADS-B layer so both draw
|
|
* the same model for the same class.
|
|
* @param {string} klass Aircraft class from `classifyAircraft`.
|
|
* @returns {{url:string, scale:number, nativeRadiusM:number, bellyM:number,
|
|
* blendAmount:number, visualCenterNative:object, trailAnchorNative:object}}
|
|
*/
|
|
export function civilAircraftModelSpec(klass) {
|
|
const real = CLASS_MODEL_REAL[klass];
|
|
if (real) {
|
|
return {
|
|
url: real.url,
|
|
scale: 1,
|
|
nativeRadiusM: real.radiusM,
|
|
bellyM: real.bellyM,
|
|
blendAmount: MODEL_COLOR_BLEND_AMOUNT,
|
|
visualCenterNative: visualCenterForModel(real.url),
|
|
trailAnchorNative: trailAnchorForModel(real.url),
|
|
};
|
|
}
|
|
const scale = MODEL_SCALE * (CLASS_SCALE_3D[klass] || 1);
|
|
const url = CLASS_MODEL_URL[klass] || PLANE_MODEL_URL;
|
|
return {
|
|
url,
|
|
scale,
|
|
nativeRadiusM: MODEL_NATIVE_RADIUS_M,
|
|
bellyM: MODEL_BELLY_OFFSET_NATIVE * scale,
|
|
blendAmount: MODEL_COLOR_BLEND_AMOUNT,
|
|
visualCenterNative: visualCenterForModel(url),
|
|
trailAnchorNative: trailAnchorForModel(url),
|
|
};
|
|
}
|