cal_cubic


機能:
6面体の座標変換・平面投影・面積計算を行う

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

解説:
まず、入力引数「入」で与えられたYを高さ方向とする6面体の8個節点について順次にcal_3dr()と同じ方法で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]
入力の6面体の各節点のXYZ座標と3次元座標系の各軸との対応は次の通りです。
形式0、形式2:
水平β軸 = X軸、 鉛直α軸 = Y軸、 画面γ軸 = Z軸
dβ= Xi、  dα= Yi、  dγ= Zi
形式1:
α軸 = X軸、 β軸 = Y軸、 γ軸 = Z軸
dα= Xi、 dβ= Yi、 dγ= Zi
このようにYを高さ方向とする右手法則座標系は、前後関係のZ数値を無視すれば、通常のXYの2次元系と同じであるという特徴があります。

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


return