<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"></head><body ><div>Yes a reference implementation would be fine. But a change to a scalar is not posible as you cannot pass a scalar by reference in JavaScript. With getTransform you must pass all arguments by reference. Or better said, you must pass objects, the implementor of this function can then assign the values.</div><div><br></div><div><br></div><div><div style="font-size:9px;color:#575757">Von Samsung Mobile gesendet</div></div><br><br><div>-------- Ursprüngliche Nachricht --------</div><div>Von: doug sanden <highaspirations@hotmail.com> </div><div>Datum:21.10.2014  04:20  (GMT+01:00) </div><div>An: x3d-public@web3d.org </div><div>Betreff: Re: [X3D-Public] JavaScript: Question to SFMatrix3f.set/getTransform </div><div><br></div><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>