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

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

public class Triangle
extends AbstractShape

Triangleを表わすクラスです。
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
 
コンストラクタの概要
Triangle(Vector3D v0, Vector3D v1, Vector3D v2)
           3頂点を指定してTriangleオブジェクトを生成します。
 
メソッドの概要
 void createMesh(int rgb, int mode, float v)
           テスト描画用のPrimitiveオブジェクトを生成します。
 Vector3D getNormal(boolean isTrans)
           Triangleオブジェクトの法線ベクトルを取得します。
 Vector3D[] getVertices(boolean isTrans)
           Triangleオブジェクトの頂点位置を取得します。
 boolean isHittingFromBackFaceEnabled()
           裏側から、LineまたはRayが衝突する場合も、衝突していると判定するかどうかの設定状態を 取得します。
 void set(Vector3D v0, Vector3D v1, Vector3D v2)
           3頂点を指定してTriangleオブジェクトを設定します。
 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
 

コンストラクタの詳細

Triangle

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

3頂点を指定してTriangleオブジェクトを生成します。

パラメータ:
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 v0,
                Vector3D v1,
                Vector3D v2)

3頂点を指定してTriangleオブジェクトを設定します。

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

getVertices

public Vector3D[] getVertices(boolean isTrans)

Triangleオブジェクトの頂点位置を取得します。

パラメータ:
isTrans - ワールド座標系に変換されたデータを取得する場合はtrueを指定します。 Shape座標系におけるデータを取得する場合はfalseを指定します。
戻り値:
次のデータのVector3Dオブジェクト配列を返します (生成したVector3Dオブジェクト配列にデータをコピーして返します)。
配列[0]−頂点0の座標を表わすVector3Dオブジェクト。
配列[1]−頂点1の座標を表わすVector3Dオブジェクト。
配列[2]−頂点2の座標を表わすVector3Dオブジェクト。

getNormal

public Vector3D getNormal(boolean isTrans)

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

パラメータ:
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 setHittingFromBackFaceEnabled(boolean enable)

裏側から、LineまたはRayが衝突する場合も、衝突していると判定するかどうかを設定します。

trueに設定すると、LineまたはRayの始点が裏側(法線方向の反対側)に位置して、LineまたはRayが 衝突する場合にも、CollisionクラスのisHitメソッドで衝突していると判定します。
初期設定はfalseで、表側から衝突する場合だけ衝突していると判定します。

パラメータ:
enable - 裏側から、LineまたはRayが衝突する場合も、衝突していると判定するかどうか を指定します。衝突と判定する場合はtrueを指定します。衝突と判定しない場合はfalseを指定します。

isHittingFromBackFaceEnabled

public boolean isHittingFromBackFaceEnabled()

裏側から、LineまたはRayが衝突する場合も、衝突していると判定するかどうかの設定状態を 取得します。

戻り値:
裏側から、LineまたはRayが衝突する場合に、衝突と判定する場合はtrueを返します。衝突と判定しない場合はfalseを返します。