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.
This commit is contained in:
commit
8c19cdaae6
18 files changed
+4499
No files matched your search
+48
@@ -0,0 +1,48 @@
|
||||
<!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 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>
|
||||
Reference in new issue
Block a user