三角形の表現: 3つの異なる色(赤、緑、青)の半透明三角形を空間内に配置 各三角形は3つの頂点座標によって定義 三角形の重心を計算して深度ソートに使用
優先順位法(Painter's Algorithm): 三角形を視点からの距離(深度)でソート 遠いものから順に描画することで、近いものが遠いものを覆い隠す効果を実現 各三角形の重心を使用して深度を計算
視点変更のマウス操作: マウスのドラッグで視点方向(カメラの回転)を変更可能 X軸とY軸の両方の回転に対応 マウスホイールでズームイン/ズームアウト可能
3D→2D投影: 透視投影により3D座標を2Dキャンバス座標に変換 カメラ回転行列を使用して視点の変更を実現 深度情報を保持してソートに使用
このコードは単純なソフトウェアレンダリングを使用していますが、実際の3Dグラフィックスのコア概念である「投影」と「隠れ面消去」の基本原理を示しています。マウスをドラッグすることで、三角形の配置や重なり方の変化を観察できます。 注意点:Painter's Algorithmはシンプルですが、三角形が複雑に交差する場合には正確に動作しない場合があります。実際の3Dグラフィックスではより洗練されたZ-bufferなどの手法が使われます。