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

p5.js实现中心物体90°视野内目标变红的问题排查

问题:视野范围内目标无法正常变红

屏幕中央设置了一个具备90°视野的物体,它每帧绕自身原点旋转。另有一个坐标为随机(x,y)的目标物体,期望当目标处于中心物体的视野范围内时变为红色。尝试了两种计算向量夹角的公式及对应代码,但运行时目标始终无法在视野内正常变红。

尝试的两种夹角计算公式

  • 反余弦求夹角:
θ = cos⁻¹ [ (a·b) / (|a| |b|) ]
  • 反正切求夹角:
θ = atan2(a.y - b.y, a.x - b.x)

对应实现代码

方法一(反余弦计算夹角)

let dotProduct = p5.Vector.dot(target, centerView)
let productMag = target.mag() * centerView.mag();
let result = dotProduct / productMag;
let angleInRad = acos(result);
if (angleInRad > HALF_FOV) {
  // 切换目标颜色为红色
  fill(color(255, 0, 0))
}

方法二(反正切计算夹角)

let diff = p5.Vector.sub(target, centerView);
let theta = atan2(diff.y, diff.x)
let result = theta
if (result < HALF_FOV && result > HALF_FOV * -1) {
  // 切换目标颜色为红色
  fill(color(255, 0, 0))
}

修复更新

感谢@MBo提供的修复方案,目前功能已正常运行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 00:05:23