<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>Perhaps there is a reference implementation, committee notes to explain, or perhaps the design should be changed to a scalar rotation.<br>-doug <br><br>> Date: Mon, 20 Oct 2014 21:13:46 +0200<br>> From: holger.seelig@yahoo.de<br>> To: x3d-public@web3d.org<br>> Subject: Re: [X3D-Public] JavaScript: Question to SFMatrix3f.set/getTransform<br>> <br>> No, this cannot be right Doug. The point about which the rotation occurs<br>> is the translation/origin of the matrix3 and the translation is the<br>> first argument to get/setTransform:<br>> <br>> A matrix3 consists of 4 values: translation, rotation, scale,<br>> scaleOrientation. Let's look how it works: A coordinate system with two<br>> orthogonal axes x, and y that have both a length of one is translate by<br>> »translation« to an arbitary place. Then the coordinate system or better<br>> the two axes are scaled, mostly independently, by muliplying by an<br>> amount. Then the coordinate system is rotated by an amount about the<br>> origin (which is the translation), in 2d this rotation value is normally<br>> a simple number, the angle, in degrees or radians, we could express this<br>> rotation also as complex number.<br>> <br>> Let's take a simple float number as rotation phi we can construct a<br>> rotation matrix3 as follow:<br>> <br>> Convension: matrix3 organized in row-major fashion:<br>> x-axis 0<br>> y-axis 0<br>> x y    1<br>> <br>> cos (phi)   sin (phi)   0<br>> -sin (phi)  cos (phi)   0<br>> 0           0           0<br>> <br>> The first two numbers in the third row of a matrix3 is the translation,<br>> and this is the point about which the rotation occurs.<br>> <br>> <br>> Am 20.10.2014 um 19:29 schrieb doug sanden:<br>> > <br>> > My guess/hypothesis: Matrix3 2D rotation SFVec3f = (x,y,angle)<br>> > - where x,y is the 2D point about which the rotation occurs(?)<br>> > (don't compute rotation from xy)<br>> > I base that on my hypothesis the designers were attempting to make Matrix3 analogous to Matrix4.<br>> > See also the documentation on Transform node for how to apply scaleOrientation for 3D, which takes a series of steps.<br>> > <br>> > ________________________________<br>> >> Date: Mon, 20 Oct 2014 19:05:15 +0200 <br>> >> Subject: AW: Re: [X3D-Public] JavaScript: Question to <br>> >> SFMatrix3f.set/getTransform <br>> >> From: holger.seelig@yahoo.de <br>> >> To: highaspirations@hotmail.com; x3d-public@web3d.org <br>> >><br>> >> A matrix3 is coordinate system in 2d space, that has a origin (the <br>> >> translation) and a rotation and a scale and scaleOrientation. You Doug <br>> >> says, the first two values of the SFVec3f should be the complex number <br>> >> of the rotation, from that complex number I can calculate an angle. <br>> >> Should this be the third value? <br>> >><br>> >><br>> >> Von Samsung Mobile gesendet <br>> >><br>> >><br>> >> -------- Ursprüngliche Nachricht -------- <br>> >> Von: doug sanden <br>> >> Datum:20.10.2014 18:49 (GMT+01:00) <br>> >> An: x3d-public@web3d.org <br>> >> Betreff: Re: [X3D-Public] JavaScript: Question to SFMatrix3f.set/getTransform <br>> >><br>> >> I think matrix3 is a 2D homogenous transform, much like matrix4 is a 3D <br>> >> homogenous transform. For 3D a rotation has 4 values: a 3D direction <br>> >> vector for the axis of rotation, and 4th value for the rotation angle <br>> >> about that axis. <br>> >> For matrix3 (2D), there would be something analogous, but with one less <br>> >> dimension. Likely 2 values xy for a point of rotation, and a 3rd value <br>> >> for the angle of rotation about that point. scale orientation in 2D <br>> >> would need a point and rotation. <br>> >> -Doug <br>> >><br>> >><br>> >> ---------------------------------------- <br>> >>> Date: Mon, 20 Oct 2014 18:34:28 +0200 <br>> >>> From: holger.seelig@yahoo.de <br>> >>> To: x3d-public@web3d.org <br>> >>> Subject: [X3D-Public] JavaScript: Question to SFMatrix3f.set/getTransform <br>> >>><br>> >>> I cannot figure out what are the second and fourth argument of <br>> >>> SFMatrix.getTransform are, the spec says: <br>> >>><br>> >>> SFMatrix3f .setTransform setTransform (SFVec2f translation, <br>> >>> SFVec3f rotation, <br>> >>> SFVec2f scale, <br>> >>> SFVec3f scaleOrientation, <br>> >>> SFVec2f center) <br>> >>><br>> >>> I can see that a SFVec3f should be used for the rotation arguments, but <br>> >>> I don't know what the three values (x,y,z) stand for. To my <br>> >>> understanding like the TexureTransform node a matrix3 rotation is only a <br>> >>> simple float. I know that simple numbers cannot be passed by value to a <br>> >>> JavaScript function. <br>> >>><br>> >>><br>> >>> -- <br>> >>> Holger Seelig <br>> >>> Mediengestalter Digital – Digital Media Designer <br>> >>><br>> >>> Scheffelstraße 31a <br>> >>> 04277 Leipzig <br>> >>><br>> >>> Telefon: 01577 147 26 11 <br>> >>> E-Mail: holger.seelig@yahoo.de <br>> >>><br>> >>> _______________________________________________ <br>> >>> X3D-Public mailing list <br>> >>> X3D-Public@web3d.org <br>> >>> http://web3d.org/mailman/listinfo/x3d-public_web3d.org <br>> >><br>> >> _______________________________________________ <br>> >> X3D-Public mailing list <br>> >> X3D-Public@web3d.org <br>> >> http://web3d.org/mailman/listinfo/x3d-public_web3d.org <br>> >           <br>> > _______________________________________________<br>> > X3D-Public mailing list<br>> > X3D-Public@web3d.org<br>> > http://web3d.org/mailman/listinfo/x3d-public_web3d.org<br>> > <br>> <br>> <br>> -- <br>> Holger Seelig<br>> Mediengestalter Digital – Digital Media Designer<br>> <br>> Scheffelstraße 31a<br>> 04277 Leipzig<br>> Germany<br>> <br>> Cellular: +49 1577 147 26 11<br>> E-Mail:   holger.seelig@yahoo.de<br>> Web:      http://titania.create3000.de<br>> <br>> _______________________________________________<br>> X3D-Public mailing list<br>> X3D-Public@web3d.org<br>> http://web3d.org/mailman/listinfo/x3d-public_web3d.org<br>                                      </div></body>
</html>