cal_3dr
例:cal_3dr(#(#20+5),[99]);
- 機能:
- 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
return |