前一个半径和下一个半径

时间:2013-06-25 22:34:11

标签: pseudocode angle

根据我的解释,我将使用学位。

假设从画布中心看到的角度为45度。 从中心看,我有10°,60°,180°和350°的物体。

在这种情况下,之前45°的角度为10°。 45°的下一个角度是60°。

但现在问题是:

例如,如果角度为6°,该怎么办?然后前一个角度是350°。 或者如果角度为355°,则下一个角度为10°。

如果我们有一个类似于以下的数组,我怎么能弄清楚要得到哪一个?

angles = [10, 60, 180, 350]
theAngle = 45

Psuedo-code会做。

1 个答案:

答案 0 :(得分:0)

您可以使用模运算符,例如使用类似C或C的语言找到“上一个”角度:

int N = 4;
int angles[N] = { 10, 60, 180, 350 };
int theAngle = 45;

int prevAngle = angles[0];          // init - assume angle[0] is "previous" angle
int minAngleDelta = (theAngle - prevAngle) % 360;
for (i = 1; i < N; ++i)             // for each remaining angle
{
    int angleDelta = (theAngle - angles[i]) % 360;
    if (angleDelta < minAngleDelta) // if we found a smaller delta (modulo 360)
    {                      
        minAngleDelta = angleDelta; // track min angle delta
        prevAngle = angles[i];      // and corresponding angle
    }                    
}

注意:即使您的角度数组未排序,这也可以正常工作。