已知A点角度与距离计算B点坐标,p5.js角度计算异常求助
问题解决:p5.js中鼠标点击方向的坐标计算偏差
问题根源
你的代码存在两个核心错误:
- 三角函数与坐标分量的对应关系颠倒:
Math.atan2(dy, dx)返回的是从x轴正方向逆时针旋转的角度,x方向的偏移应使用cos(angle)计算,y方向用sin(angle)计算,你搞反了两者的对应关系。 - 未适配p5.js坐标系特性:p5.js的y轴向下延伸,y方向的偏移无需取反,直接累加即可。
修正后的代码
function mouseClicked(){ // 计算point1到鼠标的向量差值 const dx = mouseX - point1.x; const dy = mouseY - point1.y; var angle = Math.atan2(dy, dx); // 正确计算目标点坐标 const x = point1.x + Math.cos(angle) * travelDistance; const y = point1.y + Math.sin(angle) * travelDistance; circle(x, y, 10); }
关键说明
Math.atan2(dy, dx):参数顺序为y差在前,x差在后,这一步你是正确的,它能准确返回两点连线与x轴正方向的夹角。- 坐标计算逻辑:
- x方向:沿角度的水平分量移动,用
cos(angle)乘以距离后,叠加到point1的x坐标上。 - y方向:因p5.js的y轴向下,角度对应的垂直分量
sin(angle)乘以距离后,直接叠加到point1的y坐标即可,无需取反。
- x方向:沿角度的水平分量移动,用
内容的提问来源于stack exchange,提问作者Marcel
相关产品推荐
相关产品推荐

