<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html;
      charset=windows-1252">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <div class="moz-cite-prefix">Hi Albert et al,</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">Another option (at least for
      user-friendly representations) would be to use converter symbology
      in the field definition. For example, right now rotations are
      represented by</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix"><i><tt>normalized-vector angle</tt></i></div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">where <i><tt>normalized-vector</tt></i>
      is a 3-space vector that has been normalized that represents the
      axis of rotation; and <tt><i>angle</i></tt> is the angle of
      rotation.</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">A set of symbolic converter functions
      could be specified that allowed the user to specify the rotation
      is a number of different manners. These functions would accept the
      rotation values and convert them into a standardized internal form
      (or default input form, depending on the particular browser).<br>
    </div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">For example, converter functions could
      be defined for Axis-Angle (default), Euler, and Quaternion. The
      rotation formats would then be equivalent.</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix"><tt>    AXIS-ANGLE (normalized-vector
        angle)</tt></div>
    <div class="moz-cite-prefix"><tt>    EULER (angleX angleY angleZ)</tt></div>
    <div class="moz-cite-prefix"><tt>    QUATERNION (qw qx qy qz)</tt></div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">All would be legal rotation field
      values and would convert to the same internal format.</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">This would work when the X3D encoding
      was string based (XML or Classic VRML). The binary encoding would
      need to process the input (which converts do now) to a
      standard/default format.<br>
    </div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">This allows the user interface encoding
      to specify something that is clear and nice to the user; while
      maintaining a standardized internal format. Note that the function
      name is part of the value, so changing the value would require a
      function (or use of the default).</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">I implemented this in XSeen, though it
      hasn't documented yet. In addition to rotations, I use something
      similar for colors (fractional, value (decimal), byte (hex),
      labeled (white, red, green, etc.)). For both of these, I drew my
      inspiration from CSS and their specification of colors and other
      data values.</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">Essentially all of the fundamentals of
      X3D were taken from VRML, which was taken from OpenGL pre-1997
      with a number of features added from those long-ago years.
      Computation was expensive then so user-niceties were sometimes
      compromised in favor of efficiencies.</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix"><br>
      Leonard Daly<br>
    </div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix"><br>
    </div>
    <blockquote type="cite"
cite="mid:AM0PR0402MB380951C0F0A71821C6738C61DA890@AM0PR0402MB3809.eurprd04.prod.outlook.com">
      <meta http-equiv="Content-Type" content="text/html;
        charset=windows-1252">
      <style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
      <div style="color:rgb(0,0,0);
        font-family:Calibri,Helvetica,sans-serif; font-size:12pt">
        <span><span style="display:inline!important;
            background-color:rgb(255,255,255); font-size-adjust:none">"So
            the term euler would replace the term rotation and also be a
            different datatype than rotation"</span></span></div>
      <div style="color:rgb(0,0,0);
        font-family:Calibri,Helvetica,sans-serif; font-size:12pt">
        <span><br>
        </span></div>
      <div style="color:rgb(0,0,0);
        font-family:Calibri,Helvetica,sans-serif; font-size:12pt">
        <span>Yes, 'euler' would be complementary, an alternative way,
          to set the initial orientation. To avoid Gimbals lock, one
          should of course use quaternions for dynamic rotations.</span></div>
      <div style="color:rgb(0,0,0);
        font-family:Calibri,Helvetica,sans-serif; font-size:12pt">
        <span><br>
        </span></div>
      <div style="color:rgb(0,0,0);
        font-family:Calibri,Helvetica,sans-serif; font-size:12pt">
        I think t<span>he sequence of the individual numbers for the
          angles and their sign should correspond to the x y z axes as
          defined by X3D. I don't really have an opinion on the yaw,
          pitch roll terms: -z seems a natural gaze direction for this. </span></div>
      <div style="color:rgb(0,0,0);
        font-family:Calibri,Helvetica,sans-serif; font-size:12pt">
        <span><br>
        </span></div>
      <div style="color:rgb(0,0,0);
        font-family:Calibri,Helvetica,sans-serif; font-size:12pt">
        <span>Albert Jan  Wonnink </span></div>
      <div>
        <div style="color:rgb(0,0,0);
          font-family:Calibri,Helvetica,sans-serif; font-size:12pt">
          <br>
        </div>
        <hr tabindex="-1" style="display:inline-block; width:98%">
        <div id="divRplyFwdMsg" dir="ltr"><font style="font-size:11pt"
            face="Calibri, sans-serif" color="#000000"><b>Van:</b>
            x3d-public <a class="moz-txt-link-rfc2396E" href="mailto:x3d-public-bounces@web3d.org"><x3d-public-bounces@web3d.org></a> namens
            <a class="moz-txt-link-abbreviated" href="mailto:x3d-public-request@web3d.org">x3d-public-request@web3d.org</a>
            <a class="moz-txt-link-rfc2396E" href="mailto:x3d-public-request@web3d.org"><x3d-public-request@web3d.org></a><br>
            <b>Verzonden:</b> maandag 7 januari 2019 14:44<br>
            <b>Aan:</b> <a class="moz-txt-link-abbreviated" href="mailto:x3d-public@web3d.org">x3d-public@web3d.org</a><br>
            <b>Onderwerp:</b> x3d-public Digest, Vol 118, Issue 15</font>
          <div> </div>
        </div>
        <div class="BodyFragment"><font size="2"><span
              style="font-size:11pt">
              <div class="PlainText">Send x3d-public mailing list
                submissions to<br>
                        <a class="moz-txt-link-abbreviated" href="mailto:x3d-public@web3d.org">x3d-public@web3d.org</a><br>
                <br>
                To subscribe or unsubscribe via the World Wide Web,
                visit<br>
                        <a
                  href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org"
                  moz-do-not-send="true">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>
                or, via email, send a message with subject or body
                'help' to<br>
                        <a class="moz-txt-link-abbreviated" href="mailto:x3d-public-request@web3d.org">x3d-public-request@web3d.org</a><br>
                <br>
                You can reach the person managing the list at<br>
                        <a class="moz-txt-link-abbreviated" href="mailto:x3d-public-owner@web3d.org">x3d-public-owner@web3d.org</a><br>
                <br>
                When replying, please edit your Subject line so it is
                more specific<br>
                than "Re: Contents of x3d-public digest..."<br>
                <br>
                <br>
                Today's Topics:<br>
                <br>
                   1. Re: Euler rotation (Joseph D Williams)<br>
                <br>
                <br>
