<div dir="auto"><div><br><div class="gmail_extra"><br><div class="gmail_quote">On Sep 30, 2017 7:49 PM, "<a href="mailto:vmarchetti@kshell.com">vmarchetti@kshell.com</a>" <<a href="mailto:vmarchetti@kshell.com">vmarchetti@kshell.com</a>> wrote:<br type="attribution"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="quoted-text"><br>
> On Sep 4, 2017, at 11:45 AM, Andreas Plesch <<a href="mailto:andreasplesch@gmail.com">andreasplesch@gmail.com</a>> wrote:<br>
><br>
</div><div class="quoted-text">> Resending this without html formatting to ensure proper transmission:<br>
><br>
> 30.2.4 defines how sequencer values are assigned to key intervals:<br>
><br>
> <a href="http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/utils.html#SequencingEvents" rel="noreferrer" target="_blank">http://www.web3d.org/<wbr>documents/specifications/<wbr>19775-1/V3.3/Part01/<wbr>components/utils.html#<wbr>SequencingEvents</a><br>
><br>
> (−infinity, t0), [t0, t1), [t1, t2), ... , [tn-1, +infinity)<br>
><br>
> are the intervals.<br>
><br>
> The square bracket [ seems to indicate that the limiting value does not belong to the interval. Is that the case ?<br>
<br>
</div><div class="quoted-text">I'm more used to the square bracket indicating a closed boundary, so that the for the interval denoted [a,b) ; x is in the interval a <= x < b<br>
so a is an element of the interval but b is not. Take the view that neither +infinity nor -infinity is a number; so (-infinity,a) is just shorthand for the set x < a, while [a,+infinity) is x >= a.<br>
</div></blockquote></div></div></div><div dir="auto"><br></div><div dir="auto">VRML97 seems to be when the bracket for the interval was introduced:</div><div dir="auto"><br></div><div dir="auto"><a href="http://tecfa.unige.ch/guides/vrml/vrml97/spec/part1/concepts.html#4.6.8">http://tecfa.unige.ch/guides/vrml/vrml97/spec/part1/concepts.html#4.6.8</a><br></div><div dir="auto"><br></div><div dir="auto">But it is not accompanied by an explanation. For interpolators it may not matter if the limit is included in the interval since the function is continuous.</div><div dir="auto"><br></div><div dir="auto">For sequencers, the function produces different values depending on from which side an interval limit is approached.</div><div dir="auto"><br></div><div dir="auto">I guess it is time to look up how various browsers behave at sequencer interval limits.</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="quoted-text"><br>
<br>
><br>
</div><div class="quoted-text">> For example, in the second interval [t0, t1) t0 does not belong to the interval but t1 does.<br>
> I have seen other notations where this interval would be described as ]t0, t1] which I would offer as a suggestion for an improvement.<br>
><br>
> The next question is about the piecewise function definition:<br>
><br>
> f(t) = v_n, if t_n <= t < t_(n-1)<br>
><br>
> Given that the keys t_i are given in a monotonically non-decreasing order, t_n is always larger (or equal to) than t_(n-1). Therefore, a t larger than t_n can never be smaller than t_(n-1). But this is the condition described in the function for value v_n. There is no possible t which can fulfill this condition.<br>
> Presumably this condition was designed as:<br>
><br>
> f(t) = v_n, if t_n >= t > t_(n-1)<br>
><br>
> If this is the case I can submit a spec. comment but I very much would appreciate additional eyes on that since it seems like a rather fundamental oversight. Did I overlook something ?<br>
><br>
<br>
</div><div class="quoted-text">My set of eyes agrees with yours that the formula form in the v 3.3 version of section 30.2.4 is incorrect, I would propose a corrected version:<br>
<br>
f(t)    =  v_i, if t_{i-1}   ≤ t < t_{i}  for  1 <= i < n-1<br>
        = v_0, if t < t_0,<br>
        = v_{n−1}, if t ≥ t_{n−1}<br>
<br>
</div></blockquote></div></div></div><div dir="auto"><br></div><div dir="auto">Looks good to me if [ is meant to include the limit in the interval.</div><div dir="auto"><br></div><div dir="auto">Andreas</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="quoted-text"><br>
<br>
<br>
<br>
</div><div class="quoted-text">> The Interpolator component spec. may provide additional insight:<br>
><br>
> <a href="http://www.web3d.org/documents/specifications/19775-1/V3.3/Part01/components/interp.html#Linearinterpolation" rel="noreferrer" target="_blank">http://www.web3d.org/<wbr>documents/specifications/<wbr>19775-1/V3.3/Part01/<wbr>components/interp.html#<wbr>Linearinterpolation</a><br>
><br>
> Here the equivalent piecewise function definition is:<br>
><br>
> f(t) = linterp(t, v_i, v_(i+1)),    if t_i <= t <= t_(i+1),<br>
><br>
> Note that the interval condition here is between t_i and t_(i+1) and not t_(i-1). So this is correct. But why change for Sequencer to t_(n-1) ? Perhaps there is a reason ?<br>
><br>
> Also note that i is used rather than n which is also more correct since n is reserved for the fixed, total number of keys, whereas i is the variable index depending on the whatever time t is considered.<br>
><br>
> -Andreas<br>
><br>
> --<br>
> Andreas Plesch<br>
> Waltham, MA 02453<br>
</div><div class="elided-text">> ______________________________<wbr>_________________<br>
> x3d-public mailing list<br>
> <a href="mailto:x3d-public@web3d.org">x3d-public@web3d.org</a><br>
> <a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" rel="noreferrer" target="_blank">http://web3d.org/mailman/<wbr>listinfo/x3d-public_web3d.org</a><br>
<br>
</div></blockquote></div><br></div></div></div>