- From: Ken Stacey <ken@svgmaker.com>
- Date: Tue, 29 Mar 2011 04:59:18 +1000
- To: www-svg@w3.org
Hi Shane,
On 28/03/2011, Shane Stephens wrote:
> The main problem with (MP * MR) * RT * AS is that container transforms
> are affected by the motionPath's auto-rotation. Hence if I do this:
>
> <rect width="20" height="20" transform="translate(100, 100) scale(2,1)">
> <animateMotion path="M 0 0 c 0 150 150 150 150 0" begin="0" dur="3"
> fill="freeze" rotate="auto"/>
> </rect>
>
> then I get a very different motion path to if I do this:
>
> <rect width="20" height="20" transform="translate(100, 100) scale(2,1)">
> <animateMotion path="M 0 0 c 0 150 150 150 150 0" begin="0" dur="3"
> fill="freeze"/>
> </rect>
A similar problem exists for RT * (MP * MR) * AS. If AS involves
translation then the apparent motion path between rotate="auto" and
rotate="none" is also different.
<rect width="20" height="20" transform="translate(100, 100) scale(2,1)">
<animateMotion path="M 0 0 c 0 150 150 150 150 0" begin="0" dur="3"
fill="freeze" rotate="auto"/>
<animateTransform attributeName="transform" type="translate"
from="0,20" to="0,-20" begin="0" dur="3" additive="sum"
fill="freeze"/>
</rect>
and
<rect width="20" height="20" transform="translate(100, 100) scale(2,1)">
<animateMotion path="M 0 0 c 0 150 150 150 150 0" begin="0" dur="3"
fill="freeze"/>
<animateTransform attributeName="transform" type="translate"
from="0,20" to="0,-20" begin="0" dur="3" additive="sum"
fill="freeze"/>
</rect>
If you allow animateMotion and animateTransform to be given equal
status, then the RT * (MP * MR) * AS scenario suffers the above apparent
motion path inconsistency.
That just leaves the specified behavior - RT * AS * (MP * MR) - as the
only approach which yields a consistent motion path between
rotate="auto" and rotate="none".
I can't say I like that behavior or that I would use it much (combine
animateMotion and animateTransform). But it is consistent!
Ken
Received on Monday, 28 March 2011 18:59:51 UTC