html,坐标轴现实矩形旋转,HTML5 Canvas中旋转矩形内的鼠标位置

本文探讨了HTML5画布中旋转矩形的碰撞检测问题。作者通过将鼠标坐标转换到矩形旋转原点并反转旋转来尝试实现检测,但发现这种方法在实际应用中存在问题。仅在矩形中心区域能正确检测鼠标点击。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

html5画布中矩形的旋转以弧度形式存储.为了找出后续鼠标是否在任何给定矩形内,我将鼠标x和y平移到矩形的旋转原点,将旋转的反转应用于鼠标坐标,然后将鼠标坐标平移回来.

这根本不起作用 - 鼠标坐标没有按预期变换(也就是说,当在旋转的矩形的可见边界内单击时,不在原始矩形的边界内),并且对矩形的边界进行测试失败.鼠标点击的检测仅在矩形的最中心区域内起作用.请参阅下面的代码段,告诉我你是否能看到这里的错误.

// Our origin of rotation is the center of the rectangle

// Our rectangle has its upper-left corner defined by x,y, its width

// defined in w, height in h, and rotation(in radians) in r.

var originX = this.x + this.w/2, originY = this.y + this.h/2, r = -this.r;

// Perform origin translation

mouseX -= originX, mouseY -= originY;

// Rotate mouse coordinates by opposite of rectangle rotation

mouseX = mouseX * Math.cos(r) - mouseY * Math.sin(r);

mouseY = mouseY * Math.cos(r) + mouseX * Math.sin(r);

// Reverse translation

mouseX += originX, mouseY += originY;

// Bounds Check

if ((this.x <= mouseX) && (this.x + this.w >= mouseX) && (this.y <= mouseY) && (this.y + this.h >= mouseY)){

return true;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值