曲線3(曲面輪切りコレクション)
このページはマス旅の一部です。
今回の曲面を輪切りにして見える曲線たちです。
曲線シリーズの初回で円錐を切ると円錐曲線ができることを数式でも確認しました。
今回は、いろんな曲面を水平・垂直に輪切りにして数式と対応させてみましょう。
つまり、「断面曲線コレクション」です。まるで、CTスキャナーで検査する気分ですね。
まあ、曲面に病気はありませんが、特異な点があったりするのが楽しいですよ。
1. 曲面の輪切りコレクションにどんな曲線がでてくるか
課題:曲面輪切りアプリ
「曲面、切断方向、切断の位置」
を選択する。
「曲面と断面、曲面の方程式、断面の曲線の方程式」
が表示される。
2.数学外の知識
曲面というと大げさかもしれませんが、
人はまがったものに囲まれています。
坂道とか丘とか、アップダウンがあると疲れますね。
でもあえて山登りをする人もいます。
そのときに大切なのが等高線のある地図です。
現在は等高線地図を読み解かなくても、
ドローンで測量した赤外線の3D画像も作れるようですね。
料理の世界でも切り方は重要なようです。
きゅうりの切り方に限らず、見栄えや、種の位置など
同じ野菜・果物の切り口によって、印象がまるっきり変わるからです
3.数学・言語・プログラミングの支援
どんどん切っていこう!
曲面の方程式はパラメータではなく、できるだけx、y、zを使った2次式f(x,y,z)=c型にしましょう。
その方がコード化しやすいからです。
横切りはz=kをf(x,y,z)に代入した式にすることですから、f(x,y,k)=cです。
縦切りはx=kをf(x,y,z)に代入した式にすることですから、f(k,y,z)=cですね。
xyの対称性がないときはy=kも必要になりますね。
#NO1.円錐(カラーコーン)
曲面方程式: x^2 + y^2 - z^2 = 0
横切り (z = k): x^2 + y^2 = k^2 (円)
縦切り (x = k): y^2 - z^2 = -k^2 (双曲線)、 しかしx=k=0 では2直線 y = ±z
#k=0もkの範囲に入れたいですね。
#NO2.回転楕円体(遠くから見た地球の表面)
曲面方程式: {x^2}/{a^2} + {y^2}/{b^2} + {z^2}/{c^2} = 1
横切り (z = k): {x^2}/{a^2} + {y^2}/{b^2} = 1 - {k^2}/{c^2} (楕円) 、しかし、z= k> c で空集合。
縦切り (x = k): {y^2}/{b^2} + {z^2}/{c^2} = 1 - {k^2}/{a^2} (楕円)、しかし、x= k> a で空集合。
一般性を失わずにa=5,b=4,c=3としてもよい。
#NO3.1葉双曲面(和楽器の鼓)
曲面方程式: x^2 + y^2 - z^2 = 1
横切り (z = k): x^2 + y^2 = 1 + k^2 (常に円・楕円)。
縦切り (x = k): y^2 - z^2 = 1 - k^2 。
(x=k < 1 なら横向きの双曲線、x=k = 1 なら漸近線(2直線)、x=k > 1 なら縦向きの双曲線)。
#k=1の前後もkの範囲に入れたいですね。
#NO4.2葉双曲面(双曲線が母線の回転体を上下に面対称に配置したもの)
曲面方程式: x^2 + y^2 - z^2 = -1
横切り (z = k): x^2 + y^2 = k^2 -1。
(|k| < 1 なら空集合、|k| = 1 なら点(0,0,±1)、|k| > 1 円)
縦切り (x = k): z^2 - y^2 = 1 + k^2 (常に双曲線)。
#k=1の前後もkの範囲に入れたいですね。
#NO5.楕円放物面(パラボラアンテナ)
曲面方程式: z = x^2 + y^2
横切り (z = k): x^2 + y^2 = k (k > 0 で円、k < 0 で空集合)。
縦切り (x = k): z = y^2 + k^2 (頂点が上下に平行移動する放物線)。
#k=0の前後もkの範囲に入れたいですね。
#NO6.双曲放物面(サドル面)
曲面方程式: z = y^2 - x^2
横切り (z = k): y^2 - x^2 = k (k の正負で開く方向が変わる双曲線 / k=0 で交差直線)。
縦切り (x = k): z = y^2 - k^2 (下に凸の放物線)。
縦切り (y = k): z = k^2 - x^2 (上に凸の放物線)。ただし、アプリでは省略してよい。
#k=0の前後もkの範囲に入れたいですね。
#NO7.トーラス(浮き輪)
曲面方程式: (sqrt{x^2 + y^2} - R)^2 + z^2 = r^2
または、Surface((R + r*cos(u))*cos(v), (R + r*cos(u))*sin(v), r*sin(u), u, 0, 2*pi, v, 0, 2*pi)
横切り (z = k): 同心円のペア
縦切り(中心からずれた縦切りx= R + k): 2円→カッシーニの卵形→レムニスケート(8の字)
# R = 2; r = 1としても一般性を失わない。
全体を通して、kは-4から4の範囲を含むのであれば、問題ないでしょう。
最初、7つの曲面を1つ1つ別々にアプリを作ってもよいですが、
1つの画面で切り替える方がスマートですね。
<geogebra>
要素の追加>geogebra>作成>立体図形
#準備部分
#切断面
#曲面(f1からf7)
k=Slider(-5,5) #アニメーション
hori:z=k
vert:x=k
vert7:x=2+k
#この3平面は非表示
f1:x^2 + y^2 - z^2 = 0
f2:x^2/5^2 + y^2/4^2 + z^2/3^2 = 1
f3:x^2 + y^2 - z^2 = 1
f4:x^2 + y^2 - z^2 = -1
f5:x^2 + y^2 = z
f6:y^2 - x^2 = z
#トーラスはx、y、z式でエラーが出たのでパラメータ表示を選択しました。
f7:Surface((2 + cos(u))*cos(v), (2 + cos(u))*sin(v), sin(u), u, 0, 2*pi, v, 0, 2*pi)
#残念ながら、f7=f7:Surface((2 + cos(u))*cos(v), (2 + cos(u))*sin(v), sin(u), u, 0, 2*pi, v, 0, 2*pi)
となり、fsで拾っても、表示されません。だから、fsとの交差曲線curvenowのf7だけ表示されていません。
#これらは非表示
fs={f1,f2,f3,f4,f5,f6,f7}
#切断方向(1:横切り、0:たて切り)
cutmode=Slider(0,1,1)
fnum=Slider(1,7,1) #手動選択にする。見出しは曲面選択
#3D表示部分
fnow= Element(fs,fnum) #自動で赤になります。
cutplane=if(cutmode==1,hori,if(fnum==7,vert7,vert))#自動で水色になります。
curvenow: IntersectionPaths(cutplane,fnow)#自動で青になります。
#3D画面ではなく、グラフィックビューをクリックしてから、そこにテキストを貼り付けます。
#たて切り(z=k)曲線式テキスト(f11からf71)kは文字ではなく、オブジェクトから選択する。
f11="x^2 + y^2 - {k}^2 = 0"
f21="x^2/5^2 + y^2/4^2 + {k}^2/3^2 = 1"
f31="x^2 + y^2 - {k}^2 = 1"
f41="x^2 + y^2 - {k}^2 = -1"
f51="x^2 + y^2 = {k}"
f61="y^2 - x^2 = {k}"
f71="(sqrt{x^2 + y^2} - 2)^2 + {k}^2 = 1"
f1s={f11,f21,f31,f41,f51,f61,f71}
#これらは非表示
#横切り(x=k)曲線(f10からf70)
f10="{k}^2 + y^2 - z^2 = 0"
f20="{k}^2/5^2 + y^2/4^2 + z^2/3^2 = 1"
f30="{k}^2 + y^2 - z^2 = 1"
f40="{k}^2 + y^2 - z^2 = -1"
f50="{k}^2 + y^2 = z"
f60="y^2 - {k}^2 = z"
f70="(sqrt{(2+k)^2 + y^2} - 2)^2 + z^2 = 1"
f0s={f10,f20,f30,f40,f50,f60,f70}
text1="曲面の方程式は"+fnow
text2="切断面は"+ cutplane
curveformula = If(cutmode == 1, Element(f1s, fnum), Element(f0s, fnum)) #非表示
text3="切断面の曲線は"+ curveformula
#最後の仕上げです。
text1,2,3をグラフィックビューの中でレイアウトし
見やすくします。
text1は赤太字サイズ中、LaTeX数式オン
text2は水色太字サイズ中
text3は青太字サイズ中、LaTeX数式オン
タイトルは「曲面輪切りの曲線は何?」とかにしましょう。