cal_cubic1


機能:
6面体の座標変換・平面投影・面積計算を行う(Z軸が高さ方向)

書式:
cal_cubic1(入,出,出面積)

解説:
Zを高さ方向とする以外は、cal_cubic()と同じです。
まず、入力引数「入」で与えられたZを高さ方向とする6面体の8個節点について順次にcal_3dr1()と同じ方法で3次元回転の座標変換及び表示平面への投影変換を行い、引数「出」に出力します。次に、各節点を投影変換した結果を使って各面の面積を計算し、引数「出面積」に出力します。各面の面積の正負を用いて、その面が実際に可視面であるかどうかを判断します。
「入」,「出」,「出面積」は3種類のメモリ変数#(i),\(i),$(i)または数値組[i]のいずれかで設定します。
「入」で、8個の節点の変換前のXYZ座標の計24個の数値( , , , , , ,...)を表します。「入」とメモリ変数との対応は次の通りです(節点番号 k = 1 〜 8)。
Xk: #(i+3*(k-1)) or \(i+3*(k-1)) or $(i+3*(k-1)) or [i][3*(k-1)+1]
Yk: #(i+3*(k-1)+1) or \(i+3*(k-1)+1) or $(i+3*(k-1)+1) or [i][3*(k-1)+2]
Zk: #(i+3*(k-1)+2) or \(i+3*(k-1)+2) or $(i+3*(k-1)+2) or [i][3*(k-1)+3]
「出」で、8個の節点の投影変換後のXY座標の計16個の数値(X1 Y1 X2 Y2 ...)を表します。「出」とメモリ変数との対応は次の通りです(節点番号 k = 1 〜 8)。
Xk: #(i+2*(k-1)) or \(i+2*(k-1)) or $(i+2*(k-1)) or [i][2*(k-1)+1]
Yk: #(i+2*(k-1)+1) or \(i+2*(k-1)+1) or $(i+2*(k-1)+1) or [i][2*(k-1)+2]
「出面積」で、投影変換後の6個の面の面積(S1,S2 ...)を表します。「出面積」とメモリ変数との対応は次の通りです(k = 1 〜 6 面番号)。
Sk: #(i+k-1) or \(i+k-1) or $(i+k-1) or [i][k]
入力のXYZ座標と3次元座標系の各軸との対応は次の通りです。
形式0、形式2:
画面γ軸 = X軸、 水平β軸 = Y軸、 鉛直α軸 = Z軸
dγ= Xi、   dβ= Yi、 dα= Zi
形式1:
γ軸 = X軸、 α軸 = Y軸、 β軸 = Z軸
dγ= Xi、 dα= Yi、 dβ= Zi

例:cal_cubic1(#25,$85,\50);


return