ブログ「サイバー少年」

ブログ「サイバー少年」へようこそ!
小学六年生ごろからプログラミングを趣味にしている高校生のブログです。
勉強したことについての記事などを書いています。フリーソフトも制作、公開しています。
(当ブログについて詳しくは「ブログ概要紹介」を参照)

サイバー少年が作ったフリーソフトは「サイバー少年の作品展示場」へ

円の軌道に関する考察

最近ブログの勢いがないので、景気付けに数学ネタを投入します。

今回は円について考察してみたので、それを書きます。
この記事は地味に執筆に4日間かかった大作です。

そして、私がこれから述べる理論があまりにも理論的でないため、最後には正しいかどうかを検証するためにコンピュータグラフィックスを用います。

コンピュータってのは便利ですね。


ではまず、単位円の図をご覧ください。

単位円と3つの点
単位円と3つの点

書き入れるのを忘れましたが、円の中心点を点Oとします。
また、点Oからの角度は時計回りで、度数法を使います。

点Aは点Oから0°のところに、点Bは点Oから45°のところに、点Cは点Oから90°のところにある、それぞれ円周上の点です。

まあ、これだけでは単に円周上に3つの点があるだけですが、今回は物理学的な考えも取り入れると言っているので、
ある点がAからBへ、そしてCへと移動して、その軌道が円を作っていると考えましょう。


このとき、点Aから点Bへ移動した際の直線距離と、点Bから点Cへ移動した際の直線距離は同じだということは、すぐわかります。

なぜなら、点Oと上記の点の組で三角形を作ると、どちらも45°の角を長さがそれぞれ1の辺で挟んでおり、合同です。

この角を挟んでいない辺が、点が移動した際の直線距離とみなせるわけですが、三角形が合同であるため同じになるというわけです。





ではその移動を、横方向への移動と縦方向への移動に分解してみるとどうなるでしょうか。

それを計算するために、とりあえず3つの点の座標を出してみます。

点Aが(0, 1)、点Cが(1, 0)なのはいいとして、点Bは(sin 45, cos 45)、つまりB(1/√2, 1/√2)です。

そして、これを引き算して縦方向への移動量と横方向への移動量を計算します。

ベクトルの引き算というのでしょうか…ベクトルについてよくわかっていれば、もっと簡潔に整理できる問題かもしれません。


ズバリ、
点Aから点Bへの移動量は(1/√2, 1/√2 - 1)
点Bから点Cへの移動量は(1 - 1/√2, -1/√2)
ですね。

近似値で書くと、前者は(0.7, -0.3)、後者は(0.3, -0.7)なので、ようするに直線距離は同じでも、縦横の移動量は全然違うということになります。

上の値だと(x, y)、(-y, -x)みたいに綺麗にひっくり返っているので面白いですが、たぶん上記の例が特殊だっただけだと思います。

重要なのは、同じ角度だけ動いてるし、直線距離の移動量は同じでも、縦横の移動量は場所によって異なるということですね。


今やった横方向と縦方向への移動量を一般化すると、

(sin Y - sin X, cos Y - cos X)

となりますね。単位円じゃないなら半径を掛け算します。



さて、ここからが本題です。先ほど貼った図を

さっきの図
さっきの図

全体まるごと反時計回りに45°回転してみます。


-45°回転した図
-45°回転した図


こうなります。

ここで、赤線をY軸とした直交座標を考えてみてください。

このとき、点Bから点Cへ移動する際の、横方向と縦方向への移動量はどうなるでしょうか。


…はい、1枚目の図における点Aから点Bへの移動量と同じになります。

理由は簡単ですね。
同じ中心角だけ開いている2点なんですから、点B,点Cの組は絶対に点A,点Bの組があったところに重なります。

そして、赤線がY軸だということは、位置関係は1枚目の図と全く同じで、点Aが点Bに、点Bが点Cに変わっただけです。

これはもっと一般的にいえます。
同じ中心角をなす、円周上の点の組が2組以上あれば、回転移動により必ず重ねることができます。

そして、一番重要なのは、座標軸の取り方を変えてやれば、点が点へ移動する際の、横方向と縦方向への移動量は同じ数値にすることができるというわけです。


具体的にいえば、円周上で円の中心点Oから0°のところにある点から、中心点Oから∠θのところにある点へ移動する際の移動量を(x, y)とするなら、

円周上で点Oから任意の∠Aのところにある点から、点Oから∠(A+θ)のところにある点へ移動する際の移動量も同じく(x, y)です。

