找出度数的方向

时间:2017-05-09 09:46:23

标签: objective-c math angle degrees

我可能会过度思考这个,但是,你说你有以下变量;

  • 起始度
  • 结束度
  • 增加度数(即起始度数+ X)

你怎么能找出学位的方向?即,0-> 359是顺时针的,359-> 0是逆时针的。

以下是几个例子:

Starting at: 357 degrees
Ending at: 337 degrees
Incremented by: 20
Direction: Counterclockwise

Starting at: 10 degrees
Ending at: 350 degrees
Incremented by: 20
Direction: Counterclockwise

Starting at: 357 degrees
Ending at: 17 degrees
Incremented by: 20
Direction: Clockwise

你如何尽可能安全地找出方向?一个快速的解决方法是使用模块,但是,如果递增的数字偏离1-2度会发生什么?

理想的解决方案将是一种检测最接近增量数字的方向的方法。如果没有意义,这是一个例子:

Starting at: 17 degrees
Ending at: ~347-357 degrees
Incremented by: ~20-30
Direction: Counterclockwise

它不会是顺时针方向,因为差异大约是330-340。

如果它没有意义,请告诉我,我会尽力改写它。

1 个答案:

答案 0 :(得分:0)

为CW和CCW计算两个变体

E1 = (Start + Increment) %% 360
E2 = (Start + 360 - Increment) %% 360

并检查哪种变体与结束角度的绝对差异较小。

S:0; E:20; 

if I=20
CW: 0+20=20
CCW: 0 + 360-20=340
E is closer to CW result

if I=340
CW: 0+340=340
CCW: 0 + 360 - 340 = 20
E is closer to CCW result