我在画布上有矢量显示标题。 我还计算了用户移动鼠标的当前标题。
当他在矢量上移动时,我只想选择与用户鼠标移动的标题匹配的那些。
e.g。考虑向量1具有180度标题 用户移动他的鼠标并且大约有170个。
由于用户无法完全匹配向量标题,我想添加边距。
E.g。是(170 - 45)和(170 + 45)之间的向量标题?
当向量具有标题时出现问题,例如350和用户鼠标的标题为10 - 介于(10-45)和(10 + 45)之间 - 现在显然-35不好,所以我再次加360度,在这种情况下325< 350但是350不是> 55
我显然需要更深入地了解如何计算这种情况。
tldr:
给定X度,如果你想象一个圆圈,如何衡量它是否在A和B之间。
答案 0 :(得分:1)
使用差异。从您想要的航向中减去实际航向。答案为<=-180
或>180
,请根据需要添加或减去360
。然后将结果与错误带进行比较(在您的示例中为>-45, <45
)
答案 1 :(得分:1)
不是比较角度,而是比较矢量的dot product。如果向量包含组件v=[vx,vy]
,并且我想将其与鼠标方向m=[mx,my]
进行比较,那么我将计算以下内容
t = ACOS( (mx*vx+my*vy)/(SQRT(mx^2+my^2)*SQRT(vx^2+vy^2)) )
然后检查弧度中的角度t
是否在您想要的容差范围内。例如,6°代码是
IF t<=6*(π/180) THEN ...