[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