つれづれなる備忘録

日々の発見をあるがままに綴る

gnuplotによるグラフ作成23~3Dパラメトリックプロット

 以前2Dでのパラメトリックプロットについて紹介したが、今回は3Dでのパラメトリックプロットについて紹介する。

atatat.hatenablog.com

atatat.hatenablog.com

1. 3Dパラメトリックプロット

 パラメトリックプロットを設定するには2D/3Dともにset parametricとすることでパラメトリックモードに移行する。

set parametric
>dummy variable is t for curves, u/v for surfaces

x,y,zに対してそれぞれパラメトリック表示された関数をsplotを用いることで3次元のパラメトリックプロットが実行される。例えば

 \begin{eqnarray} x &=& \cos (u) (3+\cos (v) ) \\ y &=&\sin (u) (3+\cos(v) ) \\  z&=&\sin (v) \end{eqnarray}

を実行するには

 splot cos(u)*(3+cos(v)),sin(u)*(3+cos(v)),sin(v)

以下のようなトーラス図形が描画される。

"3Dパラメトリックプロットによるトーラス描画"
3Dパラメトリックプロットによるトーラス描画

2. 3Dパラメトリックプロットの書式設定

 上のパラメトリックプロットを見やすくするには、u,vの描画範囲を0~2πに限定する。

 splot [0:2*pi] [0:2*pi] cos(u)*(3+cos(v)),sin(u)*(3+cos(v)),sin(v)

実行すると以下のように余計な線の描画を防ぐことができる。

"u,v描画範囲の限定"
u,v描画範囲の限定

さらに見やすくするには、ラインの増加と陰線処理を施す。

set hidden3d
set isosamples 40,40
replot

以下のようにトーラス(ドーナッツ)の構造をわかりやすく表示することができている。

"ライン増と陰線処理"
ライン増と陰線処理

さらにwith pm3dとすることで表面にカラーを加えることができる。

 splot [0:2*pi] [0:2*pi] cos(u)*(3+cos(v)),sin(u)*(3+cos(v)),sin(v) with pm3d

以下のように表面にカラーを加えられるが、見やすくはない。

"トーラス表面のカラー表示"
トーラス表面のカラー表示

以下のようにマップビューだと3次元ではないものの、上よりかは形状が掴みやすいかもしれない。

set view map
set size square
set key right outside
replot

"マップビューにした場合"
マップビューにした場合

3. まとめ

 今回はgnuplotによる3Dでのパラメトリックプロットと書式設定について紹介した。