3D レース
曲がって上下する周回コースを、CPU カー 3 台と 3 周で競います。3D はライブラリを使わず自分で書きました——g78 の投影に、車の向きで回るカメラ、視点をまたぐ多角形を切るニアクリッピング、曲線から作る道の帯を足しています。音を出してお使いください。
LAP 1/3 ・ 0:00.00 ・ 前のラップ --.--
4 位 ・ 0 km/h ・ 1 速
ベスト --:--.-- ・ – コマ/秒
やること:「スタート」で 3・2・1 のあと出走。← → で曲がり、▲ でアクセル、▼ でブレーキ(w a s d でも)。CPU カー 3 台と 3 周を競い、順位とタイムを出します。
- 速いほど曲がりにくい。カーブの前にブレーキ。道の外(草)に出ると大きく減速します。
- CPU カーにぶつかると減速して押し出されます。壁はありません。
- 3 周のタイムと最速ラップのベストがこのブラウザに残ります。
- エンジン音は 0.5 秒の輪を Python で作り、速さで再生の速さを変えています(ギアが上がると下がる)。端末版には無い、ブラウザだけの音です。
カメラを回す:車の向き(yaw)で世界を回す
ニアクリッピング:視点をまたぐ多角形を NEAR で切る
曲線からメッシュ:Catmull-Rom → 断面 → 道の帯
坂:道の高さを補間して車を乗せる
Python を読み込んでいます… (初回は数秒かかります)
このページは Python のコードがブラウザの中でそのまま動いています(PyScript)。 コース・車の動き・CPU カー・カメラ・投影・面を塗る処理は CLI 版と 1 文字も違いません。 端末は 128 × 80 ドットを ▀ の並びで、ここでは同じ式を 3 倍の板(384 × 240)で回して canvas に出しています。