見出し画像

cindy.jsと複素同次座標

シンデレラでは、各点と各線は複素同次座標で表されます。つまり、どんな点でも線でも、数学カーネルの内部では6次元(!)の表現を持っているのです。これはクレイジーに聞こえるかもしれませんが、最も自然なことなのです。


インタラクティブな幾何学を行うシステムは、ユーザーとの対話の中でどのように振る舞うべきでしょうか。ある意味では、他のプログラムに対する要求と似ています。
プログラムは使いやすいものでなければならない。
プログラムが使いやすいこと。プログラムの不自然な動作によってユーザーが混乱しないこと。
不必要な入力をさせられてユーザーを苦しめてはならない。
計算された結果が正しいこと。
残念ながら、このような条件のもとでは、対話型幾何学は難しいテーマであることがわかります。その理由は主に2つあります。
・静的な設定でも発生する特殊なケースに起因する問題がある。
・真にダイナミックな性質を持つ問題がある。

Cinderellaは、同時に依存する要素の矛盾を防ぐことができる理論に基づいた最初のシステムです。この理論は、静的幾何学の問題を解決するために使われていた複素数の概念に基づいています。

Cinderellaはすべての特殊なケースを扱うことができ、さらにユークリッド幾何学だけでなく非ユークリッド幾何学も扱うことができるのです。驚くべきことに、これらの一般的な原則を用いても、プログラムが複雑になることはありません。それどころか、特殊なケースを除外することで、よりシンプルでわかりやすいプログラム構造になります。
Cinderellaは、同時に依存する要素の矛盾を防ぐことができる理論に基づいた最初のシステムです。この理論は、静的幾何学の問題を解決するために使われていた複素数の概念に基づいています。

射影幾何学では、平行線を特別なものとして考える必要はありません平行線には交点があり、それがたまたま無限大にあるだけなのです。射影幾何学の入門書としては、H.S.M.コクセターの著書[Cox49]、[Cox63]を参照してください。


コンピュータには、残念ながらプリミティブなデータ型としての幾何学的なオブジェクトは存在しません

点や線は、座標という数字で表す必要があります。通常、平面上の点は(x, y)座標で表されます。線は、定義方程式ax + by + c = 0の3つのパラメータ(a, b, c)で与えることができます。しかし、射影幾何学を行いたい場合、これは現実的ではありません。座標(x,y)のペアはそれぞれ有限の点を表し、無限の点を表すものはありません。この問題を解決する方法は、19世紀の前半に徐々に明らかになってきました。それは、メビウスの偏心座標に始まり、プルーカーによる同次座標の洗練された設定を経て、グラスマンの多項式代数の設定へとつながっていきます。
It started with Möbius's barycentric coordinates, via the refined setup of homogeneous coordinates given by Plücker, and finally led to Grassmann's setup of multilinear algebra.

https://en.wikipedia.org/wiki/Julius_Pl%C3%BCcker


同次座標(Homogeneous coordinates)は、アフィン変換や一般的な射影変換を行列で簡単に表現することができるため、コンピュータグラフィックスや3Dコンピュータビジョンなど、さまざまな分野で応用されています。

Cinderellaの「移動」モードでマウスをある位置から別の位置にドラッグしている間に何が起こるか、おおよその説明をします。ある点をAの位置からBの位置に移動させているとき。
Cinderellaは、すべての縮退を避けるように、AからBへの複素空間の経路を生成します。
従属する要素は、複素数空間をたどっていきます。
パスの中間ステップの数は、必要な精度に応じて調整されます。
Cinderellaでは、適応的なステップ幅のアルゴリズムを使ってトレースします。構成要素をドラッグしている間、マウスポインタは「現実の画面」から離れ、複雑な空間を歩いていることを想像してください。

複素同次座標(Complex Homogeneous Coordinates)とは、複素数を用いた同次座標系のことを指します。これは、特に射影幾何学やコンピュータグラフィックスなどで用いられ、座標変換や幾何学的操作を扱う際に便利です。

同次座標とは

同次座標系(Homogeneous Coordinates)は、任意の点を1つのスカラー因子によって表現する方法です。例えば、通常の2次元座標系では点 ((x, y)) を用いて表しますが、同次座標系では ((x, y, w)) という形で表します。ここで、(w) はスカラー因子で、通常の座標に戻すには次のようにします:
[ (x, y) = \left( \frac{x}{w}, \frac{y}{w} \right) ]

複素同次座標

複素同次座標は、これを複素数に拡張したものです。2次元の複素同次座標系では、点 ((x, y)) を複素同次座標系で表現すると ((x, y, w)) となりますが、(x)、(y)、(w) が複素数になります。

例えば、複素同次座標系での点は次のように表せます:
[ (x, y, w) = (a + bi, c + di, e + fi) ]
ここで、(a)、(b)、(c)、(d)、(e)、(f) は実数で、(i) は虚数単位です。

利点と用途

複素同次座標の利点は、射影変換を容易に扱えることです。射影変換とは、幾何学的な変換の一種で、遠近法やカメラの視点変換をモデル化する際に使われます。これにより、3次元のシーンを2次元の画像として描写することができます。

具体的な用途としては以下が挙げられます:

  1. コンピュータグラフィックス:3Dレンダリングや画像処理の際に複素同次座標を用いることで、視点変換や光源の位置計算が簡単になります。

  2. 射影幾何学:点と直線の交点や、平行線が無限遠点で交わる性質を数学的に扱うことができます。

  3. ロボティクス:ロボットの視覚システムにおいて、カメラの視点変換や物体認識に利用されます。

複素同次座標は数学的には複雑ですが、その利便性から広く利用されています。特に、コンピュータグラフィックスや視覚システムの分野で重要なツールとなっています。

お願い致します