3次元の図の描き方

今回は3次元の図を描いてみましょう。
そこまで難しくはないと思います。

方位角と仰角

-p[方位角]/[仰角]/[基準座標]
※ 基準座標は0にしておいたほうが無難

3次元の図を描く際には -p をつける必要があります。


方位角 : 地平線の北方向から地平線に沿って時計回りに計った角度
仰角 : 地平線から天頂に向かって計った角度
補足説明 - 「きぼう」を見よう http://kibo.tksc.jaxa.jp/appendix.html より引用。

おすすめの角度は方位角220度、仰角20度です。何となくですが。
スクリプト上では -p220/20/0 となります。

図の枠を描く

グラフも地図も書き方は一緒です。

gmt basemap -J[投影法][ヨコの長さ]/[タテの長さ] -JZ[Z軸の長さ] -R[南端]/[北端]/[西端]/[東端]/[Z軸最小値]/[Z軸最大値] -B[x|y|z][afg][+l"label"] -B[WSNEZ+t"title"] -p[方位角]/[仰角]/[基準座標]
-Bafg-Bxyafg の略。
※ 基準座標は0にしておいたほうが無難

たとえば、XYZ軸ともに12cmかつ、0から10までの枠を描くには、

#!/bin/bash
gmt begin hogehoge jpg
    gmt basemap -JX12 -JZ12 -R0/10/0/10/0/10 -Bafg -Bzafg -BWSneZ -p220/20/0
gmt end

とすれば、

となります。

2次元のグラフや地図を描く際に使う-Bafg-Bxafg -Byafgの省略形になります。
Z軸の目盛りも自動にする場合は、-Bzafg と別途で書く必要があります。

応用編

螺旋(helix)の座標データを作成する。
今回はPython3で作ってみた。

import math
r = 4
for i in range(0, 1440):
    rad =  math.radians(i)
    x = r * math.cos(rad) + 5
    y = r * math.sin(rad) + 5
    z = i * 0.005
    with open("plot.txt", mode='a') as f:
        f.write(str(x) + "," + str(y) + "," + str(z) + "\n")

これで(5,5)を中心とする半径4の螺旋の座標データ、plot.txt が出力される。

これをプロットするには、gmt plot3d を用いる。 -p を忘れずに。

#!/bin/bash
gmt begin hogehoge jpg
    gmt basemap -JX12 -JZ12 -R0/10/0/10/0/10 -Bafg -Bzafg -BWSneZ -p220/20/0
    gmt plot3d "./plot.txt" -W0.25 -p
gmt end

この結果が、

となる。

コメント

タイトルとURLをコピーしました