我正在围绕它的中心旋转一个 jCanvas 层,但之后我需要计算它的新 x 和 y 坐标。我正在使用下面的代码,尽管它返回错误的值:
var rotation = layer.rotate * Math.PI / 180;
//object's middle
var middleX = layer.x + layer.width / 2;
var middleY = layer.y + layer.height / 2;
//new coords (wrong)
var newX = middleX * Math.cos(rotation) - middleY * Math.sin(rotation);
var newY = middleX * Math.sin(rotation) + middleY * Math.cos(rotation);
对于简单的旋转 - 例如 90 度,我可以像这样得到新角的 x 和 y:
var middleX = layer.x + layer.width / 2;
var middleY = layer.y + layer.height / 2;
var newX = middleX - layer.height / 2;
var newY = middleY - layer.width / 2;
但是更复杂的情况呢?
编辑:
我找到了这个公式,但它只有在我顺时针旋转时才能正常工作。逆时针旋转呢?
var newX = (layer.x - middleX) * Math.cos(rotation) - (layer.y - middleY) * Math.sin(rotation) + middleX;
var newY = (layer.x - middleX) * Math.sin(rotation) + (layer.y - middleY ) * Math.cos(rotation) + middleY;