068 · 幾何

solid

立方体と八面体の頂点を回転行列で回し、透視投影で 2D に落として、面を画家のアルゴリズムで奥から塗る。CanvasRenderingContext2Dfillstroke だけで立体に見える。

各面の法線と光の向きの内積を明るさにして、sky 単色 LUT に通す。光は左上・手前に固定なので、そちらを向いた面が明るく、裏へ回った面が暗く沈む。面を zc(頂点の z 平均)でソートして奥から描くと、手前の面が後から上書きして隠面消去になる。凸な立体ならこれだけで前後関係が正しく出る。

立体は三つとも別の軸・別の速度で自転する。透視投影の focal / (camZ + z) で、手前に来た頂点ほど大きく、奥はすぼまる。camZ を小さくすると遠近が強まり、立体が誇張されて膨らむ。