Transformation

Matrice

La matrice permet d'effectuer n'importe quelle transformation en appliquant sur les coordonnées de la forme d'origine 2 équations.

x=a×x+c×y+e

y=b×x+d×y+f

la fonction matrice possède 6 paramètres matrix(a b c d e f)

Transformation=[acebdf]

Translation

<rect transform="translate(30, 40)" />
<rect transform="matrix(1, 0, 0, 1, 30, 40)" />

Translation=[10300140]

x=x+30

y=y+40

Rotation

<rect transform="rotate(45)" />
<rect transform="matrix(cos(a), sin(a), -sin(a), cos(a), 0, 0)" />

Rotation=[cos(α)sin(α)0sin(α)cos(α)0]

x=x×cos(α)y×sin(α)

y=x×sin(α)+y×cos(α)

Échelle

<rect transform="scale(0.5)" />
<rec transform="matrix(0.5, 0, 0, 0.5, 0, 0)" />

Échelle=[0.50000.50]

x=x×0.5

y=y×0.5

Inclinaison ou cisaillement

<rect transform="skewX(-15)" />

Inclinaison=[1tan(α)0010]

x=x+y×tan(α)

y=y

Y

Inclinaison=[100tan(α)10]

x=x+y×tan(α)

y=y

Multiples transformations

Les transformations peuvent être combinés en les ajoutant les unes à la suite des autres.

Attention toutefois le système de coordonnées tout entier est transformé lui aussi

<rect transform="rotate(30) translate(0, 40) " />

Le déplacement en x de 40px s'effectue suivant le nouvel axe x qui a subit lui aussi une rotation de 30°

Multiplication de matrice

La multiplication de matrice s'effectue en

Resultant=[acebdf001]×[acebdf001]=[a×a+c×ba×c+c×da×e+c×f+eb×a+d×bb×c+d×db×e+d×f+f001]

Transformation=[cos(30)sin(30)0sin(30)cos(30)0001]×[1040010001]=[cos(30)sin(30)cos(30)×40sin(30)cos(30)sin(30)×40001]

Origine de la transformation

la propriété transform-origin permet de sélectionner l'origine de la transformation. C'est très utile dans le cas des rotations.

<rect x="50" y="25"  width="100" height="100"
transform="rotate(45)" transform-origin="100 75"/>

L'origine de la transformation est située au milieu du carré.

Projection isométrique