それでは次にパッケージquadrics.mにある関数quadrics[]を用いて,2次曲面を描いてみましょう。題材として“虚円のイメージ化”を取り上げてみます。
曲線 x2+y2=d は d>0のとき、半径SQR(d)の円を表わしますが、d<0のときは実平面上では表わすことができません。新たに2つの次元を構築して世界を実平面から虚平面へと広げることにより,新たな「虚円」の世界を構築することができます。円の方程式を x2+y2=d・・・@ とします。
xを実数、yを複素数として y=u+vi (u,v は実数)・・・A とおきます。
Aを@に代入すると x2+(u+vi)2=d ∴ (x2+u2-v2)+2uvi=d
ここで得られる実数部分 x2+u2-v2=d が与える曲面と,実平面との交線が実平面上の“円”となるわけです。これらについての詳しい説明は
「虚円のイメージ化」(Masasi.Sanae)
http://www.nikonet.or.jp/spring/c_circ/c_circ.html
をご覧ください。それではこれらのことをMathematicaを用いて描画してみましょう。まず,関数quadrics[]を用いるためにパッケージquadrics.mをロードする必要があります。
Remove["Global`*"]; Get["quadrics`"]d=1の場合の曲面を描いて見ましょう。
p=x^2+y^2-z^2-1 ; quadrics[p,ViewPoint ->{ 0,-2,1}]次に,この曲面を,関数knife[]実平面で平面で切断してみます。切断面は円になっているのがわかります。
Get["knife`"]; p=x^2+y^2-z^2-1 ; gr= knife[quadrics[p, DisplayFunction->Identity], {0,0,1,0},{-90,0,0},{0,2,2}]; Show[gr,ViewPoint ->{ 0,-2,1}]; Show[gr,ViewPoint ->{ 0,-2,0}]dの値を変化させて,実平面との交線を観察してみましょう。dが正のときは円を描きますが,d=0のとき1点に,d<0のときは実平面上には図形が存在しないことがわかります。
p=x^2+y^2-z^2+k ; Do[quadrics[p,ViewPoint->{0,-2,1} , PlotRange->{{-3,3},{-3,3},{-3,3}}] ,{k,-2,3,1}]ここで用いたMathematicaのNotebookは,次のところをクリックするとダウンロードできます。
→ quad.nb (5kb)