curves for animation interpolation (previously: RE: Minutes, 22 August 2013 SVG WG telcon)

Hello,

David Dailey:
>The curves that are drawable through keysplines are a bit unwieldy and it 
>seems to take folks a long time to wrap their heads around their use.  Being 
>able to say: here is a curve; dear SVG, please use it, just makes sense.


The animation splines represent cubic Bezier curves - because linear and
quadratic Bezier curves can be represented by cubic curves as well, this 
covers already most curves, which can be drawn in SVG, an exception is
the elliptical arc including circles.
In most cases there is maybe no big difference in calculating such a path
or calculation the keyTimes and keySplines instead.

The animation task is to present a time (t) dependent attribute (a):  a(t).
The main problems with the current keyTimes/keySplines solution are:
a) One has to prepare the values list and keyTimes list in such a way, that 
all extremal values of a(t) are in the list
b) To get the right keyTimes and keySplines for an approximation of a(t) can 
result in a larger amount of mathematical/numerial computation 

A good example to get an impression, what one has to do is to calculate
proper values, keyTimes and keySplines lists for a harmonic oscillator
(a, b, c are parameters):
cx(t) = a sin(t +c)
cy(t) = b cos(t +c)
(for a=b this can be simply compared with a rotation with animateTransform,
therefore simple to check, how good the approximation is).
An advanced example would be for example the rotation of a planet around 
a sun on an elliptical orbit (this has different timing then the harmonic 
oscillator above, but there is already an analytical solution for the 
approximation with keyTimes available in theoretical physics, therefore
in this case one has a representation of (cx,cy,t)(s) with s the interpolation 
parameter instead of the time directly).

The question is, is there a method to get a good animation approximation of
an a(t) in a simpler way with less effort for the user, if only the a(t) is 
known? Is there a simpler way to provide information like  (cx,cy,t)(s)?
Does this suggested animatePath really solve such problems to get
an acceptable animation function? 
How is the timing controlled and is it really easier to approximate such an
a(t) with this method or should there be a more simpler approach for authors 
to provide for example a function a(t) directly to indicate the intended
animation effect?
To provide it directly with a formula would be an approach for better 
accessibility as well, because such a formula provides good textual
information compared to lists of computed numerical values.
But to provide a formula directly could be a challenge for the 
interpretation by viewers.

Olaf

Received on Tuesday, 27 August 2013 10:55:34 UTC