3DCGでよく使われている同次座標系の同次の意味について気になったので、調べてなんとなくまとめた記事です。著者は数学をちゃんと学んでいない人間なのであまり言葉遣いが正確ではないかもしれないのでご留意ください。
同次座標系(Homogeneous Coordinate)への疑問
位置座標に対してもう一つ次元を増やしてにしたり、方向ベクトルだったらにするとかで、3次元の座標に対してもう一つ値を追加して4次元の座標を使うことはCGプログラミングをしている人ならおなじみだと思います。こうして作られた4次元の座標系というのを同次座標系と呼びます。詳しい定義は後述しますが、こうした次元を増やすと平行移動といった変換をまとめて1つの行列式の計算としてあらわすことができたり(Affine変換)、位置ベクトルと方向ベクトルの区別をつけれたりと何かと便利な座標系です。
私は精々そうゆう便利な座標系があるんだなーという適当な認識でいたのですが、最近に同次座標系の英訳が「Homogeneous Coordinate」というのを知りふと疑問が浮かびました。Homogeneousといえば一様媒質とかで出てくるように「均一」「同種」といった「同じ種類のもので構成されていること」を指すイメージだったのですが*1、なんだかあんまり関係性がなさそうな感じの名前しているなと思いました(明らかに数学用語なので一般的な意味で考えるのは良くないと思いますが)。
そういう経緯で同次座標系という名前にある「同次(Homogeneous)」ってどういう意味でつけられているのかちょっと調べてみました。
数学におけるHomogeneousとは
"Homogeneous math"で検索してみたところどうやらHomogeneousは多項式において使われるもので、全ての項の次数が等しいことを示す言葉のようです。例えば、
のような多項式があった時、すべての項の次数は等しく2であるため、この多項式はHomogeneous Polynomialであるといいます。一方で次数が合わない場合というのはこんな感じの式です。
全部の項が同じという所は確かにHomogeneousという言葉が使われるのは納得です。日本語ではHomogeneous Polynomialは斉次多項式、または同次多項式という名称が使われており、斉という漢字が揃えることを意味するので「斉次」も「同次」も次数が同じということを表す言葉としては適切と感じます。以後、ここでは同次座標系の名称に合わせて同次多項式と呼びます*2
同次多項式の性質として、個の変数である多項式がが次の斉次性を持つとき、0でない実数に対して以下の性質を持ちます。
先ほどの同次多項式でを使って調べてみると、確かにこれは成立します。
一方で同次でない多項式では(1)の式を満たすことができません。項の次数が合わないとどうにも係数を括り出せないためですね。
このような形で多項式に対してHomogeneousという性質が考えられています。また、これを関数に拡張して、ある関数がベクトルと0ではないスカラーについて
という性質を持つとき、この関数をHomogeneous Function(斉次関数、同次関数)と呼びます。ここまでくるとなんだか同次という意味もちょっと分かりづらい感じになってきます。
同次化 Homogenization
同次座標系に関わる操作としてHomogenization (同次化)があります。変数の非同次多項式があり、その多項式の最大次数がとする時、もう一つ変数を導入した同次多項式を以下のように作ることができます。
このような新しい同次多項式を作る操作のことを同次化と呼びます。例えば3変数の非同次多項式
に対して(2)式をもとに同次化を行ってみると、最大次数は最初の項の3なので
という形で得ることができます。得られた多項式を見てみるとちゃんと各項の次数が同じであり、同次多項式になっていることがわかります。
同次座標系(Homogeneous Coordinate)
以上でHomogeneousについての話をしたので、次は同次座標系がそれとどんな関係があるか見ていきます。まずは同次座標系そのものの定義を確認していこうと思います。
ある次元デカルト座標系に対してもう一つスカラーを加えて次元座標系を考えます。この時、次元座標と次元座標を次のような対応付けを行います
こうして作られた次元座標系を同次座標系と呼びます。同次座標系ではたとえ座標に対してスカラー倍してとしても、指し示すデカルト座標は変化しません。
そのため、同次座標系では座標のスカラー倍は同じものとみなし、デカルト座標の点は同次座標系では原点を通る直線に対応することになります。
それで今回の話はこれの何がHomogeneousなのかってことです。いったん話を簡単にするため、2次元デカルト座標に対して3次元の同次座標系を考えることにします。
平面上で何らかの多項式で表される曲線をと置き、多項式は非同次であるとしておきます。ここで、非同次多項式は一つ変数を増やすと同次多項式が得られる同次化を思い出し、同次座標系で追加されるを使って同次化を試みます。
の最高次数はとしておいて、を使うとは次のような同次多項式を得ることができます。
ここで同次座標系の定義と見比べると、は同次座標系のと見なすことができるため、次のように同次座標を用いて
と得られます。は条件式として与えられていたわけですから、こうして得られた同次多項式も同様に同次座標系上での条件式となります。
このことから、同次座標系はデカルト座標上の曲線を同次化して変換した同次多項式が存在する座標系であるということがわかります。
また、同次座標はスカラー倍しても変わらないものとして扱うことを考えると、座標をスカラー倍したとしても曲面(3次元なら)を表す条件式はスカラー倍に対して同じ条件を保つ必要があります。つまり、非0のスカラーに対して
という式が成立しないと同次座標系では曲面を表現できません。これは関数が同次関数である場合、この性質を満たすことができます。(証明してないですが多分非同次だとだめだと思います)
こうしたことを見ると、同次座標系は同次性というもので作られていることがわかります。そもそも「同次」自体がスケーリングに対してあんまり変化しない性質的な感じで扱われているのを見ると、同次座標系の性質だけ見ても関係性がなんとなく見えてくる感じがあります。
おわりに
なんとなくで始めた調査でしたが、予想に反してなかなか同次座標系ってものが数学的に深めな感じで調べてると射影幾何とかにつながってくるので面白いなと思いました。3DCGを触っていてここまで意識したことがないのを考えると、上辺だけをなぞっていたんだなという感じになりました。
正直難しかったので本当に書いてあることが正しいのかわかんなくなってきましたけど、雰囲気はとりあえずつかめる感じにはなったかなと思います。適当な感じになったので、ちゃんと数学を学びたいですね・・・(幾何学とか)
参考文献
Homogeneous polynomial - Wikipedia