曲線6(トーラスの3D測地線)

このページは[url=https://www.geogebra.org/m/ddm5798j]マス旅[/url]の一部です。[br]今回も「測地線(曲面上の最短経路)」がテーマです。[br]アリさんは今度、球やトーラス(ドーナツ型)の表面を「まっすぐ」進みます。[br]
1. 球面の測地線は大円、トーラスの測地線は何?
[b][size=150]課題:球面およびトーラスの測地線を3D空間に描くアプリ[br][/size][/b][br][color=#0000ff][b][size=150]3D空間で球やトーラスの上を縦横無尽に巻きつく測地線をビジュアル化します。[/size][/b][/color]
2.ウォーミングアップ[br][br][b][size=150]<球の測地線>[br][/size][/b][br]北半球をかきます。[br]北極をN、半径をr、赤道面の円の中心をOとします。[br][b]出発点をA(r,0,0),[/b][br]ゴールをBはAから東に90度、北に60度の地点です。[br]BはNから見ると、Aよりもπ/2先です。x=0[br]BはAから見ると、Aよりもπ/3上です。y=r/2, z=√3/2 * r[br][b]B=(0, r/2, √3/2 * r)[/b]ですね。[br]OについてAと対称な点をCとすると、C=(-r,0,0)となる。Bと対称な点Dは(0,-r/2,-√3/2 * r)[br]だから、AからBへの測地線上の点をPとすると点PはA,B,C,Dを通る大円にある。[br]この大円を赤道面に正射影してみよう。[br][br]大円のz座標が0になるだけだ。B'=(0, r/2,0),D'=(0,-r/2,0)となる。[br]大円の正射影はy軸方向に1/2に縮めた楕円だとわかる。[br]だから点Pの正射影P'もこの楕円上にくるはずだ。[br]中心OとPを結び赤道まで伸ばした点を[b]Q[/b]としよう。[br][b]点Qを(rcost, rsint)[/b]で動かすと、OPはy=tan(t) xの直線となり楕円と交わる。[br]その交点をRとすると、1/(1/2)=2から[br]x^2+(2y)^2=1となり、(1+4tan^2(t))=1/x^2。xが正だから、x=1/√(1+4tan^2(t))。[br]y=tan(t)/√(1+4tan^2(t))。つまり、直線OQの傾きをm=tan(t)とすると、[br][b](x,y)=(1/√(1+4m^2), m/√(1+4m^2))[/b]となるね。[br][br]PはAから見ると、Aよりπ/3上にあるからz=√3 y[br]Pの座標はAから東にt進むと、m=tan(t)、n=1/√(1+4m^2)とおくと、[b][color=#0000ff]P=(n,mn,√3mn)[/color][/b]となるね。
3.トーラスの測地線
[size=150][b]<トーラスの基本>[/b][br][/size][br]トーラスを閉じたゴム管にたとえます。[br]管が点Oの周りを1周して戻るまでの中心線Cが[b]大半径Rの大円(longitude)[/b][br]管自体の断面の円の[b]小半径rの小円(meridian)[/b][br][br]OC=Rですが管の太さから、上から見てOからの距離は[b]最大R+r、最小でR-r[/b]ですね。[br]ゴム管の任意の点Pは垂直にみると、「半径rの小円でt」進んだ点なら[br]水平座標はrcos(t),垂直座標はV=rsin(t)となります。垂直座標がそのままz=rsin(t)です。[br]それを上から見ると、中心Oからの距離が H= R+rcos(t)。[br]だから、[b][color=#0000ff]H-R=rcos(t),z=rsin(t)がセット[/color][/b]。[br][br]ゴム管を穴の「中心Oについて大円でf」進んで回る位置で測ると、[br]半径Hの円をx軸、y軸に投影するから、[color=#0000ff][b]x=Hcos(f),y=Hsin(f)のセット[/b][/color]ができるね。[br][br]これをまとめたのがパラメータ表示だ。パラメータt と f(0 ≤ t, f < 2π)表示。[br][br][b][color=#0000ff][size=200]x = (R + r cos(t)) cos(f))[br]y = (R + r cos(t)) sin(f))[br]z = r sin(t)[br][/size][/color][/b][br](x,y)は半径Hの円から、[br]x^2 + y^2 = H^2[br]また、(H -R,z)は半径rの円となるから、[br](H-R)^2 + z^2= r^2 [br]これから、Hを消去したのがx,y,zの式ですね。[br][b][size=200]((√(x^2 + y^2) - R)^2 + z^2 = r^2[/size][/b][br][br][b][size=150]<トーラスの測地線>[br][/size][/b][br]「[b]トーラス[/b]」は「[b][color=#0000ff][size=150]2パラメータでできた多様体[/size][/color][/b]」という[b]図形[/b]でした。[br]たとえば、多様体としての(t,f)(0 ≤ t, f < 2π)はただの「[b]長方形[/b]」です。[br]f=0にして、tだけ動かすと長方形の「[b]よこ線[/b]」だけになります。[br]t=0にして、fだけ動かすと長方形の「[b]たて線[/b]」になりますね。[br]t=fにして動かすと、「[b]長方形の対角線[/b]」ができます。[br]t=2fにして、tの回転を2倍にすると「[b]2回横切る線分[/b]」ができて、トーラスを2周します。[br][br]こうしてかんがえると、......。[br][br]tとfのパラメータを1つにして、[br]それぞれのスピードを変化させればよいことがわかりますね。だから、m,nを0以上の整数にする。[br][br]パラメータを[b]kで0以上2*pi未満[/b]で動かし、tg = m *k,fg = n*kとします。[br]事実上ワンパラメータの曲線になりました。[br][b]xg = (R + r cos(tg)) cos(fg))[br]yg = (R + r cos(tg)) sin(fg))[br]zg = r sin(tg)[br][/b][br]これで、測地線を量産できそうです。
4.コード化
[size=150][b]<geogebra>[/b][br][/size][br]// ==========================================[br]// 1. 定数とスライダーの定義[br]// ==========================================[br]// 大半径 R, 小半径 r[br]R = 2[br]r = 1[br][br]// トーラス本体(曲面)[br]torus = Surface((R + r*cos(t))*cos(f), (R + r*cos(t))*sin(f), r*sin(t), t, 0, 2*pi, f, 0, 2*pi)[br][br]// 巻き数スライダー m (小円方向の回転数), n (大円方向の回転数)[br]m = Slider(0, 5, 1)[br]n = Slider(0, 5, 1)[br][br]// ==========================================[br]// 2. 測地線(トーラス上の1パラメータ曲線)[br]// ==========================================[br]// Curveコマンドを使用して3D空間内の測地線を描画します[br]geodesic = Curve((R + r*cos(m * k))*cos(n * k), (R + r*cos(m * k))*sin(n * k), r*sin(m * k), k, 0, 2*pi)[br][br]// アニメーション用スライダー (0 ~ 2π)[br]k= Slider(0, 2*pi, 0.05)[br][br]// 測地線上を動くアリさん(動点P)[br]P = ((R + r*cos(m * k))*cos(n * k), (R + r*cos(m * k))*sin(n * k), r*sin(m * k))[br][br]// ==========================================[br]// 3. 2Dグラフィックビュー用テキスト[br]// ==========================================[br]text1 = "小円の巻き数 m = " + m[br]text2 = "大円の回転数 n = " + n[br]text3 = "展開図の直線\\ (t = m*k, f = n*k) が3D測地線です。[br]
トーラス上の測地線を変える

Bilgi: 曲線6(トーラスの3D測地線)