FC2ブログ

La.系ぶろぐ

個人的いろいろメモ。シャープペンのメモにちょっぴりゲ○ツの悪口が混じってるただのチラ裏。

4点で始める幾何学?

んー、pythonネタなのでqiitaで書こうかと思ったけど、
ソース成形する前に共有とな?ってなりそうだからこっちで。

幾何学基礎論を読んでると、「少なくとも2点が~」とか「少なくとも3点が~」とか出てくるのですが、
その辺を読んでると、「じゃー、最低点はいくつあるんだよ!」って気分になるわけです。
まー、1点では幾何は成立しない。
てか、2点でも成立しないよねーとか、
3点だと、間の関係が発生するけど、なんかそれ以上の性質は出てこないような気がする。

さて、4点あると、点と点を結んで、その直線同士で交点を作ることが出来ます。
この時、平行四辺形だと、中心に交点を一つ作っておしまい。
でも、平行線を持たない4点なら、組み合わせで3点を作成できます。
で、ここで問題になるのですが、この点はどれくらい増殖できるでしょうか?
・どれくらい増える?無限?有限?(平行四辺形みたいに止まってしまう?)
・どれくらいの範囲に広がる?

えっと、例えば上では出しませんでしたが、平行四辺形以外にも、初期状態で台形の場合があって、
その場合は3点は生成できない、(2点になります)ただ、そのまま、そこから交点を生成し続けることが出来ます。

でも、平行線が出ない状態を作れるなら、適当な(凸四辺形の)4点を選んで、外側に点を作成できます。
だから、おそらくは……無限に広げていくことが出来る気はします。

では、平行線が出てくる場合は、これだけなのか?
初期状態を適当に取ったら、あとは平行線出てこないんじゃない?と思ったのですが、ちょっと考えると実は線対称な形状(菱形を少し下に伸ばしたような、凧型、って言うんでしょうか……)でも、初期状態では平行線がありませんが、交点を結んで平行線が生成できます。

さすがにその辺で打ち止めかなーと思って、プログラム組んで(今時は簡単にこういうテストが出来ますよね~)試してみました。
初期状態の内、3点は、おそらくアフィン変換で(0,0)(1,0)(0,1)に移動できてしまうので、最後の点をどうするか、って問題に出来ると思います。(あんまりまじめに証明してないですが)

で、最後の点が凸四辺形になるか、凹四辺形になるか、で微妙に差がありそうな気がしますが、基本的には点の生成には差が無さそうです。(領域分割は変わるのですが、交点数はやはり3つをとるので)

とまあ、そんな感じで、適当に値を入れてやってみたのですが、(実際試したのは(0,0)(100,0)(0,100)(13,17)だったりします)なんか普通に値を入れると途中で平行線が出てくるんですよね……プログラムだから良いけど、作図してたら死ぬって、って感じで。

で、ふと思ったのですが、これ、平行線が発生する条件ってどうなるんでしょうね……?
さすがに、任意の4点で、定規一枚で平行線が確実に引けるって話にはならないと思うのですが、
(例えば、座標が超越数ならさすがに平行線出ないだろうな……とか)
意外と根気よく線を引き続ければ、出てきてしまうものなのか。

ただ、プログラムをPythonで組んでたのですが、(ちょうど良く有理数のパッケージ(SymPy)があったので使ったのですが、
これが幸運だったらしくて、普通にfloatも試してみたら誤差はすごいわ遅いわで大変でした;)
点の数は爆発的に増えるので(初期状態が4、3増えて7、次は13、その次は97で、この辺からかなりしんどいです。ちなみにさっきの例で平行線が出るのは、この97の点の組み合わせで、になります。作図してらんねー)点がどれくらい平面を埋めてくれるのかを見るのはかなり厳しいです。

C++に移植を考えるべきかなー。
というか、少しは計算で考察しろって話ですよねー……。

スポンサーサイト



PageTop

コメント


管理者にだけ表示を許可する