地図/幾何/立体を回す

面の向き — 法線

面を塗る前に、その面がどちらを向いているかを知る。面の上の二本の辺ベクトルの外積が、面に垂直なベクトル=法線になる。法線が画面の手前を向いていればその面は見えていて、奥を向いていれば裏面で、隠れて見えない。

三角形(または平面な多角形)の法線は、辺ベクトル二本 u, v の外積 u × v で求まる。外積は両方に垂直なベクトルで、長さは二本が張る平行四辺形の面積、向きは右手系で決まる。頂点を反時計回り(CCW)に並べておくと、外積が面の外向きを指す。視線方向 view との内積 n · view の符号で表裏が分かり、奥を向いた面を描かないのが背面除去(バックフェイスカリング)。閉じた凸多面体なら、背面除去だけで隠面消去の半分が済む——裏面は必ず表面に隠れるので、消しても絵は変わらず、描く面の数が半分になる。

立方体の六面それぞれで法線を外積から求め、面の中心から法線方向へ短い棒を伸ばして可視化する。手前を向いた面(法線の奥行き成分がカメラ向き)は濃く、奥を向いた裏面は薄い。

外積の三行 nx/ny/nz が法線で、面の頂点 a → ba → 三つ目 の二辺から垂直方向を出す。nz < 0 でカメラ(手前、−z 方向)を向いた面と判定し、濃い棒で描く。裏を向いた面の棒は淡い。回すと、手前の三面の法線が立ち、裏の三面が寝ては入れ替わる。nz < 0 の面だけ描けば、立方体では常に三面が見えて三面が隠れる勘定になる。