Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to apply transform matrix to path coordinates in Raphael JS 2?

I want to apply or 'bake' a transformation of several paths in Raphael JS 2, so that I can then combine them into one single path.

Here is an example path, where I would like the "transform" attribute to be applied to all the "d" coordinates.

<path style="" fill="#000000" stroke="none" d="M150,-265C182,-275,171,-220,180,-194L178,-194C181,-192,180,-185,181,-180C211,-169,282,-173,306,-166C308,-169,316,-171,315,-165C268,-157,225,-148,184,-137C188,-118,186,-96,190,-79L282,-131C289,-131,296,-135,297,-126C293,-118,271,-105,236,-80C190,-48,155,-20,125,-6C112,-15,115,-34,111,-51C121,-70,108,-107,107,-133C70,-132,-5,-126,0,-157C18,-170,39,-181,64,-191C75,-190,92,-181,100,-185C99,-198,95,-211,89,-225Z" transform="matrix(0.1389, 0, 0, 0.1389, 291.91, 235.465)" stroke-width="7.199999999999999">

I understand that the svg-edit framework can convert path coordinates to absolute positions, and remove the transform matrix in the process.

Some related questions, which I couldn't get my answer from:

  • Baking transforms into SVG Path Element commands
  • How to apply a transformation matrix?
like image 304
Jedateach Avatar asked Dec 02 '11 00:12

Jedateach


1 Answers

Here's a jsFiddle that applies all the transforms for you: http://jsfiddle.net/ecmanaut/cFSjt/

It's possible that Raphael exposes some or all of the tools I've filled in myself, but if not, these do the trick nicely. If your needs cover more non-path elements too (like groups, rects, circles, ellipses, and so on), first convert them to path elements (using pathify, for instance).

like image 126
ecmanaut Avatar answered Oct 11 '22 19:10

ecmanaut