[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 への変換で起こる現象のようです。