Files
Quintine 8c19cdaae6 3D flight simulator: 6-DOF physics, three.js r160, browser HUD
- Detailed flight dynamics: aero lift/drag/side-force with smooth stall,
  control-surface moments, stability derivatives, engine spool with prop
  torque and gyro precession, inertial coupling, ISA atmosphere, ground
  effect, 3-point gear handling, landing vs crash classification.
- Pure ESM, zero build step; three.js vendored locally. Deterministic
  simulation; physics core is Node-testable (14 node:test cases).
- Procedural 8 km world with runway, water, sky dome, cloud wrap; DOM
  instrument panel (attitude indicator, tapes, VSI, lamps, stall warning).
- Controls: WASD/arrows, Q/E rudder, Shift/Ctrl throttle, F flaps, G gear,
  B brakes, C camera (chase/cockpit/orbit), R reset, P pause, D debug.
2026-08-24 17:58:58 +10:00

48 lines
1.8 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Flight Sim</title>
<link rel="icon" href="data:,">
<link rel="stylesheet" href="./css/style.css">
</head>
<body>
<canvas id="sim" tabindex="0"></canvas>
<div id="hud"></div>
<div id="start-overlay" role="button" aria-label="Start flight simulator">
<div class="start-card">
<h1 class="start-title">FLIGHT&#8202;SIM</h1>
<p class="start-sub">A deterministic 6-DOF prop aircraft over a procedural world. No assets, no network — raw Three.js.</p>
<table class="start-controls">
<thead>
<tr><th>Key</th><th>Command</th></tr>
</thead>
<tbody>
<tr><td>W / S</td><td>Elevator — pitch up / down</td></tr>
<tr><td>A / D</td><td>Aileron — bank left / right</td></tr>
<tr><td>↑ / ↓</td><td>Elevator (arrow keys)</td></tr>
<tr><td>← / →</td><td>Aileron (arrow keys)</td></tr>
<tr><td>Q / E</td><td>Rudder — yaw left / right</td></tr>
<tr><td>Shift / Ctrl</td><td>Throttle up / down</td></tr>
<tr><td>F</td><td>Flaps 0 → 25% → 50% → 100%</td></tr>
<tr><td>G</td><td>Gear up / down</td></tr>
<tr><td>B</td><td>Brakes on / off</td></tr>
<tr><td>C</td><td>Camera view</td></tr>
<tr><td>R</td><td>Reset flight</td></tr>
<tr><td>P</td><td>Pause</td></tr>
<tr><td>D</td><td>Debug overlay</td></tr>
<tr><td>S / Enter</td><td>Sound on / off</td></tr>
</tbody>
</table>
<button type="button" id="start-btn">CLICK TO START</button>
</div>
</div>
<script type="module" src="./src/main.js"></script>
</body>
</html>