fix(satellites): prevent selecting satellites on far side of earth

- Add isSatelliteFrontFacing() to detect if satellite is on visible side
- Filter satellites in hover and click handlers by front-facing check
- Apply same logic as cables for consistent back-face culling
This commit is contained in:
linkong
2026-03-24 10:44:06 +08:00
parent 543fe35fbb
commit b9fbacade7
2 changed files with 27 additions and 7 deletions

View File

@@ -415,6 +415,20 @@ export function getSatellitePositions() {
return satellitePositions;
}
export function isSatelliteFrontFacing(index, camera) {
if (!earthObjRef || !camera) return true;
const positions = satellitePositions;
if (!positions || !positions[index]) return true;
const satPos = positions[index].current;
if (!satPos) return true;
const toCamera = new THREE.Vector3().subVectors(camera.position, earthObjRef.position).normalize();
const toSat = new THREE.Vector3().subVectors(satPos, earthObjRef.position).normalize();
return toCamera.dot(toSat) < 0;
}
let earthObjRef = null;
let sceneRef = null;