旋转顶部和左侧坐标

时间:2016-03-31 10:01:47

标签: javascript

我想计算特定点(顶部和左侧)的旋转。这有点复杂。我知道原来的顶部和左边。然后添加缩放,然后计算旋转。

此刻我这样做。 (原始左:-350,原始顶部:-10,f1_scale:0.544444,旋转角度:-30deg)

function sin(x) {
  return Math.sin(x / 180 * Math.PI);
}

function cos(x) {
  return Math.cos(x / 180 * Math.PI);
}

function rotate(x, y, a) {
  var x2 = cos(a) * x - sin(a) * y;
  var y2 = sin(a) * x - cos(a) * y;
  return [x2, y2];
}

var scaledLeft = -350 * f1_scale;
var scaledTop = -10 * f1_scale;

var rotateOut = rotate(scaledLeft, scaledTop,-30);

这适用于左(x)坐标,但y坐标是偏离的。

有人可以看到我做错了或者有人已经尝过这个吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

你需要理解它背后的数学。首先,请查看此图片http://prntscr.com/amd2it,其中:

  1. (x0, y0)是起点的坐标
  2. (x1, y1)是轮换后的坐标
  3. (p, q)是旋转点的坐标
  4. 要查找(x1, y1),您需要知道(p, q)的值,以及(x0,y0)和角度a。如果我们应用基本几何,我们得到这个:

    sin(a)( q - y0 ) = q - y1
    y1 = q - sin(a)( q - y0 )
    

    cos(a)( p - x0 ) = p - x1
    x1 = p - cos(a)( p - x0 )
    

    或者你可以使用毕达哥拉斯定理作为第二个值。

    当我们理解这一点时,我认为将其翻译成代码并不会有问题。