我有 0 到 359 的输入(即指南针)。
我想设置一个零点,如果该值低于或高于此值,则显示为 -value 或 +value。
例子:
Zero Point: 2
Input: 340 => Output: -22
Input: 22 => Output: 20
或
Zero Point: 40
Input: 30 => Output: -10
Input: 50 => Output: 10
所以无论罗盘“在哪里”,输出总是相对于零点。
PS:或者更短:如何将 0->359 的重复序列转换为可以像处理普通数轴一样处理的线性序列?因此,如果 359 达到 2 次向上计数,函数会告诉我它是 720(我可能在这里错过了 1° 或 2° 的正确值)而不是 359?
最佳答案
假设你想要一个从 -179 到 180 的输出,零点可以从 0 到 359
int output(int deg, int zeropoint)
{
var relative = deg - zeropoint;
if (relative > 180)
relative -= 360;
else if (relative < -179)
relative += 360;
return relative;
}
关于c# - 设置一个零点,如果该值低于或高于此值,则显示为 -value 或 +value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16434451/