|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
方向を持つBounding Volume(OBV)を表わすインターフェースです。
このインターフェースを実現したクラスは、「方向を持つBounding Volume」 (OBV:Oriented Bounding Volume)となります。
このインターフェースと、AxisAlignedBV
インターフェースの両方を実現したクラスは
「ワールド座標軸に平行なBounding Volume」(AABV:Axis-Aligned Bounding Volume)となります。
(AABVについては、AxisAlignedBV
インターフェースの説明を参照してください。)
OBVは、AABVとはことなり、ワールド座標系に置いた場合も形状の変化はなく、ワールド座標軸に対して
任意の方向を向きます。
AbstractBV
抽象クラスがこのインターフェースを実現しており、これを継承する形で、Box
、Capsule
、Cylinder
、Sphere
の4つのクラスが使用可能です。
Shape座標系におけるOBVの位置・姿勢について
OBVの位置・姿勢は、Shape座標系に対するBV座標系の一次変換により設定されます。
OBVは、次のようにBV座標系において固定の位置、姿勢を取ります。
フィールドの概要 | |
static int |
ROTATE_NONE
回転させません(=0)。 |
static int |
ROTATE_X
X軸回りに90°回転させます(=1)。 |
static int |
ROTATE_XY
X軸回りに90°回転させた後、Y軸回りに90°回転させます(=4)。 |
static int |
ROTATE_Y
Y軸回りに90°回転させます(=2)。 |
static int |
ROTATE_YX
Y軸回りに90°回転させた後、X軸回りに90°回転させます(=5)。 |
static int |
ROTATE_Z
Z軸回りに90°回転させます(=3)。 |
インタフェース com.nttdocomo.ui.graphics3d.collision.Shape から継承したフィールド |
TRANS_BV_SHAPE, TRANS_BV_WORLD, TRANS_BV_WORLD_NOSCALE, TRANS_SHAPE_WORLD, TRANS_SHAPE_WORLD_NOSCALE, TYPE_AAB_BOX, TYPE_AAB_CAPSULE, TYPE_AAB_CYLINDER, TYPE_BOX, TYPE_CAPSULE, TYPE_CYLINDER, TYPE_LINE, TYPE_PLANE, TYPE_POINT, TYPE_RAY, TYPE_SPHERE, TYPE_TRIANGLE |
メソッドの概要 | |
Vector3D |
getCenter(boolean isTrans)
BoundingVolume オブジェクトの中心位置(BV座標系の原点位置)を取得します。
|
float |
getEffectiveRadius(Vector3D vec)
指定した方向の実効半径(Effective Radius)を取得します。 |
int |
getRotate()
Shape座標系における、BV座標系の回転変換を取得します。 |
boolean |
isHittingFromBackFaceEnabled()
BoundingVolume の内側から、Line またはRay が衝突する場合も、衝突していると判定するかどうか
の設定状態を取得します。
|
void |
setCenter(Vector3D center)
Shape座標系における BoundingVolume オブジェクトの中心位置(BV座標系の原点位置)を設定します。
|
void |
setHittingFromBackFaceEnabled(boolean enable)
BoundingVolume の内側から、Line またはRay が衝突する場合も、衝突していると
判定するかどうかを設定します。
|
void |
setRotate(int rotate)
Shape座標系における、BV座標系の回転を設定します。 |
インタフェース com.nttdocomo.ui.graphics3d.collision.Shape から継承したメソッド |
createMesh, deleteMesh, getAttribute, getMesh, getMeshTransform, getScale, getShapeType, getTransform, setAttribute, setTransform |
フィールドの詳細 |
public static final int ROTATE_NONE
public static final int ROTATE_X
public static final int ROTATE_Y
public static final int ROTATE_Z
public static final int ROTATE_XY
public static final int ROTATE_YX
メソッドの詳細 |
public void setCenter(Vector3D center)
Shape座標系におけるBoundingVolume
オブジェクトの中心位置(BV座標系の原点位置)を設定します。
初期値は(0, 0, 0)で、中心位置は原点に一致します。
center
- 中心位置を表わすVector3Dオブジェクトを指定します。
NullPointerException
- 引数centerがnullの場合に発生します。
public Vector3D getCenter(boolean isTrans)
BoundingVolume
オブジェクトの中心位置(BV座標系の原点位置)を取得します。
isTrans
- ワールド座標系に変換された中心位置を取得する場合はtrueを指定します。
Shape座標系における中心位置を取得する場合はfalseを指定します。
public void setRotate(int rotate)
Shape座標系における、BV座標系の回転を設定します。
AABVオブジェクト(AABBox
、AABCapsule
、AABCylinder
)では回転変換を設定することはできない
ため、このメソッドが呼ばれても無視されます。
回転はShape座標軸回りの90°の回転の組合せのみ可能であり、決められた回転のタイプ
により設定します。
初期値は、ROTATE_NONE
です。
rotate
- Shape座標系における、BV座標系の回転を指定します。ROTATE_NONE
、ROTATE_X
、
ROTATE_Y
、ROTATE_Z
、ROTATE_XY
、ROTATE_YX
のいずれかを指定します。
IllegalArgumentException
- 引数rotateが、ROTATE_NONE
、ROTATE_X
、ROTATE_Y
、ROTATE_Z
、ROTATE_XY
、ROTATE_YX
以外の値
の場合に発生します。
public int getRotate()
ROTATE_NONE
縺ァ縺吶