Paced animation turns out to be tricky for some types. Translation, scale, and rotation in particular are tricky because the pacing must take place independently for each component of the transformation.
If calcMode has the value paced, then a total “distance” for each component of the transformation is calculated (e.g., for a translate operation, a total distance is calculated for both tx and ty) consisting of the sum of the absolute values of the differences between each pair of values, and the animation runs to produce a constant distance movement for each individual component.
Consider this test graphic:
This example shows an example of paced rotation where the rotation angle and rotation center are animated with an
The expected result is that the animation of bottom smiley is a combination of the ‘paced rotation’ and ‘paced movement’. That is, the rotation is paced and so is the movement.
Batik provides an example of this behaviour. Opera 9.62 Linux maintains a paced rotation but not paced movement.
The correct behaviour proves more difficult to implement and requires architectural changes to our model. It’s perhaps for this reason that SVG 1.2 Tiny has simplified this area so that the components don’t need to be paced independently.
UPDATE: I’ve discussed this with several people from the SVG WG and elsewhere and there seems to be consensus that the behaviour defined in SVGT1.2 should be backported by implementers of SVG 1.1.