ただし後者は、∠Aのところにある点と点Oを結ぶ線分がY軸と重なるようなY軸の取り方をした場合ということです。



座標の取り方を変えたら当たり前だろうと言われるかもしれませんが、私が強調したいのはそういうことではなく、

円周上のどこをとっても移動量は同じなんですから、もし角度を極限まで小さくすると、点についての移動量みたいなものを考えることができて、それは全て同じ移動量です。

移動量が同じなんですから、円周上の全ての点が持っている向きというか(曖昧な感じでしか述べられませんが)、そういうものは全ての点で同じだろうと思うということなのです。

ですから、座標の取り方がどうこうというのは、座標で語るからそうなってしまうだけで、本来あまり注目するところではなくて、

あるひとつの点が(x, y)だけ移動して、その移動したあとの向きを基準にまた(x, y)だけ移動してというのを繰り返すと、軌道で円が描けるんじゃないでしょうか。

いや、(x, y)が大きいなら正多角形になるだけでしょうが、xとyを極限まで小さくして、無限の移動を行えば完全な円になると思うわけです。


今、向きという言葉が出ましたので、直交座標ではなく極座標で扱ったほうがいいですね。

実を言うと、この記事を書くときに最初は極座標が思い浮かんだのですが、説明が下手なので最初は直交座標で語らなければなってしまいました。

では、このような点が進んで向きを変えてまた進んで…という問題は極座標のほうが楽だということを示しますので、下図をご覧ください。


点の移動イメージ
点の移動イメージ

この図のようにあるひとつの点が赤い場所から緑の場所へ、そして青の場所へ移動するとします。


今までのような直交座標の考え方では、最初は左の灰色の線がY軸と並行な座標系だとして、
まず点が赤い場所から横方向(X軸)にX1、縦方向(Y軸)にY1だけ進むことで緑色の場所へ行ったら、そこで一度、座標の取り方を変えます。

具体的には、点が赤い場所から緑の場所へ進んだ軌道がY軸と並行になるような直交座標を取り直します。

そしてその座標系において緑の場所にある点を、横方向にX2、縦方向にY2だけ進むことで青い場所に到着するという話になります。

このように座標を取り直す作業が発生するので、無駄に難しくなってしまいます。



しかし先ほども言いましたが、座標がどうというのは今回、大事な問題ではないので座標を取り直すという作業を無くしたいわけです。

そこで、極座標を使うと、そういった概念を無視することができます。


極座標的に考えれば、最初の点は赤い場所で0°(画像の上方向)を向いているとして、
まず時計回りにθ1だけ回転して緑色の場所まで進み、
そして、さらに時計回りにθ2だけ回転して青色の場所まで進むといい表せます。

これだけです。

なんというか極座標を使うと、座標の取り直しがいらないと言いましたが、
そうじゃなくて、そもそも座標という話がでてこなくなるような考え方、移動している点基準の測り方ができるようになると、そういったほうがいいかもしれません。


いや、極座標を使った場合でも絶対座標で考えれば、始線を取り直している、すなわち座標を取り直してはいるのですが、
相対座標の極座標を使うと、点が向きを持っていて、繰り返し回転するという話の中に収めることができるので、簡単になるわけです。

曖昧な話ですみません、自分でも何を言ってるのかわからなくなってきました(笑)


というわけで、先ほどの理論を極座標に変えて整理し直すと、

あるひとつの点が極限まで小さな角度だけ回転して、極限まで小さな距離だけ進んで、また極限まで小さな角度だけ回転して…というのを繰り返せば、その軌道は円を描くのではないかということです。

しかし、ここで疑問が生まれます。



私は、直交座標でxとyを極限なまで小さくすると言いましたが、そうすると確かに極座標に変換したら距離は極限まで小さくなります。

しかし、角度も極限まで小さくなりますでしょうか。


すごく難しくなってきましたね…。

極限についてちゃんと知っているわけではないので、すごくメチャメチャな理論を展開しているかもしれません。


つまり、xとyが0に収束するなら、atan x/yは0°に収束するのか、90°に収束するのか、はたまたその中間に収束するのかということです。

x/yが0に収束すれば角度は0°に収束し、無限に発散すれば90°に収束し、x/yが普通の比に収束すれば、角度もその中間に収束しますね。


一体、角度はどのような値をとるのか、考えると頭の中でパラドックスが発生してしまいました。

ふたたび記事冒頭の図を貼りますが、

最初の図
最初の図

