Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何计算SVG转换的旋转/缩放轴心坐标(I';m使用Raphael.js)?_Javascript_Svg_Raphael - Fatal编程技术网

Javascript 如何计算SVG转换的旋转/缩放轴心坐标(I';m使用Raphael.js)?

Javascript 如何计算SVG转换的旋转/缩放轴心坐标(I';m使用Raphael.js)?,javascript,svg,raphael,Javascript,Svg,Raphael,我很难理解如何使用Raphael.js计算SVG转换的旋转/缩放轴坐标(例如旋转点)。简而言之,如果应用诸如image.transform(“S1.5R45”)之类的变换,这些变换将应用于默认旋转和缩放轴,我不确定如何计算 举个例子,我放了一个fiddle(),其目的是在两个视口中都有完全相同的输出,用于对图像对象进行几次变换。在第一个视口中,我没有指定旋转点,但在第二个视口中,我指定了旋转点。然而,我不能得到同样的结果。我需要的是输入第二个视口的旋转坐标,以便输出与第一个视口相同 请提供帮助。

我很难理解如何使用Raphael.js计算SVG转换的旋转/缩放轴坐标(例如旋转点)。简而言之,如果应用诸如
image.transform(“S1.5R45”)
之类的变换,这些变换将应用于默认旋转和缩放轴,我不确定如何计算

举个例子,我放了一个fiddle(),其目的是在两个视口中都有完全相同的输出,用于对图像对象进行几次变换。在第一个视口中,我没有指定旋转点,但在第二个视口中,我指定了旋转点。然而,我不能得到同样的结果。我需要的是输入第二个视口的旋转坐标,以便输出与第一个视口相同


请提供帮助。

未指定时,轴是元素的中心。 在这里,您必须注意应用于图像的位置以及将要进行的缩放。因为在这种情况下,缩放是相对于图像左上角的,所以我们可以将中心坐标乘以它

// Compute rotation pivot coordinates
var scaling = 1.5;
rx = (x + (img_width / 2)) * scaling;
ry = (y + (img_height / 2)) * scaling;

// Apply transformations
image1.transform("S1.5,1.5,0,0R45");
image2.transform("S1.5,1.5,0,0R45,"+rx+","+ry);

我不太明白这个问题。您是否想知道要指定哪个旋转点以获得与未指定的旋转点相同的结果?这正是我想要的答案。我已经找了一段时间了。非常感谢。我遇到了不少麻烦。在我正在构建的应用程序中,用户可以无限次缩放/旋转添加到视口中的对象(如图像,如小提琴中的图像)。我逐渐意识到,我无法将一个对象重置为其初始状态,以便应用不同的转换而不与以前的转换重叠。这意味着,在最后一次转换(在小提琴中)之后,如果我重复相同的代码序列,对象的位置和外观会发生变化。这是为什么?我如何解决?请帮助。我打开了一个不同的主题:。如果你有时间的话,我非常感谢你在这方面的意见,我已经拔头发两周了。