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;