[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Java3Djp:01104] Re: lookAtメソッドについての質問




平鍋です.

On Thu, 25 Nov 1999 13:30:24 +0900 (JST),
yasuyuki@xxxxxxxxxx said:

>> >   public final double get(Matrix3d m1, Vector3d t1)

>>  これですと、回転マトリクスは求まりますが、X、Y、Z軸それぞれ何度
>> 回転させたのかの情報を知るためには、このマトリクスをさらにX軸、
>> Y軸、Z軸の3つの回転マトリクスの積に分解する必要があるように思
>> うのですが、いかがでしょう。

X軸、Y軸、Z軸の3つの回転マトリクスの積に分解するのは,返っ
て厄介です.やってもいいですが,一意には決まりませんし分解し
たからといって,VUP, 視点,注視点が求まる訳でもありません.

 > 多分平鍋さんから適切なフォローがあるのではと思うのですが、

 >   Vector3d vup = new Vector3d(0.0, 1.0, 0.0); // UPベクトル初期値

 > こんな UP ベクトルを、get() メソッドで得た Matrix3d を使って

 >   m1.transform(vup);

 > とすれば回転後の UP ベクトルが得られるのではないでしょうか。

惜しい!たぶん,

m1.invert();
m1.transform(vup);

のような感じになると思います.

実際には,VUP は 2 行目,

  vup.x = m1.m10;
  vup.y = m1.m11;
  vup.z = m1.m12;

center(注視点) = (0,0,0)として, eye は 3 行目

  eye.x = -m1.m20;
  eye.y = -m1.m21;
  eye.z = -m1.m22;

という感じです.(しっかり計算していないため,間違ってたら指
摘してください.)

---
  Eiwa System Management, Inc.             http://www.esm.co.jp/
  Kenji Hiranabe                           E-Mail: hiranabe@xxxxxxxxxx