cal_3dr1
例:cal_3dr1(#60,$60);
- 機能:
- 3次元座標変換・平面投影を行う(Z軸が高さ方向)
- 書式:
- cal_3dr1(入,出)
- 解説:
- set_3dr_type()で設定された回転形式とset_3dr_ang()で設定された回転角に従い、Zを高さ方向とする入力座標(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]
各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()とはZを高さ方向とすること以外は同じです。
return |