点Aから無限に小さい角度だけ動いたところにある円周上の点を点A'として、点A'の点Aからの移動量を(x, y)とします。

すると、xとyは共に極限まで小さくなります。
また、予想ではこの移動量(x, y)で、前述のように点を無限に移動させると、上図の円を描きます。


一方、上図は単位円でしたが、1じゃない半径rを持つ別の円を想像してみてください。

そして単位円のときと同じように、0°のところに点Aがあって、そこから無限に小さい角度だけ動いたところに点A'があるとして、点A'の点Aからの移動量を(x, y)とします。

こちらのxとyも共に極限まで小さいです。
そして、この移動量で点を移動させると、円を描くと予想できますが、先ほどとは違う円を描きます。

それは、円の長さが違うということです。
先ほどは単位円を描きましたが、こちらは半径rの円を描きます。


ようするに、半径を元に移動量の(x, y)を決めているので、その移動量どおりに円を描けば同じ半径の円が復元されるだろうという、当然のことです。

前者の(x, y)と後者の(x, y)は何が違うのかというと、直線距離はxとyが無限に小さいことからどちらも0に収束して、直線距離で差をつけることができませんから、xとyの比が違うのだろうと考えます。

この(x, y)を極座標における移動量(r, θ)に変換すると、rは0に収束します。

そして、θはatan x/yとなります。
まあ、xとyが正なのか負なのかで、調節しなければなりませんが。

もし前者と後者でxとyの比が同じなら、θも同じになります。
前者と後者でxとyの比が異なるなら、θは異なります。

θが同じなら、点を移動させたときの軌道は同じになってしまいますが、θが違えば点が元に戻ってくる早さが違う、つまり円の半径が違ってくると考えれば、

やはり、x/yは普通の数に収束して、それに準じてθも0°と90°の間の何かになり、θの違いが半径を決めるのだろうと思うわけです。

これが、θは0°でも90°でもない値に収束するよ案です。


しかし、それでいくとθは0に収束しないわけですが、するとそもそも円が描けないんじゃないかと思うのです。

感覚的にですが、たとえばθが45°だとして、rは無限に小さい値ですから、
点がほんの少し進んで、45°回転して、ほんの少し進んで…というのを繰り返しても、点は8回動くと元の場所に戻ってきてしまいます。

その軌道を見ても、ほんの少し進むのを8回繰り返しただけですから、本当にほんの少しの線しか作っておらず、ただの点です。


やはり、回転する角度も無限に小さくないといけないんじゃないかと。

無限に小さい距離をいくつ足せばちゃんとした距離になるかって、無限に足すしかないからです。

無限に足すにはどうすればいいかって、回転する角度を無限に小さくすれば、無限回すすまないと元の場所に戻ってきませんので、無限回移動することになります。

これが、θは0°に収束するよ案です。


しかし、もしそう考えると、前述のように描く円の長さの情報をθに持たせることができなくなるため、パラドックスです。



非常に極限というのは手強いですね…。
もう、わけがわからなくなってきたので、この件に関しては保留にします。

このパラドックスは直交座標を極座標に変換しようとしたら起きたものです。

とりあえず直交座標における移動量のxとyが無限に小さいときに、その移動量で点を無限に移動させれば、軌道が円を描くことは確実であると予想します。


ちなみに、xとyが共に普通の数なら、その移動量で点を移動させると軌道は正多角形を描くでしょう。

xとyのどちらかだけが無限に小さいと、無限に長い円が出来るんじゃないでしょうか。
有限の範囲で見ればただの直線です。

極座標形式でいうと前者はrもθも普通の数である状態と同値で、後者はrが0より大きい数に収束して、θが0°に収束している状態と同値です。


rとθが共に無限に小さい状態や、rだけが無限に小さい状態は先ほどのパラドックスになった2パターンです。

これについては、もうよくわかりません。



では、ここからは、コンピュータグラフィックスで上記の理論を検証してみます。

といっても、コンピュータで無限に細かい線を無限回描くことは不可能なので、私の知っている限りの方法では、正多角形を描くことしかできません。

つまり、上記の理論において極限を扱うものに関しては検証不可能です。

というわけで、上記の(x, y)の点の移動量でxとyが普通の数である場合、
すなわち、極座標でいえばθとrが普通の数である場合に、本当に正多角形を描くのかという検証だけしてみます。


プログラミングで絵を描くときに、よくタートルというものがあります。

キャンバスに描画するペンを亀のように扱うということで、その亀には〇〇だけ回転しろという命令と、〇〇だけ進めという命令を与えることができます。

