Re: SVG animateMotion specification clarification request

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