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

Yes, keysplines and direct function animation as proposed are rather different models though they both impart control over how an animation's values are transitioned over time. Keysplines is more concerned with the control over timing, while extensions to animatePath would be directly concerned with attribute values.

Cheers
David

-----Original Message-----
From: Dr. Olaf Hoffmann [mailto:Dr.O.Hoffmann@gmx.de] 
Sent: Tuesday, August 27, 2013 6:54 AM
To: www-svg@w3.org
Subject: 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 12:19:40 UTC