1

基于另一个线程(带有集合的 Raphaeljs 转换),我使用集合中的集合玩过继承的转换。

我试图将一组放在另一组中,每组都将应用 45° 旋转。我预计,这两个旋转总和为 90° 旋转。那工作正常。

但是两个旋转都相对于集合中每个单个对象的中心点。我怎样才能实现,旋转是相对于集合的中心点?这可能吗?

澄清我的意思。如果我在一个集合中有两个矩形并且我在集合上应用一个旋转,我希望这些矩形相对于它们自身保持相同的位置和角度,因为它们都围绕它们之间的轴旋转,在中间的集合。所以他们必须额外翻译成旋转......

我怎样才能做到这一点?

jsfiddle:http: //jsfiddle.net/bBy9b/

var paper = Raphael(0,0,500,500);    

var a = paper.rect(10,10,50,10);
var b = paper.rect(10,30,50,10)
var c = paper.rect(10,50,50,10);
var d = paper.rect(10,70,50,10);

var set = paper.set()

set.push(a);

set.transform("r-45");

var rootSet = paper.set();
rootSet.push(set, b, c);

rootSet.transform("...r-45");

感谢您提前提供帮助!

4

1 回答 1

1

r 命令采用两个额外的可选参数,它们是旋转的中心点。所以看起来你想要这样的东西:

window.onload = function(){
    var paper = Raphael(0,0,500,500);    

    var a = paper.rect(10,10,50,10);
    var b = paper.rect(10,30,50,10)
    var c = paper.rect(10,50,50,10);
    var d = paper.rect(10,70,50,10);

    var set = paper.set()

    set.push(a);

    set.transform("...r-45,40,45");

    var rootSet = paper.set();
    rootSet.push(set, b, c);

    rootSet.transform("...r-45,40,45");
}
于 2013-08-24T10:17:16.177 回答