1

私はフォーラムやもちろんここでたくさん検索しましたが、決定的な解決策は見つかりませんでした. 同様の問題が見つかりましたが、機能しません。

四角形を描くと、Inkscape は正確な x と y の位置を教えてくれます。しかし、回転すると、x と y の位置が理解できない値に変わります。例えば:

<rect
   id="rect2985"
   width="100"
   height="100"
   x="100"
   y="100" />

それは問題ありませんが、回転するときは、「変換」属性と x、y を見てください。

<rect
   id="rect2985"
   width="100"
   height="100"
   x="4.9038105"
   y="154.90381"
   transform="matrix(0.8660254,-0.5,0.5,0.8660254,0,0)" />

x=4.9... および y=154.9... または行列値から x=100 y=100 を取得するにはどうすれば計算できますか?

4

1 に答える 1

1

値を保持したい場合はx=100 y=100、別の変換行列を計算する必要があります。正方形の中心での回転は、3 つの変換に相当します。

 translate(-(x + centerX), -(y + centerY))
 rotate(angle)
 translate(x + centerX, y + centerY) 

あなたの場合、変換属性は次のようになります。

 transform = "translate(150, 150) rotate(45) translate(-150, -150)"

あなたが数学に興味があるのか​​ 、それとも単に変換行列が必要なのかわかりません。最終的なマトリックス値だけが必要な場合は、次のフィドルを見ることができます: http://jsfiddle.net/mihaifm/PQvBj/

以前getCTMはマトリックスa,b,c,d,e,f値を取得していました。

最終結果 (45 度の回転を想定):

<rect
   id="rect4"
   width="100"
   height="100"
   x="100"
   y="100"
   transform="matrix(0.7071067811865476, 0.7071067811865475, -0.7071067811865475, 0.7071067811865476, 150, -62.132034355964265)" />
于 2012-11-06T20:52:55.143 に答える