私は拡大縮小しようとしているし、三角形を回転させて、スナップSVGの所定のポイントにそれを翻訳しています。
私は円のようなものを作ることができるので、中心ではなくその上を三角を回転させたいと思います。
私はまずスケールを調整し、次に回転して後で翻訳すると考えました。スナップSVG回転&スケール
var t = new Snap.Matrix();
t.scale(0.5);
t.rotate(45, bbox.cx, (bbox.cy-(bbox.h/2)));
しかし、スケールとローテーションはどうにかして少し離れています。
は、私が発見し、それを更新jsfiddleを再利用するので、あなたは、私がしようものを見ることができます:
http://jsfiddle.net/AGq9X/477/
何とかbbox.cxとbbox.cyが三角形の中心にありません。
私のローカルセットアップではそうです。
奇妙なことには、スケール変換なしの回転だけがうまく機能しますが、 ですが、スケーリングとローテーションは常にy軸上で少しずれているようですが、三角形は回転ポイントにとどまっていません。
どのように私はそれを修正することができますか?
EDIT:
私は解決策を見つけた [OK]を、LANのおかげで、あなたは正しかった、scaleingの中心は重要であり、
は、私はそれがオブジェクトの中心をuseingたと思ったが、それは左上隅ました。私はそれ
を調整し、今ではgreateの作品:
var bbox = obj.getBBox(); //get coords etc. of triangle object
var t = new Snap.Matrix();
var offset = (bbox.cy+(bbox.h)) - centerY; //translate Y to center,
//depends on scaleing factor (0.5 = bbox.h, 0.25 = bbox.h*2)
t.scale(0.5, 0.5, bbox.cx, (bbox.cy+(bbox.h/2))); //scale object
t.translate(0,-offset); //translate to center
t.rotate(45, bbox.cx, (bbox.cy+(bbox.h/2))); //rotate object
obj.transform(t); //apply transformation to object
EDIT2:
は、私はあなたがそれらを使用すると、新しい変換を使用するたびに適用する必要はありませんので、変換を保存する方法を知りたいと思いました。イアンは古い変換を得るためにそうようなelement.transform()
を使用することをお勧めします:
element.transform(element.transform() + 's2,2')
よう
何か。私はあなたのスケーリングセンターで何かがうんざりしていると思うし、三角形の中心を取ってそれをスケーリングしているかもしれない。三角形の中心が縮尺変更された後には望んでいないでしょうか(この場合のように中心から縮尺されていない場合)。また、回転後にスケーリングで再生することもできます。 – Ian
私は三角形を拡大し、次にimagenにピンを1本入れてほしい – Chill3er
*上記のコメントにごめんなさい。 Imagenでは、三角形の1つの角にピンを置き、それを拡大縮小して回転させるので、固定された1つの角がそのまま残るはずです。しかし、それはどういうわけか "固定"と位置を変えていない。私は回転の前にスケールが来ることが分かった:[Snap Matrix](http://svg.dabbles.info/snaptut-matrix)私は回転/スケールコーナーを固定しておくことができるように、何を変更する必要があるのか分からない。 – Chill3er