box オブジェクト

最初に box オブジェクトの単純な例を示します。

mybox = box(pos=(x0,y0,z0), length=L, height=H, width=W)

Box の中心位置を (x0,y0,z0) で与えます。これは片方の端面の位置を与える cylinder とは異なります。Cylinder のときと同様に個別のベクタ要素は mybox.x, mybox.y, and mybox.z と参照できます。Box の長さ(x 軸に沿った長さです。)は L です。高さ(y 軸に沿った長さ)は H です。幅(z 軸に沿った長さです。)は W です。Box オブジェクトにはデフォルトで mybox.axis = (L, 0, 0) の軸があります。この軸は cylinder のときの軸と殆ど同じです。

Box の軸が座標軸と平行していないときは、さらに軸方向を指定する axis 引数を与えなければなりません。(二番目の図を見てください)

mybox = box(pos=(x0,y0,z0), axis=(a,b,c), length=L,
height=H, width=W)

軸属性は L で指定された方向として与えられます。長さ:L 高さ:H 幅:W は前回と同じです。(長さの属性が指定されないときは、軸ベクタの大きさ box の長さになります)

与えられた軸の周りに大して box を回転させる問題が残っています。Visual が採用している回転のルールは display の up 方向に直行する平面に対して幅を揃えて置くことです。デフォルトでは up 方向とは y 軸の方向です。ですから二番目の図で、 y 軸に直行する平面: x-z 平面に対して幅:w が平行になっています。結果として box の高さ方向と与えられた軸方向は、幅:W 方向と直行しています。このようなルールになっているので、最初に box 配置を考えるとき長さを x 軸方向に、高さを y 軸方向に、幅を z 軸方向にとると便利です。このとき x 方向を向いているデフォルトの axis を y 軸にたいして傾けても幅:W は x-z 平面内に留まります。

box の "up" 属性を変化させることで、box の axis 周りに回転させられます。ここでの up は座標系の up ベクタとは違います。

mybox = box(pos=(x0,y0,z0), axis=(a,b,c), length=L,
height=H, width=W, up=(q,r,s))

この命令文により、 box の 幅方向:width は (u,r,s) ベクタの垂直面に収まるように配置されます。 box の高さ:hight は 幅:width と (a,b,c) ベクタの両方に垂直に配置されます。

box オブジェクトは cylinder の時と同様に次の属性とデフォルト値を持ちます。pos (0,0,0), x (0), y(0), z(0), axis (1,0,0), length (1), color (1,1,1) (color.white でも指定できます), red (1), green (1), blue (1), and up (0,1,0)。 さらに次の box 属性があります。

height:高さです。単純なときは y 方向を向きます。デフォルト長は 1 です。 in the simple case, default is 1

width:幅です。単純なときは z 方向を向きます。デフォルト長は 1 です。 in the simple case, default is 1

size:長さ 高さ 幅のタプル(length, height,width)による一括設定です。デフォルト値は (1,1,1) です。
mybox.size=(20,10,12) は length=20, height=10, width=12 を設定します。

注意:cylinder, arrow, cone, pyramid に対する pos 属性は端面で決まります。一方で box,sphere に対する位置属性は中心に対して決まります。