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

John Carlson yottzumm at gmail.com
Tue Mar 3 09:50:49 PST 2020


Holub recommends Import/Export pattern to deal with this.

https://www.google.com/search?rlz=1CDGOYI_enUS806US806&hl=en-US&sxsrf=ALeKk03lZvDvnXRfQAz68xpLTmhxWv5CTA%3A1583257662688&ei=PpheXs7CKdH3-gSqv4awBg&q=design+patterns+by+looking+at+code&oq=design+patterns+by+looking+at+code&gs_l=mobile-gws-wiz-serp.12...0.0..6387...0.0..0.0.0.......0.2_4M6EKNmzE


On Tue, Mar 3, 2020 at 11:24 AM Don Brutzman <brutzman at nps.edu> wrote:

> [Dick and I are on a teleconference]
>
> The way that you have written this, it looks to us like each object is
> independent.
>
> Thus if you create a 'rot' SFRotation object, its values are passed by
> value only change if they are directly modified.
>
> This seems to be a straightforward case of object encapsulation.  For
> those interested in learning more, general information:
>
> * Encapsulation (computer programming)
>    https://en.wikipedia.org/wiki/Encapsulation_(computer_programming)
>
>
> On 3/3/2020 7:06 AM, Andreas Plesch wrote:
> > 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
>
>
> all the best, Don
> --
> Don Brutzman  Naval Postgraduate School, Code USW/Br
> brutzman at nps.edu
> Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149
> X3D graphics, virtual worlds, navy robotics
> http://faculty.nps.edu/brutzman
>
> _______________________________________________
> 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/20200303/0e97ddf7/attachment.html>


More information about the x3d-public mailing list