com.nttdocomo.ui.sound3d
クラス CartesianListener

Object
  拡張com.nttdocomo.ui.sound3d.CartesianListener

public class CartesianListener
extends Object

デカルト座標でリスナ(聴者)の位置と向きを指定するオブジェクトを定義します。

リスナの位置と向きを指定する際の考え方は、 Transform クラスで 視点座標への変換となるように行列の要素を設定するのと同様です。 すなわち、リスナの向きは、リスナの位置に加えて参照点および上方向ベクトルを指定することによって決まります。 視線方向((参照点 - リスナの位置)によって計算されるベクトル)と上方向ベクトルとが垂直でないときは、 視線方向と垂直になるように上方向ベクトルを補正したものを用いて処理が行われます。

デカルト座標の各成分は float で指定しますが、 Vector3D と同様にシステム内部で整数演算に変換されて処理されます。

導入されたバージョン:
DoJa-4.0 (901i)
関連項目:
CartesianPosition

コンストラクタの概要
CartesianListener()
           リスナの位置と向きを指定するオブジェクトを生成します。
 
メソッドの概要
 Vector3D getVelocity() [iアプリオプションAPI]
           リスナの移動方向と速度を取得します。
 void setLookAt(Vector3D position, Vector3D look, Vector3D up)
           リスナの位置と参照点と上方向を指定してリスナの向きを設定します。
 void setTransform(Transform transform)
           リスナ中心の座標系に変換するための行列を指定してリスナの向きを設定します。
 void setVelocity(Vector3D vector) [iアプリオプションAPI]
           リスナの移動方向と速度を指定します。
 
クラス Object から継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

CartesianListener

public CartesianListener()

リスナの位置と向きを指定するオブジェクトを生成します。

デフォルトでは、各パラメータは以下のように設定されています。

  • リスナの位置は、座標系の原点に設定されます。 すなわち、(0.0f, 0.0f, 0.0f) が設定されます。
  • 参照点は、Z 軸方向を向いているように設定されます。 すなわち、(0.0f, 0.0f, 1.0f) が設定されます。
  • 上方向ベクトルは、Y 軸の負の方向が上になるように設定されます。 すなわち、(0.0f, -1.0f, 0.0f) が設定されます。
  • [DoJa-5.0 (903i) 以降] リスナの移動方向と速度は、null に設定されます。

メソッドの詳細

setLookAt

public void setLookAt(Vector3D position,
                      Vector3D look,
                      Vector3D up)

リスナの位置と参照点と上方向を指定してリスナの向きを設定します。

このメソッドで指定した位置および参照点に、 CartesianPosition オブジェクトが持つ座標変換係数をかけた値が実際の位置および参照点として使用されます。

パラメータ:
position - リスナの位置を表すベクトルを指定します。
look - リスナの参照点を表すベクトルを指定します。
up - リスナの上方向を表すベクトルを指定します。
例外:
NullPointerException - 引数 position, look, up のいずれかが null の場合に発生します。
IllegalArgumentException - 引数 up が零ベクトルの場合に発生します。 また、この引数が示す値を int 幅の値に変換したときに、 この条件を満たす場合にも発生します。
IllegalArgumentException - 引数 look と position のベクトルが等価な場合に発生します。 また、これらの引数が示す値を int 幅の値に変換したときに、 この条件を満たす場合にも発生します。
IllegalArgumentException - 引数 (look - position) のベクトル演算の結果と、 引数 up のベクトルが平行な場合に発生します。 また、これらの引数が示す値を int 幅の値に変換したときに、 この条件を満たす場合にも発生します。

setTransform

public void setTransform(Transform transform)

リスナ中心の座標系に変換するための行列を指定してリスナの向きを設定します。 リスナの位置と向きを setLookAt(com.nttdocomo.ui.util3d.Vector3D, com.nttdocomo.ui.util3d.Vector3D, com.nttdocomo.ui.util3d.Vector3D) メソッドを使用して指定する代わりに、 Transform オブジェクトにリスナの位置と向きを設定しておいて、 それをリスナ中心の座標系に変換するための行列として指定することができます。

パラメータ:
transform - リスナ中心の座標系に変換するための行列を指定します。
例外:
NullPointerException - 引数 transform に null が指定された場合に発生します。

setVelocity

public void setVelocity(Vector3D vector) [iアプリオプションAPI]

リスナの移動方向と速度を指定します。 リスナの移動方向と速度はドップラー効果の計算のためにのみ使用され、 リスナの位置や向きには影響しません。

このメソッドで指定した速度に座標変換係数をかけた値が実際の速度として使用されます。

[DoJa-4.0 (901i) 以降]
端末によってはサポートされない場合があります。 サポートされない場合、本メソッドの呼び出しは無視されます。 例外は発生しません。

[DoJa-5.0 (903i) 以降]
デフォルトでは null が指定されたのと同じ状態になっています。

パラメータ:
vector - リスナの移動方向と速度を表すベクトルを指定します。 引数に null を指定した場合は零ベクトルが指定されたものとみなされます。

getVelocity

public Vector3D getVelocity() [iアプリオプションAPI]

リスナの移動方向と速度を取得します。 setVelocity(Vector3D) メソッドで null が設定された場合は、 このメソッドは null を返します。

[DoJa-4.0 (901i) 以降]
端末によってはサポートされない場合があります。 サポートされない場合は、 null を返します。

戻り値:
リスナの移動方向と速度を表すベクトルを返します。