com.jblend.graphics.m3d
クラス AffineTrans3D <Phase3>

java.lang.Object
  |
  +--com.jblend.graphics.m3d.AffineTrans3D

public class AffineTrans3D
extends java.lang.Object

3次元アフィン変換用の行列クラスです。

このクラスは、モデリング座標系からワールド座標系へのアフィン変換の行列、 および、ワールド座標系から視野座標系へのアフィン変換の行列として利用します。

数値は、固定小数点(1.0=4096)として扱う必要があります。


コンストラクタの概要
AffineTrans3D()
          単位行列として行列を生成します。
AffineTrans3D(int[] array)
          要素の値を指定して行列を生成します。
AffineTrans3D(int a00, int a01, int a02, int a03, int a10, int a11, int a12, int a13, int a20, int a21, int a22, int a23)
          要素の値を指定して行列を生成します。
 
メソッドの概要
 int[] get()
          行列の要素を返します。
 void lookAt(Point3D position, Vector3D look, Vector3D up)
          視点座標への変換となるように行列を設定します。
 void multiply(AffineTrans3D t)
          行列の積 (this × t) を計算し、結果の行列を保持します。
 void multiply(AffineTrans3D t1, AffineTrans3D t2)
          行列の積 (t1 × t2) を計算し、結果の行列を保持します。
 void rotate(Vector3D axis, int angle)
          指定されたベクトル軸に対する回転を加えます。
 void rotate(Vector3D axis, Point3D pos, int angle)
          指定されたベクトル軸に対する回転を加えます。
 void scale(int s)
          拡大縮小(3 軸等価)を加えます。
 void scale(int sx, int sy, int sz)
          拡大縮小(3 軸個別)を加えます。
 void set(int[] array)
          行列の要素に値を設定します。
 void set(int a00, int a01, int a02, int a03, int a10, int a11, int a12, int a13, int a20, int a21, int a22, int a23)
          行列の要素に値を設定します。
 void setIdentity()
          単位行列を設定します。
 void setRotation(Vector3D axis, int angle)
          指定されたベクトル軸に対する回転を設定します。
 void setScale(int s)
          拡大縮小(3軸等価)を設定します。
 void setScale(int sx, int sy, int sz)
          拡大縮小(3軸個別)を設定します。
 void setTranslation(int tx, int ty, int tz)
          平行移動を設定します。
 Point3D transform(Point3D pos)
          指定のベクトルを変換し、結果を返します。
 void translate(int tx, int ty, int tz)
          平行移動を加えます。
 
クラス java.lang.Object から継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

AffineTrans3D

public AffineTrans3D()
単位行列として行列を生成します。

AffineTrans3D

public AffineTrans3D(int[] array)
要素の値を指定して行列を生成します。
パラメータ:
array - 行列の要素に設定する値の配列
例外:
java.lang.IllegalArgumentException - 4x3でない行列が指定された場合に発生する

AffineTrans3D

public AffineTrans3D(int a00,
                     int a01,
                     int a02,
                     int a03,
                     int a10,
                     int a11,
                     int a12,
                     int a13,
                     int a20,
                     int a21,
                     int a22,
                     int a23)
要素の値を指定して行列を生成します。
パラメータ:
a00,a01,a02,a03 - 行列の1行目の要素に設定する値
a10,a11,a12,a13 - 行列の2行目の要素に設定する値
a20,a21,a22,a23 - 行列の3行目の要素に設定する値
メソッドの詳細

get

public int[] get()
行列の要素を返します。
戻り値:
int[] - 行列の要素に設定されている値の配列

set

public void set(int[] array)
行列の要素に値を設定します。
パラメータ:
array - 行列の要素に設定する値の配列
例外:
java.lang.IllegalArgumentException - 4x3でない行列が指定された場合に発生する

set

public void set(int a00,
                int a01,
                int a02,
                int a03,
                int a10,
                int a11,
                int a12,
                int a13,
                int a20,
                int a21,
                int a22,
                int a23)
行列の要素に値を設定します。
パラメータ:
a00,a01,a02,a03 - 行列の1行目の要素に設定する値
a10,a11,a12,a13 - 行列の2行目の要素に設定する値
a20,a21,a22,a23 - 行列の3行目の要素に設定する値

setIdentity

public void setIdentity()
単位行列を設定します。

multiply

public void multiply(AffineTrans3D t)
行列の積 (this × t) を計算し、結果の行列を保持します。

multiply(this, t) を呼び出したのと同じになります。

パラメータ:
t - 乗数となる変換行列

multiply

public void multiply(AffineTrans3D t1,
                     AffineTrans3D t2)
行列の積 (t1 × t2) を計算し、結果の行列を保持します。
パラメータ:
t1 - 被乗数となる変換行列
t2 - 乗数となる変換行列

rotate

public void rotate(Vector3D axis,
                   int angle)
指定されたベクトル軸に対する回転を加えます。

回転方向は反時計回りです。

パラメータ:
axis - 回転の中心軸
angle - 回転する角度(4096分円単位)

rotate

public void rotate(Vector3D axis,
                   Point3D pos,
                   int angle)
指定されたベクトル軸に対する回転を加えます。

回転方向は反時計回りです。

パラメータ:
axis - 回転する中心軸
pos - 回転軸の原点
angle - 回転する角度(4096分円単位)

scale

public void scale(int s)
拡大縮小(3 軸等価)を加えます。
パラメータ:
s - スケール

scale

public void scale(int sx,
                  int sy,
                  int sz)
拡大縮小(3 軸個別)を加えます。
パラメータ:
sx,sy,sz - スケール

translate

public void translate(int tx,
                      int ty,
                      int tz)
平行移動を加えます。
パラメータ:
v - 移動量

setRotation

public void setRotation(Vector3D axis,
                        int angle)
指定されたベクトル軸に対する回転を設定します。
パラメータ:
axis - 回転する中心軸
angle - 回転する角度(4096分円単位)

setScale

public void setScale(int s)
拡大縮小(3軸等価)を設定します。
パラメータ:
s - スケール

setScale

public void setScale(int sx,
                     int sy,
                     int sz)
拡大縮小(3軸個別)を設定します。
パラメータ:
sx,sy,sz - スケール

setTranslation

public void setTranslation(int tx,
                           int ty,
                           int tz)
平行移動を設定します。
パラメータ:
t - 移動量

transform

public Point3D transform(Point3D pos)
指定のベクトルを変換し、結果を返します。
パラメータ:
pos - 点の座標を表すベクトル
戻り値:
Point3D - 変換結果のベクトル

lookAt

public void lookAt(Point3D position,
                   Vector3D look,
                   Vector3D up)
視点座標への変換となるように行列を設定します。

視点座標系は、視点位置を原点とし、 視線方向を +z 方向とする右手系です。

パラメータ:
position - 視点の位置
look - 視点からの視線方向
up - 視点からの上方向
例外:
java.lang.IllegalArgumentException - 以下の場合に発生する
  • 零ベクトルが指定された場合
  • 視線方向と上方向が平行の場合


Copyright 2003 Aplix Corporation. All rights reserved. Aplix Confidential and Restricted.