----------------------------------------------------------------------<br>
                <br>
                Message: 1<br>
                Date: Mon, 7 Jan 2019 05:43:28 -0800<br>
                From: Joseph D Williams <a class="moz-txt-link-rfc2396E" href="mailto:joedwil@earthlink.net"><joedwil@earthlink.net></a><br>
                To: Albert Jan Wonnink <a class="moz-txt-link-rfc2396E" href="mailto:awonnink@hotmail.com"><awonnink@hotmail.com></a>, 
                John Carlson<br>
                        <a class="moz-txt-link-rfc2396E" href="mailto:yottzumm@gmail.com"><yottzumm@gmail.com></a>, 
                <a class="moz-txt-link-rfc2396E" href="mailto:vmarchetti@kshell.com">"vmarchetti@kshell.com"</a><br>
                        <a class="moz-txt-link-rfc2396E" href="mailto:vmarchetti@kshell.com"><vmarchetti@kshell.com></a>,  X3D-Public
                <a class="moz-txt-link-rfc2396E" href="mailto:x3d-public@web3d.org"><x3d-public@web3d.org></a><br>
                Subject: Re: [x3d-public] Euler rotation<br>
                Message-ID:
                <a class="moz-txt-link-rfc2396E" href="mailto:E1ggVBd-0003vy-Se@elasmtp-curtail.atl.sa.earthlink.net"><E1ggVBd-0003vy-Se@elasmtp-curtail.atl.sa.earthlink.net></a><br>
                Content-Type: text/plain; charset="utf-8"<br>
                <br>
                From: Albert Jan Wonnink<br>
                Sent: Monday, January 7, 2019 2:03 AM<br>
                To: John Carlson; Joseph D Williams;
                <a class="moz-txt-link-abbreviated" href="mailto:vmarchetti@kshell.com">vmarchetti@kshell.com</a>; X3D-Public<br>
                Subject: Re: [x3d-public] Euler rotation<br>
                <br>
                ? Hi Joseph,<br>
                <br>
                ? Thank you for your reply. Just to be sure: the context
                I meant to discuss is about having a convenient
                attribute in the declarative syntax, say 'euler', to set
                the initial orientation of the transform, so anyone can
                use either 'rotation' or 'euler'.<br>
                ? <br>
                ? <transform euler="20 40 10" ><br>
                ? <br>
                <br>
                Fine, Albert, <br>
                So the term euler would replace the term rotation and
                also be a different datatype than rotation?
                <br>
                The important technical and usage detail is accepting
                quaternions since probably the preferred internal form.<br>
                The main thing about degrees is that they won?t always
                work. That is why Euler moved on. If you are making
                video frames, then maybe ok to author or capture frame
                data in degrees but when you want to have some realtime
                or variabletime fun, then interpolation may not operate
                as expected or at all. <br>
                <br>
                ? So I interpreted Vince's $yaw, $pitch and $roll to be
                just placeholders, for manual substitution.?<br>
                <br>
                Thoughts about the use of pitch yaw roll names for the x
                y z rotation/orientation axes?
                <br>
                Just as a memory aid of course. <br>
                I described it as I found it in viewpoint where the
                default is gaze -z and hanim joint animations where the
                default is gaze +z.
                <br>
                <br>
                ? You are right using this with either radians or
                degrees would be equally simple.?<br>
                <br>
                Most simple and reliable using the x3d form thinking
                with radians, no doubt.  The x3d recognition of
                quaternions would improve x3d capability by being even
                more simple and reliable and also giving improved level
                of validation for rotation and orientation values.
                <br>
                 <br>
                <br>
                ? Regards,<br>
                ? Albert Jan?<br>
                <br>
                Thanks for the thoughts,  <br>
                Joe<br>
                <br>
                ?<br>
                <br>
                ??<br>
                From: Joseph D Williams<br>
                Sent: Sunday, January 6, 2019 7:20 PM<br>
                To: Albert Jan Wonnink; <a class="moz-txt-link-abbreviated" href="mailto:vmarchetti@kshell.com">vmarchetti@kshell.com</a>;
                X3D-Public<br>
                Subject: Re: [x3d-public] Euler rotation<br>
                ?<br>
                Hi Albert and All, <br>
                When you use euler (or Tait-Bryan) angles for a while
                you will find that you get problems.
                <br>
                Actually there is plenty of writing about the details
                maybe even in the x3d or hanim archives and widely on
                the web.<br>
                ?<br>
                In addition, when you create or edit the things much
                then you will find it is actually a lot easier to use
                quats or axis-angle radians. In general, for degrees,
                maybe your editing system may offer as a learning tool
                if radian is really an elementary block to learning, but
                really, never in the user code due to misleading
                simplicity and what ?cha finally gonna tell ?em when the
                gimbals lock?
                <br>
                ?<br>
                ? <Transform DEF="yaw-rotation" rotation="0 0 1
                $yaw"><br>
                ? <Transform DEF="pitch-rotation" rotation="0 1 0
                $pitch"><br>
                ? <Transform DEF="roll-rotation" rotation="1 0 0
                $roll"><br>
                ?<br>
                Besides the fact that a variable is not allowed there <br>
                (maybe use a prototype if you need a variable?) <br>
                I don't think your naming of yaw and pitch and roll is
                reasonable for x3d. <br>
                ?<br>
                For default transform rotation 0 0 1 0, sit on it and
                face +z and find +y is up and +x is left.
                <br>
                then fly the thing using pitch and yaw and roll.<br>
                The x3d axis-angle parameters are most likely pitch yaw
                roll then the scale, <br>
                and I think the same order for quaternions, except where
                the 'scale' is placed and the special limits for values.
                <br>
                ?<br>
                Why not try the following:<br>
                ?<br>
                DEF Pitch OrientationInterpolator { <br>
                key [ 0, 0.25 0.5, 0.75 1 ] <br>
                keyValue [ 0 0 1 0, 1 0 0 1.5, 0 0 1 0, -1 0 0 1.5, 0 0
                1 0 ] }<br>
                ?<br>
                DEF Yaw OrientationInterpolator { key [ 0, 0.25 0.5,
                0.75 1 ] <br>
                keyValue [ 0 0 1 0, 0 1 0 1.5, 0 0 1 0, 0 -1 0 1.5, 0 0
                1 0 ] }<br>
                ?<br>
                DEF Roll OrientationInterpolator { <br>
                key [ 0, 0.25 0.5, 0.75 1 ] <br>
                keyValue [ 0 0 1 0, 0 0 1 1.5, 0 0 1 0, 0 0 1 1.5, 0 0 1
                0 ] }<br>
                ?<br>
                Thanks and Best,<br>
                Joe<br>
                ?<br>
                From: Albert Jan Wonnink<br>
                Sent: Sunday, January 6, 2019 2:25 PM<br>
                To: <a class="moz-txt-link-abbreviated" href="mailto:vmarchetti@kshell.com">vmarchetti@kshell.com</a>; X3D-Public<br>
                Subject: Re: [x3d-public] Euler rotation<br>
                ?<br>
                Thanks Vince, for your reply.?<br>
                ?<br>
                As long as the angles and X3D code is? generated by code
                one can of course easily calculate the individual
                parameters for a quaternion. But during the testing of
                our experimental Unity based browser, and preparing
                scenes for that, I found it very easy to extend the
                transform specification with a degree-based Euler
                attribute (Tait-Bryan would also have worked).<br>
                ?<br>
                The current system still makes it relatively difficult
                to manually apply an angle of the most used fractions of
                PI, doesn't it?<br>
                ?<br>
                I guess this issue must have been discussed in one of
                the early days of the X3D specification. But it seems to
                me a lost chance to make it more convenient.<br>
                ?<br>
                Regards<br>
                ?<br>
                ?<br>
                Albert Jan Wonnink<br>
                ?<br>
                ?<br>
                <br>
                Van: <a class="moz-txt-link-abbreviated" href="mailto:vmarchetti@kshell.com">vmarchetti@kshell.com</a> <a class="moz-txt-link-rfc2396E" href="mailto:vmarchetti@kshell.com"><vmarchetti@kshell.com></a><br>
                Verzonden: zondag 6 januari 2019 22:49<br>
                Aan: Albert Jan Wonnink; X3D-Public<br>
                Onderwerp: Re: [x3d-public] Euler rotation <br>
                ?<br>
                There is no single node Euler angle alternative
                representation of a rotation transform defined in the
                current (v 3.3) X3D standard.<br>
                ?<br>
                You can get an easier to edit representation of Euler
                angle rotation (specifically the Tait-Bryan
angles,?<a class="moz-txt-link-freetext" href="https://en.wikipedia.org/wiki/Euler_angles#Tait%E2%80%93Bryan_angles">https://en.wikipedia.org/wiki/Euler_angles#Tait%E2%80%93Bryan_angles</a>,
                commonly used for vehicle oriented<br>
                with respect to the horizon, by nesting 3 Transforms:<br>
                ?<br>
                <Transform DEF="yaw-rotation" rotation="0 0 1
                $yaw"><br>
                <Transform DEF="pitch-rotation" rotation="0 1 0
                $pitch"><br>
                <Transform DEF="roll-rotation" rotation="1 0 0
                $roll"><br>
                <!-- put vehicle model here --><br>
                <Shape>...</Shape><br>
                </Transform><br>
                </Transform><br>
                </Transform><br>
                ?<br>
                where for $yaw, $pitch, $roll you need to substitute the
                numerical value of the rotation angle in radians.<br>
                ?<br>
                ?<br>
                Vince Marchetti<br>
                ?<br>
                On Jan 6, 2019, at 12:53 PM, Albert Jan Wonnink
                <a class="moz-txt-link-rfc2396E" href="mailto:awonnink@hotmail.com"><awonnink@hotmail.com></a> wrote:<br>
                ?<br>
                Is there, or should there be, an Euler alternative for
                the transform 'rotation' property? This makes direct x3d
                code editing much easier.<br>
                ?<br>
                Regards,<br>
                ?<br>
                ?<br>
                Albert Jan Wonnink?<br>
                _______________________________________________<br>
                x3d-public mailing list<br>
                <a class="moz-txt-link-abbreviated" href="mailto:x3d-public@web3d.org">x3d-public@web3d.org</a><br>
                <a
                  href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org"
                  moz-do-not-send="true">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>
                ?<br>
                ?<br>
                ?<br>
                <br>
                -------------- next part --------------<br>
                An HTML attachment was scrubbed...<br>
                URL: <<a
href="http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20190107/b500d676/attachment.html"
                  moz-do-not-send="true">http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20190107/b500d676/attachment.html</a>><br>
                -------------- next part --------------<br>
                A non-text attachment was scrubbed...<br>
                Name: 9B68D1D68F1247D1A07F4C368D0D7215.png<br>
                Type: image/png<br>
                Size: 156 bytes<br>
                Desc: not available<br>
                URL: <<a
href="http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20190107/b500d676/attachment.png"
                  moz-do-not-send="true">http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20190107/b500d676/attachment.png</a>><br>
                <br>
                ------------------------------<br>
                <br>
                Subject: Digest Footer<br>
                <br>
                _______________________________________________<br>
                x3d-public mailing list<br>
                <a class="moz-txt-link-abbreviated" href="mailto:x3d-public@web3d.org">x3d-public@web3d.org</a><br>
                <a
                  href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org"
                  moz-do-not-send="true">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>
                <br>
                <br>
                ------------------------------<br>
                <br>
                End of x3d-public Digest, Vol 118, Issue 15<br>
                *******************************************<br>
              </div>
            </span></font></div>
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
x3d-public mailing list
<a class="moz-txt-link-abbreviated" href="mailto:x3d-public@web3d.org">x3d-public@web3d.org</a>
<a class="moz-txt-link-freetext" href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a>
</pre>
    </blockquote>
    <p><br>
    </p>
    <div class="moz-signature">-- <br>
      <font class="tahoma,arial,helvetica san serif" color="#333366">
        <font size="+1"><b>Leonard Daly</b></font><br>
        3D Systems & Cloud Consultant<br>
        LA ACM SIGGRAPH Past Chair<br>
        President, Daly Realism - <i>Creating the Future</i>
      </font></div>
  </body>
</html>