すると亀はそのとおりにキャンバス上を動いて、その軌跡で線を描くという、面白いやり方です。

この亀の動きが、私が今まで言ってきた点が回転して進むというものと全く同じなので、今回はタートルを実装して描画させてみました。

ところで、以下ではドットを長さの単位として使いますが、ドットって長さの単位になるんでしょうかね。


それではまずは、亀に90°回転させて、60ドット進ませるというのを繰り返してみます。

それが下図です。

一辺60ドットの正4角形
一辺60ドットの正4角形

赤い点が実際に亀が踏んだ点で、黒い線は点を線で結んだものです。

まあ普通の、一辺60ドットの正四角形が描けたみたいですね。

つづいて、45°回転させて、30ドット進ませるのを繰り返します。

一辺30ドットの正8角形
一辺30ドットの正8角形

やはり正多角形ですね。

これを細かくしていくと、円に近似していくというのはみなさんも予想できると思います。

では、一気に細かくして、
・12°回転させて、8ドット進ませる
・8°回転させて、4ドット進ませる
の結果を見てみましょう。


一辺8ドットの正30角形
一辺8ドットの正30角形

一辺4ドットの正60角形
一辺4ドットの正60角形


もう、円に見えますね。

というわけで、普通の数のrとθで、点にθ回転させてr進ませるのを繰り返したら、正多角形が描けるということは確実ですね。



このままrとθを極限まで小さくしていくと、完全な円になるんじゃないかと思ってしまいますが、前述のようなパラドックスがあるので、どうなるかはわかりません。

rとθが普通の数なら、描く図形は一辺がrの正(360°/θ)角形で、周の長さはr(360°/θ)ですが、

これをそのまま適用すると、正∞角形になるのはわかるにしても、周の長さについてどう扱えばいいのでしょうか。

θが普通の数だと、周の長さが0に収束してしまうので、やっぱり先ほどのパラドックスはrとθが両方、無限に小さいという案が正しいんですかね…。


そういえば、面倒臭かったので記事に載せるのはやめましたが、θを一定ではなくてだんだんと大きくしていくと、最初はうずまきを描きます。

しかし、うずが中心で落ち着くと、なんと外に点が出てきて、そこでもっと小さなうずまきを描くということを繰り返します。

本当に不思議ですね。
私が今考えている問題の範疇を超えていますが、いろいろ試してみるのも面白いと思います。


というわけで、解決しない問題もありましたが、最後に言っておくのは、
極座標じゃなくて直交座標の(x, y)で点の移動量を考えたときに、xとyを共に極限まで0に近づければ、点の軌道は完全な円を描くと、私はそう考えたということです。

それについて検証することもできませんが…。


あとこんなことを考えるに至った経緯なのですが、実は物理学にヒントをもらったというと大げさですが、
現実に回転と前進を繰り返す物体があったらどうなるだろうなと考えたところから始まりました。

しかし、それを整理するとやはり現実の問題ではなく数学の問題になるので、今回は数学としてそれについて考えてみたということです。


物理学的な話になりますが、もし自転するボールがあってそれが直進しようとしたら、軌道は円になるんじゃないでしょうか。

この理論でいくと、おそらくそうなります。
極座標についての決着がついていないので、わかりませんが。

地球の自転と公転もそんな関係なのかもしれませんね。

今言ったように自転によって公転しているのか、公転が先で、遠心力かなにかで自転しているのか、はたまたなんの関係もないのか…。


というわけで、今回は起死回生の数学ネタでした。

tag: 数学 図形 三角関数 座標 物理学 極限 無限

コメント

Debianが仮想マシンに入らない

仮想マシンがうまくいかないようならば適当なLinuxをHDDにインストールしてWindowsとデュアルブートさせるのがいいかもしれませんね

  • 2015/08/15(土) 17:53:16 |
  • URL |
  • 通りすがり #bBqd/xFc
  • [ 編集 ]

Re: Debianが仮想マシンに入らない

最悪、そうなりますね~。

ただ現実のパソコンでやると、パーティションの設定とか難しいのでハードディスクの中身が消えてしまいそうで、不安なんですよね。
仮想マシンなら基本どんなことでも心配ないので、勉強用にはもってこいなんですが。

コメントの投稿

トラックバック

トラックバック URL
http://cyberboy6.blog.fc2.com/tb.php/420-14f774eb
この記事にトラックバックする(FC2ブログユーザー)

当ブログをご利用(閲覧等)になる場合は必ず「当ブログの利用規定」をお守りください。