我正在围绕它的中心旋转jCanvas图层,但在此之后,我需要计算其新的x和y坐标。我使用下面的代码,虽然它返回错误值:计算旋转后的新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;
你说的它的X和Y值是什么意思?如果围绕中心旋转,则其中心的X/Y不会改变。 –
这是什么问题?我的意思是输出 – unsym
XY是什么?边界框或左上角?中间的X/Y将和Chris说的一样。 –