Javascript 旋转后获得左上角的正确坐标

Javascript 旋转后获得左上角的正确坐标,javascript,jquery,html,canvas,geometry,Javascript,Jquery,Html,Canvas,Geometry,我想显示在画布上绘制的对象的左上角 删除按钮的左侧和顶部位置等于object.left+object.width,顶部等于object.top 旋转对象后,删除按钮的左侧和顶部等于对象的原始位置 有人能告诉我如何获得右上角的“真实”XY坐标吗 这是我的JSFIDLE: 一点三角学将为您提供旋转的左上角点 这假定矩形正在围绕其中心点旋转 下面是示例代码和演示: var canvas=document.getElementById(“canvas”); var ctx=canvas.getCo

我想显示在画布上绘制的对象的左上角

删除按钮的左侧和顶部位置等于
object.left+object.width
,顶部等于
object.top

旋转对象后,删除按钮的
左侧
顶部
等于对象的原始位置

有人能告诉我如何获得右上角的“真实”XY坐标吗

这是我的JSFIDLE:

一点三角学将为您提供旋转的左上角点

这假定矩形正在围绕其中心点旋转

下面是示例代码和演示:

var canvas=document.getElementById(“canvas”);
var ctx=canvas.getContext(“2d”);
var cw=画布宽度;
var ch=画布高度;
var-PI=Math.PI;
var PI2=PI*2;
var x=125;
变量y=132;
var宽度=50;
var高度=36;
var rotationAngle=PI/6;
平移(x+宽度/2,y+高度/2);
ctx.旋转(旋转角度);
ctx.fillStyle='red';
ctx.strokeStyle='black';
ctx.线宽=5;
ctx.fillRect(-width/2,-height/2,width,height);
ctx.strokeRect(-width/2,-height/2,width,height);
ctx.旋转(-rotationAngle);
平移(-(x+宽度/2),-(y+高度/2));
var rotatedTopLeft=rotatedTopLeft(x,y,宽度,高度,旋转角度);
圆点(左旋转左旋转右旋转顶部,5,'gold');
函数旋转到左(x、y、宽度、高度、旋转角度){
//获取矩形的中心(=旋转点)
var cx=x+宽度/2;
var cy=y+高度/2;
//计算未旋转的TL角与中心点的角度
var dx=x-cx;
var-dy=y-cy;
var originalTopLeftAngle=Math.atan2(dy,dx);
//添加未旋转的TL+rotationAngle以获得总旋转
var rotatedTopLeftAngle=原始OPLEFTANGLE+旋转角度;
//计算矩形的半径(=对角线长度/2)
变量半径=数学sqrt(宽度*宽度+高度*高度)/2;
//计算旋转的上角和左角
var rx=cx+半径*数学cos(rotatedTopLeftAngle);
var ry=cy+半径*数学sin(旋转的多边形);
//返回结果
返回({left:rx,top:ry});
}
功能点(x、y、半径、填充){
ctx.beginPath();
弧(x,y,半径,0,PI2);
ctx.closePath();
ctx.fillStyle=填充;
ctx.fill();
}
body{背景色:象牙;}
#画布{边框:1px纯红;}
金色圆点位于旋转的左上角

已知的内容-旋转角度,旋转“手柄”的新位置,还有什么吗?旋转角度,顶部,左侧,对象从中心旋转,您可以检查控制台
   delBtn.style.display = 'block';
    delBtn.style.left = activeEl.left + (activeEl.width * activeEl.scaleX / 2) - 25 + 'px';
    delBtn.style.top = activeEl.top - (activeEl.height * activeEl.scaleX / 2) - 15 + 'px';
function rotatedTopLeft(x,y,width,height,rotationAngle){

    // get the center of the rectangle (==rotation point)
    var cx=x+width/2;
    var cy=y+height/2;

    // calc the angle of the unrotated TL corner vs the center point
    var dx=x-cx;
    var dy=y-cy;
    var originalTopLeftAngle=Math.atan2(dy,dx);

    // Add the unrotatedTL + rotationAngle to get total rotation
    var rotatedTopLeftAngle=originalTopLeftAngle+rotationAngle;

    // calc the radius of the rectangle (==diagonalLength/2)
    var radius=Math.sqrt(width*width+height*height)/2;

    // calc the rotated top & left corner
    var rx=cx+radius*Math.cos(rotatedTopLeftAngle);
    var ry=cy+radius*Math.sin(rotatedTopLeftAngle);

    // return the results
    return({left:rx,top:ry});
}