見出し画像

🎶対話型幾何学は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では、適応的なステップ幅のアルゴリズムを使ってトレースします。構成要素をドラッグしている間、マウスポインタは「現実の画面」から離れ、複雑な空間を歩いていることを想像してください。


お願い致します