com.nttdocomo.ui.graphics3d.collision
インタフェース BoundingVolume

すべてのスーパーインタフェース:
Shape
既知のサブインタフェースの一覧:
AxisAlignedBV
既知の実装クラスの一覧:
AABBox, AABCapsule, AABCylinder, AbstractBV

public interface BoundingVolume
extends Shape

方向を持つBounding Volume(OBV)を表わすインターフェースです。

このインターフェースを実現したクラスは、「方向を持つBounding Volume」 (OBV:Oriented Bounding Volume)となります。

このインターフェースと、AxisAlignedBVインターフェースの両方を実現したクラスは 「ワールド座標軸に平行なBounding Volume」(AABV:Axis-Aligned Bounding Volume)となります。
(AABVについては、AxisAlignedBVインターフェースの説明を参照してください。)

OBVは、AABVとはことなり、ワールド座標系に置いた場合も形状の変化はなく、ワールド座標軸に対して 任意の方向を向きます。
AbstractBV抽象クラスがこのインターフェースを実現しており、これを継承する形で、BoxCapsuleCylinderSphereの4つのクラスが使用可能です。

Shape座標系におけるOBVの位置・姿勢について
OBVの位置・姿勢は、Shape座標系に対するBV座標系の一次変換により設定されます。
OBVは、次のようにBV座標系において固定の位置、姿勢を取ります。

Shape座標系に対するBV座標系の一次変換は、次のメソッドにより設定します。 ここで、BV座標系は、次の順の変換により決まります。
  1. BV座標系がShape座標系に一致した状態で、setRotate メソッドによりセットされた回転変換を行います。
  2. setCenterメソッドによりセットされた中心位置に平行移動を行います。

導入されたバージョン:
DoJa-5.0 (903i)

フィールドの概要
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
 

フィールドの詳細

ROTATE_NONE

public static final int ROTATE_NONE
回転させません(=0)。

関連項目:
定数フィールド値

ROTATE_X

public static final int ROTATE_X
X軸回りに90°回転させます(=1)。

関連項目:
定数フィールド値

ROTATE_Y

public static final int ROTATE_Y
Y軸回りに90°回転させます(=2)。

関連項目:
定数フィールド値

ROTATE_Z

public static final int ROTATE_Z
Z軸回りに90°回転させます(=3)。

関連項目:
定数フィールド値

ROTATE_XY

public static final int ROTATE_XY
X軸回りに90°回転させた後、Y軸回りに90°回転させます(=4)。

関連項目:
定数フィールド値

ROTATE_YX

public static final int ROTATE_YX
Y軸回りに90°回転させた後、X軸回りに90°回転させます(=5)。

関連項目:
定数フィールド値
メソッドの詳細

setCenter

public void setCenter(Vector3D center)

Shape座標系におけるBoundingVolumeオブジェクトの中心位置(BV座標系の原点位置)を設定します。

初期値は(0, 0, 0)で、中心位置は原点に一致します。

パラメータ:
center - 中心位置を表わすVector3Dオブジェクトを指定します。
例外:
NullPointerException - 引数centerがnullの場合に発生します。
関連項目:
図形サイズ・位置、ベクトル、行列設定値に関する注意事項

getCenter

public Vector3D getCenter(boolean isTrans)

BoundingVolumeオブジェクトの中心位置(BV座標系の原点位置)を取得します。

パラメータ:
isTrans - ワールド座標系に変換された中心位置を取得する場合はtrueを指定します。 Shape座標系における中心位置を取得する場合はfalseを指定します。
戻り値:
中心位置のVector3Dオブジェクトを返します (生成したVector3Dオブジェクトにデータをコピーして返します)。

setRotate

public void setRotate(int rotate)

Shape座標系における、BV座標系の回転を設定します。
AABVオブジェクト(AABBoxAABCapsuleAABCylinder)では回転変換を設定することはできない ため、このメソッドが呼ばれても無視されます。

回転はShape座標軸回りの90°の回転の組合せのみ可能であり、決められた回転のタイプ により設定します。
初期値は、ROTATE_NONEです。

パラメータ:
rotate - Shape座標系における、BV座標系の回転を指定します。ROTATE_NONEROTATE_XROTATE_YROTATE_ZROTATE_XYROTATE_YXのいずれかを指定します。
例外:
IllegalArgumentException - 引数rotateが、ROTATE_NONEROTATE_XROTATE_YROTATE_ZROTATE_XYROTATE_YX以外の値 の場合に発生します。

getRotate

public int getRotate()
ROTATE_NONE縺ァ縺吶