2-11 3Dグラフィックスを活用する

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


内容

  1. 3次元の関数をプロットする。
  2. 平面や線を3次元空間に描く。
  3. 球や立体を描く
  4. 演習問題

3次元の関数をプロットする

以前、やったように Plot3D を用いると z = f(x,y) の形で表された3次元の関数をプロットすることが出来ます。このとき、オプションを指定することで出力されるグラフィックスの形を色々変えることが可能です。

さっそくやってみましょう。次の関数

を考えます。この関数を 0 < x < 4, 0 < y < 4 の範囲でプロットします。

入力
出力

枠の線が邪魔なので、取り除きます。

入力
出力

次にメッシュの線も邪魔なので、取り除いてしまいましょう。

入力
出力

以前説明したように、3Dグラフィックスの上にマウスカーソルをおいて、 左ボタンを押したまま動かすことで3Dグラフィックスを回転させることができます。

Mathematica では、パラメータで記述された3次元関数も表示することができます。円柱を描いてみましょう。関数は次のように表されますね。

パラメータで記述された3次元関数を表示するに ParametricPlot3D を使います。上の関数を 0 < t < 2Pi, 0 < z < 3 の範囲でプロットしてみましょう。

入力
出力

つぎに、x、y、z座標がそれぞれ

で与えられる関数をプロットし、その結果を変数 g1 に代入します。

入力
出力

同じく、x、y、z座標がそれぞれ

で与えられる関数をプロットし、その結果を変数 g2 に代入します。

入力
出力

上の g1 と g2 のグラフィックスを合成して表示してみましょう。

入力
出力

平面や線を3次元空間に描く。

Mathematica を使えば、平面や線を3次元空間に簡単に描くことができます。

頂点が (0,0,0), (1,0,0), (1,1,0), (0,1,0) である平面を描いてみましょう。まず頂点の座標を変数 s1 に代入します。

入力
出力

それでは、平面を表示しましょう。Polygon[s1] で平面が生成されます。生成されたグラフィックスを変数 g1 に代入しておきます。

入力
出力

これだけではつまらないので、頂点が (0,0,1), (1,0,1),(1,1,-1),(0,1,-1) の平面も表示してみましょう。まず、頂点の座標を変数 s2 に代入します。

入力
出力

頂点が (0,0,1), (1,0,1),(1,1,-1),(0,1,-1) の平面を表示し、それを変数 g2 に代入しておきます。

入力
出力

それでは、上の2つの平面を同時に表示してみましょう。g1 と g2 を合成するには、次のようにすれば良いですね。

入力
出力

直線を3次元に表示することも可能です。(1/2, 1, 1/2) と  (1/2, 0, 1/2)  を2つの端点とする直線を描いてみましょう。

まず、端点の座標を変数 l1 に代入します。

入力
出力

それでは直線を描いてみましょう。 Line を使います。 Thickness は直線の太さを指定するのに使う命令です。生成したグラフィックスを変数 g3 に代入しておきます。

入力
出力

最後に上の2つの平面と直線を同時に表示しましょう。

入力
出力

球や立体を描く

球や立方体を描いてみます。上でやった3次元関数や平面を組み合わせてもできますが、Mathematica にすでに定義されたものがあるので、それを使いましょう。 球は Sphere で定義されています。変数 k1 に球を代入します。

入力
出力

それでは表示してみましょう。

入力
出力

球の周りにある枠を除くには、Boxed->False というオプションを指定します。

入力
出力

それではこの球を使って、簡単な3Dグラフィックスを作ってみましょう。 まず、球を2つ横に並べてみましょう。3Dグラフィックスを平行移動させるには Translate[3Dグラフィックス, {x, y, z}] を使います。 先程の球 k1 を x軸方向に 2 ほど平行移動させたグラフィックスを作る命令は Translate[k1, {2, 0, 0}] となります。 元々の球と同時に表示させてみましょう。

入力
出力

さらにもう1つ横に球をくっつけてみます。

出力

最後に串の部分を線で付け加えれば、串団子の完成です。

出力

3Dグラフィックスの縦横比を変えることもできます。 Scale[3Dグラフィックス, {s1, s2, s3}] で「3Dグラフィックス」を x軸, y軸, z軸に対してそれぞれ s1, s2, s3 倍したものを作ります。 先程作った球を z軸方向に 2倍に引き伸ばしたものを作ってみます。

出力

最後に直方体を描いてみましょう。直方体は Cuboid で定義されています。

1つの座標のみを与えると、その座標を1つの頂点とする1辺の長さが1の立方体を作ります。

入力
出力

2つの座標を与えると、対角に向かい合う2つの頂点をその座標とする直方体を作ります(この場合は立方体とは限りません)。

入力
出力

上の2つを同時に表示しましょう。

入力
出力

演習問題

(1)つぎの関数を3次元空間にプロットせよ

(1-a)

(1-b)

(1-c)

(2)つぎの図形を描け

(2-a) 縦の団子

(2-b) 5重の塔

注意:上の図形は違う角度から見ると下のようになっている(下の図形は描かなくてもよい)。

(3)ParametricPlot3D を用いて球を描け。