com.nttdocomo.ui.graphics3d.collision
クラス Plane

Object
  拡張com.nttdocomo.ui.graphics3d.collision.AbstractShape
      拡張com.nttdocomo.ui.graphics3d.collision.Plane
すべての実装インタフェース:
Shape

public class Plane
extends AbstractShape

無限平面を表わすクラスです。
Shapeインターフェースの説明を参照してください。

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

フィールドの概要
 
インタフェース 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
 
コンストラクタの概要
Plane(Vector3D pos, Vector3D nor)
           平面上の1点と法線ベクトルを指定して平面を生成します。
Plane(Vector3D v0, Vector3D v1, Vector3D v2)
           平面上の3点を指定して平面を生成します。
 
メソッドの概要
 void createMesh(int rgb, int mode, float v)
           テスト描画用のPrimitiveオブジェクトを生成します。
 Vector3D getNormal(boolean isTrans)
           Planeオブジェクトの法線ベクトルを取得します。
 Vector3D getPosition(boolean isTrans)
           Planeオブジェクトの平面上の1点を取得します。
 boolean isHittingFromBackFaceEnabled()
           裏側から、LineまたはRayが衝突する場合も、衝突していると判定するかどうかの設定状態を 取得します。
 void set(Vector3D pos, Vector3D nor)
           平面上の1点と法線ベクトルを指定して平面を設定します。
 void set(Vector3D v0, Vector3D v1, Vector3D v2)
           平面上の3点を指定して平面を設定します。
 void setHittingFromBackFaceEnabled(boolean enable)
           裏側から、LineまたはRayが衝突する場合も、衝突していると判定するかどうかを設定します。
 
クラス com.nttdocomo.ui.graphics3d.collision.AbstractShape から継承したメソッド
deleteMesh, getAttribute, getMesh, getMeshTransform, getScale, getShapeType, getTransform, setAttribute, setTransform
 
クラス Object から継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

Plane

public Plane(Vector3D pos,
             Vector3D nor)

平面上の1点と法線ベクトルを指定して平面を生成します。

パラメータ:
pos - 平面上の1点を表わすVector3Dオブジェクトを指定します。
nor - 法線ベクトルを表わすVector3Dオブジェクトを指定します。
例外:
NullPointerException - 引数posまたはnorがnullの場合に発生します。
IllegalArgumentException - 引数norが零ベクトルの場合に発生します。
関連項目:
図形サイズ・位置、ベクトル、行列設定値に関する注意事項

Plane

public Plane(Vector3D v0,
             Vector3D v1,
             Vector3D v2)

平面上の3点を指定して平面を生成します。

パラメータ:
v0 - 平面上の点0を表わすVector3Dオブジェクトを指定します。
v1 - 平面上の点1を表わすVector3Dオブジェクトを指定します。
v2 - 平面上の点2を表わすVector3Dオブジェクトを指定します。
例外:
NullPointerException - 引数v0、v1、v2の1つ以上がnullの場合に発生します。
IllegalArgumentException - 引数v0、v1、v2が1直線上にある場合(3点が重なる場合も含む)に発生します。
関連項目:
図形サイズ・位置、ベクトル、行列設定値に関する注意事項
メソッドの詳細

set

public void set(Vector3D pos,
                Vector3D nor)

平面上の1点と法線ベクトルを指定して平面を設定します。

パラメータ:
pos - 平面上の1点を表わすVector3Dオブジェクトを指定します。
nor - 法線ベクトルを表わすVector3Dオブジェクトを指定します。
例外:
NullPointerException - 引数posまたはnorがnullの場合に発生します。
IllegalArgumentException - 引数norが零ベクトルの場合に発生します。
関連項目:
図形サイズ・位置、ベクトル、行列設定値に関する注意事項

set

public void set(Vector3D v0,
                Vector3D v1,
                Vector3D v2)

平面上の3点を指定して平面を設定します。

パラメータ:
v0 - 平面上の点0を表わすVector3Dオブジェクトを指定します。
v1 - 平面上の点1を表わすVector3Dオブジェクトを指定します。
v2 - 平面上の点2を表わすVector3Dオブジェクトを指定します。
例外:
NullPointerException - 引数v0、v1、v2の1つ以上がnullの場合に発生します。
IllegalArgumentException - 引数v0、v1、v2が1直線上にある場合(3点が重なる場合も含む)に発生します。
関連項目:
図形サイズ・位置、ベクトル、行列設定値に関する注意事項

getPosition

public Vector3D getPosition(boolean isTrans)

Planeオブジェクトの平面上の1点を取得します。

パラメータ:
isTrans - ワールド座標系に変換されたデータを取得する場合はtrueを指定します。 Shape座標系におけるデータを取得する場合はfalseを指定します。
戻り値:
平面上の1点(生成または設定した時の1点)を表わすVector3Dオブジェクを返します (生成したVector3Dオブジェクトにデータをコピーして返します)。 3点を指定して設定した場合は1番目の引数の点を返します。

getNormal

public Vector3D getNormal(boolean isTrans)

Planeオブジェクトの法線ベクトルを取得します。

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

createMesh

public void createMesh(int rgb,
                       int mode,
                       float v)
インタフェース Shape の記述:

テスト描画用のPrimitiveオブジェクトを生成します。
開発時の図形位置の確認用としての利用を前提としたメソッドです。

描画の方法は、getMeshメソッドでPrimitiveオブジェクトを取得し、getMeshTransformメソッドで 一次変換行列を取得して、これらをGraphics3DrenderObject3Dメソッドの引数に渡して描画します。

生成したPrimitiveオブジェクトは、形状クラスで保持されます。 setメソッドで形状を変更した場合は、createMeshメソッドでPrimitiveオブジェクトを 再生成してください。それ以外の場合は再生成する必要はありませんが、描画ごとに getMeshメソッドでPrimitiveオブジェクトを取得して使用するようにしてください。 (AABVでは、ワールド座標軸に平行になるようにPrimitiveオブジェクトの頂点データが変更 されます) 不要になった場合はdeleteMeshメソッドで削除してください。

色、ブレンドモード、透明度の設定に関する制限に関しては、Primitiveクラスを参照してください。
ブレンドモードにDrawableObject3D.BLEND_ALPHA、透明度に50%のような値を使用すると、 図形位置の確認がしやすくなります。

※ 図形サイズ・位置に関する注意事項
生成される頂点座標は、本パッケージの内部処理で使用しているfloat型から、Primitiveの 頂点座標で使われているshort型の範囲(-32768以上かつ32767 以下)にマッピングされるため、 範囲に収まらないサイズ・位置の場合、正常に描画されないことがあります。
また、RayPlaneは、描画上は有限の大きさとなり、端が存在します。

パラメータ:
rgb - 0x00rrggbbの形式で、Primitiveオブジェクトの色を指定します。上位8ビットは無視されます。
mode - ブレンドモードを指定します。DrawableObject3D.BLEND_NORMALDrawableObject3D.BLEND_ALPHADrawableObject3D.BLEND_ADDのいずれかを指定します。
v - 透明度をパーセントで指定します。100の時が不透明です。
例外:
IllegalArgumentException - 引数modeがDrawableObject3D.BLEND_NORMAL, DrawableObject3D.BLEND_ALPHA, DrawableObject3D.BLEND_ADDのいずれかでもない場合に発生します。
IllegalArgumentException - 引数vがFloatNaNの場合、0未満の場合、あるいは100より大きい場合に発生します。

setHittingFromBackFaceEnabled

public void setHittingFromョ遽