線形代数とコンピュータグラフィックス

線形代数は、コンピュータグラフィックス(CG)の基礎を支える数学分野です。特に、ベクトル・行列の操作が、画像処理・3Dモデルの描画・アニメーション・光のシミュレーションなど、多くの場面で利用されます。以下に主要な関係を整理します。


1. ベクトルと空間表現

  • 位置ベクトル:3次元空間の点は (x,y,z)(x, y, z) で表され、ベクトルとして扱います。

  • 方向ベクトル:移動や速度、光の進行方向などを表現するのに用いられます。

  • 内積:2つのベクトルの角度や投影を計算するために利用され、照明計算や陰影表現に応用されます。

  • 外積:法線ベクトル(面に垂直な方向)の計算に用いられ、陰影や反射計算に不可欠です。


2. 行列による変換

コンピュータグラフィックスでは、物体の位置や形を変更するために 線形変換 が頻繁に使われます。これらは行列で表現されます。

  • 平行移動:同次座標系を用いることで、行列演算として扱えます。

  • 回転変換:回転行列により、物体を任意の軸で回転させられます。

  • 拡大縮小:スケーリング行列により、モデルの大きさを変えられます。

  • 射影変換:3次元の点を2次元スクリーンに投影する処理で、カメラ視点の表現に必須です。


3. 同次座標系

通常の3次元座標 (x,y,z)(x, y, z) に対して 同次座標 (x,y,z,1)(x, y, z, 1) を用いると、平行移動を含めたすべてのアフィン変換を 行列の掛け算で統一的に表現できます。これにより、複雑な変換を簡潔に計算でき、GPU処理にも適しています。


4. コンピュータグラフィックスでの応用

  1. レンダリング
    行列を用いて物体をモデル座標系からワールド座標、カメラ座標、スクリーン座標へと変換する。これを「座標変換のパイプライン」と呼ぶ。

  2. ライティング(照明計算)
    内積を使って光の入射角と表面の法線ベクトルの関係を求め、明るさや陰影を計算する。

  3. 3Dモデリングとアニメーション
    行列を組み合わせて、物体の動きや形状の変化を制御する。

  4. 投影と視覚化
    射影行列を用いることで、遠近感のある透視投影や平行投影を実現する。


5. 実践例(行列を使った変換)

例えば、3D空間の点 (x,y,z)(x, y, z)zz 軸周りに角度 θ\theta だけ回転させるには、以下の回転行列を用います。

Rz(θ)=[cosθsinθ0sinθcosθ0001]R_z(\theta) = \begin{bmatrix} \cos \theta & -\sin \theta & 0 \\ \sin \theta & \cos \theta & 0 \\ 0 & 0 & 1 \end{bmatrix}

この行列を点ベクトルに掛けることで、新しい座標が得られます。


まとめ

線形代数は、コンピュータグラフィックスのあらゆる場面で中核を担う数学です。特に ベクトル・行列・同次座標・線形変換 の概念は、3Dモデルの変換、レンダリング、アニメーション、照明などに直結しており、CGを理解するための必須知識となります。


ご希望があれば、次は 「レンダリングパイプラインにおける行列操作の具体例」 を数式と図解を交えて説明しましょうか?

ChatGPT5 生成日:2025/09/17