0

我正在尝试在 kineticjs 中获取旋转元素的角。我为 fabricjs 找到了一个类似的线程,想知道是否有类似的 kineticjs 解决方案。

在fabricjs中找到旋转对象的角坐标

我有一个包含图像的图层,图像具有负偏移量,因此原点位于中心。图层获得旋转。

var layer = new Kinetic.Layer({rotationDeg: 45});
var image = new Kinetic.Image({width: 100, height: 100, offsetX: -50, offsetY: -50});
layer.add(Image);

谢谢

4

1 回答 1

2

您可以使用一些三角函数:

function findRotatedCornerXY(rectX,rectY,rectWidth,rectHeight,degreeAngle,
                             originalCornerX,originalCornerY){

    // calc rotation centerpoint
    var cx=rectX+rectWidth/2;
    var cy=rectY+rectHeight/2;

    // calc length from rect center to any rect corner
    var r=Math.sqrt(rectWidth/2*rectWidth/2+rectHeight/2*rectHeight/2);

    // calc unrotated angle from center to corner
    var dx=originalCornerX-cx;
    var dy=originalCornerY-cy;
    var originalAngle=Math.atan2(dy,dx);

    // calc new angle of rotated corner
    var radianAngle=degreeAngle*Math.PI/180;
    var newAngle=originalAngle+radianAngle;

    // calc XY of rotated corner
    var rx = cx + r * Math.cos(newAngle);
    var ry = cy + r * Math.sin(newAngle);

    // return the results
    return({x:rx,y:ry});
}
于 2013-09-01T22:39:19.830 回答