4次元プログラミング!? xyzに次ぐ4番目の要素『w』の存在意義とは by ta_ka_tsu

iOSDC Japan 2022
レギュラートーク(20分)

4次元プログラミング!? xyzに次ぐ4番目の要素『w』の存在意義とは

ta_ka_tsu ta_ka_tsu ta_ka_tsu
2

我々は平面の座標を表すのに数字のペアx,yを使い、3次元プログラミングでは空間の座標を表現するためにさらに座標の要素を追加してx,y,zの3つ組みを使います。
ではsimd_float4、SCNVector4などに存在する4つめの要素wは何なのでしょう?
まさか4次元空間を扱うためのものなのでしょうか?

これらはただの4つ組のデータに過ぎないため何の情報を格納するかは自由です。
アルファ値を含んだRGBAの色情報を格納してもいいですし、回転軸の方向をx,y,zに格納し、回転角度をwに格納しても良いでしょう。実際SceneKitではそのように使用する場面もあります。

しかしこの4つ目の要素、ちゃんと3次元プログラミングにおいて図形的に重要な意味があるのです。
2次元を扱う場合にも実は同様に3つ組の数字を使うことがあります。
冗長に思える要素を追加することで何が便利になるのかを解説します。