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

Object
  拡張com.nttdocomo.ui.graphics3d.collision.ViewVolume

public class ViewVolume
extends Object

視錐台におけるBoundingVolumeの可視判定を行うクラスです。

一次変換等の計算の結果、形状のいずれかの長さが0になって形状の次元数がさがる (例えば、Boxが平面になる等)場合の可視判定結果は保証されません。

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

コンストラクタの概要
ViewVolume()
           ViewVolumeオブジェクトを生成します。
 
メソッドの概要
 boolean isViewable(BoundingVolume bv)
           BoundingVolumeオブジェクトの可視判定をします。
 boolean isViewable(BVFigure bvFig)
           BVFigureオブジェクトの可視判定をします。
 void setParallelView(int width, int height)
           投影面の幅と高さを指定して平行投影の視錐台のサイズを設定します。
 void setPerspectiveView(float near, float far, float angle)
           視野角を指定して透視投影の視錐台のサイズを設定します。
 void setPerspectiveView(float near, float far, int width, int height)
           ニアクリップ面における投影面の幅および高さを指定して、透視投影の視錐台のサイズを設定します。
 void setTransform(Transform trans)
           ワールド座標系に対して視錐台をセットする際の一次変換行列を設定します。
 
クラス Object から継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

ViewVolume

public ViewVolume()

ViewVolumeオブジェクトを生成します。
生成後、isViewableメソッドを実行する前に、 setParallelViewメソッドまたはsetPerspectiveView メソッドにより、視錐台のサイズを設定してください。

メソッドの詳細

setParallelView

public void setParallelView(int width,
                            int height)

投影面の幅と高さを指定して平行投影の視錐台のサイズを設定します。

平行投影時には、ニアクリップ面の距離は0に、ファークリップ面の距離は 32767の固定となります。

パラメータ:
width - 投影面の幅を指定します。
height - 投影面の高さを指定します。
例外:
IllegalArgumentException - 引数 width, height のいずれかが 0 以下の場合に発生します。

setPerspectiveView

public void setPerspectiveView(float near,
                               float far,
                               int width,
                               int height)

ニアクリップ面における投影面の幅および高さを指定して、透視投影の視錐台のサイズを設定します。

パラメータ:
near - Near平面のZ座標を指定します。
far - Far平面のZ座標を指定します。
width - Near平面における投影面の幅を指定します。
height - Near平面における投影面の高さを指定します。
例外:
IllegalArgumentException - 引数 width, height のいずれかが 0 以下の場合に発生します。
IllegalArgumentException - 引数 near, far が、0 < near < far < 32768 を満たしていない場合に発生します。

setPerspectiveView

public void setPerspectiveView(float near,
                               float far,
                               float angle)

視野角を指定して透視投影の視錐台のサイズを設定します。

パラメータ:
near - Near平面のZ座標を指定します。
far - Far平面のZ座標を指定します。
angle - 視野角(degree)を指定します。 有効範囲は、0度 < 視野角 < 180度です。
例外:
IllegalArgumentException - 引数 angle が 0 以下または 180 以上の場合に発生します。
IllegalArgumentException - 引数 near, far が、0 < near < far < 32768 を満たしていない場合に発生します。

isViewable

public boolean isViewable(BoundingVolume bv)

BoundingVolumeオブジェクトの可視判定をします。

BoundingVolumeオブジェクトの一部が視錐台の内側にあれば、可視状態にあると判定します。

パラメータ:
bv - BoundingVolumeオブジェクトを指定します。
戻り値:
引数bvの一部が視錐台の内側にあればtrueを返します。 引数bvの全体が外側にあればfalseを返します。
例外:
UIException - setParallelViewメソッドまたはsetPerspectiveViewメソッドにより、視錐台のサイズが 設定されていない場合に発生します。(ILLEGAL_STATE)。
NullPointerException - 引数bvがnullの場合に発生します。

isViewable

public boolean isViewable(BVFigure bvFig)

BVFigureオブジェクトの可視判定をします。

BVFigureオブジェクトにセットされている、Figure全体のBoundingVolumeオブジェクトの一部 が視錐台の内側にあれば、可視状態にあると判定します。
BVFigureオブジェクトに、Figure全体のBoundingVolumeオブジェクトがセットされていない場合は、 falseを返します。

パラメータ:
bvFig - BVFigureオブジェクトを指定します。
戻り値:
引数bvFigにセットされている、Figure全体のBoundingVolumeオブジェクトの一部 が視錐台の内側にあればtrueを返します。 BoundingVolumeオブジェクトの全体が外側にあればfalseを返します。
例外:
UIException - setParallelViewメソッドまたはsetPerspectiveViewメソッドにより、視錐台のサイズが 設定されていない場合に発生します。(ILLEGAL_STATE)。
NullPointerException - 引数bvFigがnullの場合に発生します。

setTransform

public void setTransform(Transform trans)

ワールド座標系に対して視錐台をセットする際の一次変換行列を設定します。

初期値は単位行列で、視錐台のローカル座標系がワールド座標系 と一致します。

設定する行列の3×3部分が直交行列となり、全方向同一スケールとなるように指定してください。 そうでない場合の可視判定は保証されません。

パラメータ:
trans - ワールド座標系に対して視錐台をセットする際の一次変換行列を設定します。 nullを設定すると単位行列として扱われ、視錐台のローカル座標系がワールド座標系と一致します。
例外:
IllegalArgumentException - 引数transの1〜3列の列ベクトルに零ベクトルがある場合に発生します。


NTT DOCOMO,INC.

本製品または文書は著作権法により保護されており、その使用、複製、再頒布および逆コンパイルを制限するライセンスのもとにおいて頒布されます。NTTドコモ(その他に許諾者がある場合は当該許諾者も含めて)の書面による事前の許可なく、本製品および関連する文書のいかなる部分も、いかなる方法によっても複製することが禁じられます。フォントを含む第三者のソフトウェアは、著作権法により保護されており、その提供者からライセンスを受けているものです。

Sun、Sun Microsystems、Java、J2MEおよびJ2SEは、米国およびその他の国における米国 Sun Microsystems,Inc.の商標または登録商標です。サンのロゴマークは、米国 Sun Microsystems, Inc.の登録商標です。

FeliCaは、ソニー株式会社が開発した非接触ICカードの技術方式です。FeliCaは、ソニー株式会社の登録商標です。

「iモード」、「iアプリ/アイアプリ」、「i-αppli」ロゴ、「DoJa」はNTTドコモの商標または登録商標です。

その他記載された会社名、製品名などは該当する各社の商標または登録商標です。