[x3d-public] SFRotation constructor axis argument by reference or value ?
John Carlson
yottzumm at gmail.com
Tue Mar 3 09:57:56 PST 2020
https://holub.com/patterns/book.pdf Starting on page 24, see why we did
the wrong thing with setters/getters in X3DJSAIL!
John
On Tue, Mar 3, 2020 at 11:50 AM John Carlson <yottzumm at gmail.com> wrote:
> 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/692e4dbb/attachment.html>
More information about the x3d-public
mailing list