[ascoders] Re: 3D Vector aus Winkel

  • From: Andre Michelle <ascoders@xxxxxxxxxx>
  • To: ascoders@xxxxxxxxxxxxx
  • Date: Mon, 3 May 2004 12:08:10 +0200 (CEST)

        > wenns Dir hilft, hier ist die Routine zur Berechnung der 
Rotations-Matrix
> auf Basis von Quaternions aus einer Engine von mir. a und b sind Winkel.

Ich baue ja nur ungern etwas ein, was ich überhaupt nicht verstehe :o)
Allerdings reicht es mir, wenn ich weiss, die man es anwendet.
Brauche ich nicht noch die 'Matrix3x3' ?

Aus dem MM Artikel:

 public function fromAxisAngle(a:Number, b:Number, c:Number, d:Number):Void
{
  var ca = Math.cos(d/2); var sa = Math.sin(d/2);
  var m = Math.sqrt(a*a + b*b + c*c);
  $x = a/m * sa;
  $y = b/m * sa;
  $z = c/m * sa;
  $w = ca;
 }

 public function concat(q:Quaternion):Void {
  var w1 = $w; var x1 = $x; var y1 = $y; var z1 = $z;
  var w2 = q.w; var x2 = q.x; var y2 = q.y; var z2 = q.z;
  $w = w1*w2 - x1*x2 - y1*y2 - z1*z2
  $x = w1*x2 + x1*w2 + y1*z2 - z1*y2
  $y = w1*y2 + y1*w2 + z1*x2 - x1*z2
  $z = w1*z2 + z1*w2 + x1*y2 - y1*x2
 }

Mit diesen Methoden realisiert er die Rotation, ist bestimmt nicht weit von
deinem Script entfernt.
Herausbekommen habe ich durch Ausprobieren, dass a,b,c eine Achse bestimmen
und d den Winkel.

Normalerweise transliere ich alle Punkte vor die Kamera:
var tx = p.x - camera.x;
var ty = p.y - camera.y;
und mache dann meine Rotation um die (senkrechten) Achsen ( xa,ya,za), also
3(!) Winkel.

Das scheint mit den Quaternionen etwas anders zu laufen, aber die
Translation bleibt soweit ?
Wie bekomme ich denn die Rotationsachse heraus ?


--
aM



--
aM
        
* Diese Mitteilung wurde in coldflash.de mit dem Benutzernamen Andre Michelle 
(am@xxxxxxxxxxxxxxxxxx) gepostet
        
------------------------------------------------------
Archiv   : //www.freelists.org/archives/ascoders/
Optionen : //www.freelists.org/list/ascoders
------------------------------------------------------

Other related posts: