cal_3dr


機能:
3次元座標変換・平面投影を行う(Y:高さ方向)

書式:
cal_3dr(入,出)

解説:
set_3dr_type()で設定された回転形式とset_3dr_ang()で設定された回転角に従い、Yを高さ方向とする入力座標(Xi,Yi,Zi)の3次元回転の座標変換および表示平面(鉛直軸と水平軸からなる平面)への投影変換を行い、その結果を出力座標(Xo,Yo)として返します。入,出とは(Xi,Yi,Zi)と(Xo,Yo)のことで、3種類のメモリ変数#(i),\(i),$(i)または数値組[i]のいずれかで指定します。対応は次の表の通りです。

入と出の指定内容
対応数値#(i)\(i)$(i)[i]

Xi

Yi

Zi

Xo

Yo

#(i)

#(i+1)

#(i+2)

#(i)

#(i+1)

\(i)

\(i+1)

\(i+2)

\(i)

\(i+1)

$(i)

$(i+1)

$(i+2)

$(i)

$(i+1)

[i][1]

[i][2]

[i][3]

[i][1]

[i][2]


Yを高さ方向とする右手法則座標系は、前後関係のZ数値を無視すれば、通常のXYの2次元系と同じであるという特徴があります。
各3次元回転形式の場合の座標変換及び投影の式は次の通りです。
形式0:
水平β軸 = X軸、 鉛直α軸 = Y軸、 画面γ軸 = Z軸
dβ = Xi、  dα = Yi、  dγ = Zi
dx = sin(α) dβ + cos(α) dα
dy = sin(α) dα - cos(α) dβ
dy* = sin(β) dy* + cos(β) dγ
Xo = cos(γ) dx - sin(γ) dy
Yo = cos(γ) dy + sin(γ) dx
形式1:
α軸 = X軸、 β軸 = Y軸、 γ軸 = Z軸
dα = Xi、 dβ = Yi、 dγ = Zi
Xo = cos(α+30°) dα + cos(β+60°) dβ + cos(γ+225°) dγ
Yo = sin (α+30°) dα + sin (β+60°) dβ + sin(γ+225°) dγ
形式2:
水平β軸 = X軸、 鉛直α軸 = Y軸、 画面γ軸 = Z軸
dβ = Xi、  dα = Yi、  dγ = Zi
d = LαLβLγ-Lαdβdγ-Lβdαdγ-Lγdαdβ-2 dαdβdγ
cα = dα Lα (dβ+Lβ) (dγ+Lγ) / d
cβ = dβ Lβ (dα+Lα) (dγ+Lγ) / d
cγ = dγ Lγ (dβ+Lβ) (dα+Lα) / d
dx = sin(α) cβ + cos(α) cα
dy*= sin(α) cα - cos(α) cβ
dy = sin(β) dy* + cos(β) cγ
Xo = cos(γ) dx - sin(γ) dy
Yo = cos(γ) dy + sin(γ) dx

例:cal_3dr(#(#20+5),[99]);


return