根据我的解释,我将使用学位。
假设从画布中心看到的角度为45度。 从中心看,我有10°,60°,180°和350°的物体。
在这种情况下,之前45°的角度为10°。 45°的下一个角度是60°。
但现在问题是:
例如,如果角度为6°,该怎么办?然后前一个角度是350°。 或者如果角度为355°,则下一个角度为10°。
如果我们有一个类似于以下的数组,我怎么能弄清楚要得到哪一个?
angles = [10, 60, 180, 350]
theAngle = 45
Psuedo-code会做。
答案 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
}
}
注意:即使您的角度数组未排序,这也可以正常工作。