我正在圍繞它的中心旋轉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說的一樣。 –