-1

我在画布上有显示标题的矢量。我还计算了用户移动鼠标的当前方向。

当他在向量上移动时,我只想选择那些与用户鼠标移动的标题相匹配的向量。

例如,考虑向量 1 具有 180 度的航向,用户移动他的鼠标并且具有大约 170 的航向。

由于用户不能完全匹配向量标题,我想添加一个边距。

例如,向量的标题在 (170 - 45) 和 (170 + 45) 之间吗?

当矢量具有例如 350 的标题并且用户鼠标的标题为 10 时会出现问题 - 这将在 (10-45) 和 (10+45) 之间 - 现在显然 -35 不好所以我再次添加 360 度, 在这种情况下 325 < 350 但 350 不 > 55

我显然需要更深入地了解如何计算这种情况。

tldr:

给定 X 度,如果你想象一个圆,如何测量它是否在 A 度和 B 度之间。

4

2 回答 2

1

使用差异。从您想要的标题中减去实际标题。答案是<=-180>180时,酌情加减360。然后将结果与您的误差带进行比较(在您的示例中>-45, <45

于 2012-11-26T16:06:30.800 回答
1

我不会比较角度,而是比较向量的点积。如果向量有分量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 ...
于 2012-11-26T16:29:18.907 回答