You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已知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坐标即可,无需取反。

内容的提问来源于stack exchange,提问作者Marcel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 00:44:59