[x3d-public] SFRotation constructor axis argument by reference orvalue ?

Andreas Plesch andreasplesch at gmail.com
Fri Mar 6 05:26:00 PST 2020


I looked at the abstract and Java SAI spec. but they do not have more
guidance.

In my mind, the argument for the axis vector in the constructor to become
decoupled from the rotation, eg. rot.y = 0 in the example, was that
SFRotation is only defined in terms of float primitives, x,y,z and a. The
constructor using axis is expected therefore to copy the axis x,y,z over
and the axis vector would not be kept with the rotation (except perhaps
internally for convenience).

Of course, this is quite a lot to deduce from a few lines in the spec.

my 2c,

Andreas

---on the phone---

On Thu, Mar 5, 2020, 4:04 PM Joseph D Williams <joedwil at earthlink.net>
wrote:

>
>    - So I would guess for ecmascript it should
>
> be rot.y = 1.0
>
>
>
> me too because rot values can be set as rot.x rot.y rot.z and rot.a
>
> and axis can be set by by axis.x  axis.y and axis.z
>
> so in this example the last one set is the final value.
>
> Joe
>
>
>
> *From: *Andreas Plesch <andreasplesch at gmail.com>
> *Sent: *Tuesday, March 3, 2020 7:08 AM
> *To: *X3D Graphics public mailing list <x3d-public at web3d.org>
> *Subject: *[x3d-public] SFRotation constructor axis argument by reference
> orvalue ?
>
>
>
> In the ecmascript SAI, SFRotation has a constructor which has the
>
> rotation axis as a SFVec3f argument:
>
>
>
> new SFRotation ( SFVec3f axis, numeric  angle )
>
>
>
>
> https://www.web3d.org/documents/specifications/19777-1/V3.3/Part1/functions.html#SFRotation
>
> (Table 7.18, -url in the first sentence is off-)
>
>
>
> The question is when I make a new SFRotation and later change the
>
> SFVec3f which was used for the axis, does the previously constructed
>
> SFRotation also change ?
>
>
>
> axis = new SFVec3f ( 0, 0, 1 );
>
> rot = new SFRotation( axis, 3.14 );
>
> axis.y = 1.0
>
> axis.z = 0.0
>
> // rot.y is ?
>
> // constructed by value: rot.y = 0.0
>
> // constructed by reference: rot.y = 1.0
>
>
>
> I did not check the abstract SAI spec. for guidance so it is very
>
> possible I missed something.
>
>
>
> This is just an example. There are of course other constructors which
>
> use objects as parameters. It is also probably rare that a script
>
> would want to do this.
>
>
>
> It may depend on the scripting language. In ecmascript objects are
>
> passed by reference, you have to explicitly make a copy if you need
>
> it. This is for performance. So I would guess for ecmascript it should
>
> be rot.y = 1.0 .
>
>
>
> -Andreas
>
>
>
>
>
> --
>
> Andreas Plesch
>
> Waltham, MA 02453
>
>
>
> _______________________________________________
>
> x3d-public mailing list
>
> x3d-public at web3d.org
>
> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20200306/c0990362/attachment-0001.html>


More information about the x3d-public mailing list