[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Java3Djp:00778] Re: [Q] set/get rotation
---広告---------------------------------------------------------------
定額制で電話料金を安くする方法 → http://www.stnweb.com/add
----------------------------------------------------------------------
とにかく速い。つながりやすい。月額固定1850円 →
http://gala-jp.com/neweb/
----------------------------------------------------------------------
簡単・快適メーリングリスト → http://www.dns-ml.co.jp/ml+.html
----------------------------------------------------------------------
小池です。
----- Original Message -----
From: ENDO Yasuyuki <eyasuyuki@xxxxxxxxxx>
To: <java3djp@xxxxxxxxxx>
Sent: Tuesday, August 03, 1999 4:25 PM
Subject: [Java3Djp:00775] Re: [Q] set/get rotation
>
> えんどうです。
>
> 私はまだ Transform3D を極めていないので、こんな手をよく使います。
>
> 事前にこんな風にツリーを構築しておきます。
>
> (T) <- 移動を適用する TransformGroup
> |
> (T) <- 回転を適用する TransformGroup
> |
> (T) <- スケーリングを適用する TransformGroup
> |
> <S> <- Shape3D など
>
> この場合回転は 上から 2番目の TransformGroup にしか適用しません。
>
> Tnansform3D#setRotation(Quat4d) ではなく、Transform3D#set(Quat4d) で
> セットできそうな気がします。(それでも同じだったら悲しい...)
やってみました。
・・というか、単にTransform3DからQuat4dを取得して表示、それを
set(Quat4d)して、再度取得としてみたところ、これだけでやっぱり
同じ現象がおきました。
//ここからコード
public void testForSet() {
Transform3D t1 = new Transform3D();
rootTransGroup.getTransform(t1);
Quat4d q1 = new Quat4d();
t1.get(q1);
System.out.println("rotation(before) : " + q1);
Transform3D t2 = new Transform3D();
t2.set(q1);
Quat4d q2 = new Quat4d();
t2.get(q2);
System.out.println("rotation(after) : " + q2);
}
//ここまでコード
//ここから結果
rotation(before) : (0.9487330813320678, 0.09547507956603152,
-0.28822157133339066, 0.06051930353201575)
rotation(after) : (0.056878124459431835, 0.297896252880083,
0.26203257159799526, 0.652756385295138)
//ここまで結果
で、ふと思い付いて、Transform3DではなくMatrix4dを使って(t2を
Matrix4dにして)同様の実験をしてみたところ、まったく同じ値に
なりました。
どうやら、Quat4d -> Matrix4d への変換で起こる現象のようです。