グラフィックス(2)

演習問題を行う前に 1-2. Mathematica を使うときの注意を良く読んでください.


内容

  1. グラフを描く関数を作る
  2. スピノグラフを作る
  3. 三次元グラフィックスとアニメーション
  4. 演習問題

グラフを描く関数を作る

これまでに学んだことを用いて、グラフを描く関数を作ってみましょう.関数 f(x) が与えられたとき、 y = f(x) のグラフを -1 < x < 1, -1 < y < 1 の範囲で描く関数を作ります.

まず、関数 f(x) を定義します.この例では f(x) = x^2 とします.

入力
出力

次に y = f(x) を満たす (x,y) の組を作ります。 -1 < x < 1 の範囲で 0.1 刻みに x を動かし、それに対応する y の値を計算します.

入力
出力

先週学んだように、上の点を線で結ぶには次のようにします.

入力
出力
入力
出力

これで関数はプロットされましたが、x, y 軸が描かれていません.x, y 軸も描いてみましょう.まず、x, y 軸を定義します.

入力
出力
入力
出力

関数のグラフを x, y 軸とともに表示してみます.

入力
出力

それでは、これまでしてきた計算を行う関数 plotgraph[] を定義しましょう.プロットする関数 f[x] が与えられたとき、上の計算を行えばよいですから、次のように定義すればよいですね.

入力
出力

それでは、試してみましょう.

入力
出力

スピノグラフを作る

スピノグラフというものを知っていますか?これは曲線の模様を描く道具で、下のように大きな円の穴があいた板と小さな円盤からなっています(緑色の部分).

小さな円盤には穴があいており、ここに鉛筆を指して下の図のように、円盤を大きな円に接しながらぐるぐる回転していきます.

このときに内部の円盤の穴の軌跡が模様になって残ります.どのような模様になるかは、大きな円の半径、円盤の半径や円盤の鉛筆を入れる穴の位置によって変わってきます.実際のスピノグラフでは、様々な大きさの円や円盤が用意されており、いろいろな模様が描けるようになっています.ここでは、Mathematica を使ってこの模様を描いてみましょう.

下の図のように、大きな円の半径を r1、内部の円盤の半径を r2、円盤の中心から鉛筆を入れる穴までの距離を r3 とします.また、大きな円の中心を原点に取り、その点を O とします.円盤の中心を P、鉛筆を入れる穴を Q とします。

いま、内部の円盤が下の図のように角度 θ1 回転したとします。

このとき、線分 OP の長さは r1-r2 なので、点 P の座標は

  ---- (1)

である.ここで、点 A, B, C を新たに下図のようにとると

弧 AB の長さは です。また、 θ2 を上の図のようにの 線分 PQ と線分 PB がなす角とすると弧 BC の長さはとなりますね.ここで、大きな円とその内部の円盤は接しながら回転しているので、弧 AB と弧 BCの長さは等しいことになります.ゆえにとなり、

 ----(2)

を得ます.ここで、Q の座標は

と書けることに注意すると、先ほどの (1) と (2) をこの式に代入することにより

を得ます.これで点 Q の軌跡が描けることになりました.

それでは、点 Q の軌跡を描いてみましょう.まず、点 Q の座標を定義します.

入力
出力

それでは、r1 = 11, r2 = 9, r3 = 5 として、 θ1 を 0 から 30Pi まで 0.1 刻みで動かして軌跡を描いてみましょう.まず点の座標を計算します。

入力
出力 出力が大き過ぎるため、省略

点を線で結んで軌跡を描きましょう.

入力
出力

それでは、このスピノグラフを描く関数 supino[] を定義しましょう.行うことは、先ほどやったように、点の座標を計算し、線でつないで表示するだけです.

入力
出力

試してみましょう.

入力
出力

3次元グラフィックスとアニメーション

最後に3次元グラフィックスのアニメーションの例をやります.先週説明したように Mathematica では 3次元のグラフィックスが非常に簡単に生成できます.ここではその3次元グラフィックスを回転させてみましょう。

それでは、多面体を作ってみましょう。次のように入力してください.

入力
出力

これで上の3次元グラフィックスが変数 tamentai に代入されました。 これで上の3次元グラフィックスが変数 tamentai に代入されました.それでは、これを回転させてみましょう。このためには、また別のパッケージを読み込む必要があります。次のように入力してください(エラーメッセージが出ますが、気にしなく大丈夫です)。

入力
出力
それでは、いよいよ tamentai を回転させます.次のように入力してください。

入力
出力

多面体が回転している様子が表示されたはずです.ポーズボタンをクリックすると回転が止まります。 今回は、多面体が回転するアニメーションを作りましたが、自分で作った 3次元グラフィックスも同様に回転させて見ることが可能です.興味がある人は、自分でいろいろやってみてください.


課題

(1)「グラフを描く関数を作る」で作った関数 plotgraph では、表示される x の範囲は -1 から 1 に固定されていた.これを任意の範囲を指定できるように拡張せよ.具体的には
plotgraph[f[x], x, {xmin, xmax}]
とすれば、y = f[x] の曲線を xmin < x < xmax の範囲で表示するようにせよ.

(2)「スピノグラフを作る」の supino[] は r1,r2,r3 の値を変えることにより、いろいろな曲線を描くことができる。 異なる曲線を 10個作れ。