Mathematica3.0を用いた3次元図形の切断

 それではMathematicaを用いて3次元図形を描画してみましょう。Mathematicaの3次元図形の基本的な図形の描き方は
  「Let's Enjoy with Plot3D」(Masasi.Sanae)
  http://www.nikonet.or.jp/spring/Plot3D/Plot3D.htm
をご覧ください。

 ここでは任意の空間図形を任意の平面で切断する関数knife[]や,固有ベクトルを用いた座標変換による2次曲面の高速描画関数quadrics[]などが入ったパッケージを用いた教材作成について述べていきます。これらの関数を用いることにで,より空間的なイメージ化をすることができます。

 なお,これらのパッケージはH.Takahashi氏のHomePageから非営利目的に限り,次のURLから自由にダウンロードすることができます。
  「H.Takahashi's Home Page」   http://www.biwako.or.jp/%7Ehidekazu/
 これらのパッケージはフォルダStandardPackagesに置いて使用することができます。

 さっそくパッケージknife.mに入っている関数knife[]を用いて,空間図形を任意の平面で切断してみましょう。

 いま最も簡単な図形である立方体を描画してみます。


Get["Graphics`Polyhedra`"]

Get["Graphics`Shapes`"]

Show[Graphics3D[Cube[]],Boxed->False]

 次にこの立方体を,さまざまな角度から平面で切断していきます。しかし,まず関数knife[]を用いるためにパッケージknife.mをロードする必要があります。


Remove["Global`*"]

Get["knife`"]

Get["Graphics`Shapes`"]

 それでは関数knife[]を用いて,この立方体を切断してみましょう。オプション値を変化させればさまざまな切断ができます。


cube=Graphics3D[Cube[]];

gr=knife[cube,{1,1,1,0},{0,0,0},{.3,.3,.3}];

Show[gr,Boxed->False]


gr=knife[cube,{2,1,1,0},{0,0,0},{.3,.3,.3}];

Show[gr,Boxed->False]


gr=knife[cube,{1,1,1,0},{-30,0,0},{.3,.3,.3}];

Show[gr,Boxed->False]


gr=knife[cube,{1,1,1,0},{0,0,0},{1,1,1}];

Show[gr,Boxed->False]

 さあ,今度はDoを用いてパラメータの変化による変化の様子を調べてみましょう。「cell」メニューの中の「Animate Selected Graphics」を選択すれば,アニメーションもできます。


Do[vec = 

      N[{Sin[(π t)/180], Cos[(π t)/180], Sin[(π t)/180], 0}]; 

    gr = knife[cube, vec, {0, 0, 0}, Drop[vec, -1]]; 

    Show[gr, PlotRange->All,Boxed->False,BoxRatios->Automatic,Axes->False,

    DisplayFunction->$DisplayFunction],{t,0,180,15}]

 ここで用いたMathematicaのNotebookは,次のところをクリックするとダウンロードできます。
     → cut.nb (6kb)