精确的角度计算

时间:2013-09-26 06:47:10

标签: wpf math rotation transformation

我正在开展一个项目,我必须根据位置传感器的值旋转轮胎。传感器提供的值从261(-90度)到395(+90度)。我正在使用TransformGroup所以几乎从传感器的327值开始,轮胎应该是直的并且直立enter image description here

当值为395时,轮胎将完全位于X轴上,类似于值261.我能够移动轮胎,但我无法计算精确的角度。
我的计算方式就像我计算特定角度(比如3)的默认值或零值(327)之间的值的数量。所以我得到了该角度的数值。然后我从角度(3度)中划分这个数字。所以我得到一个值的角度。

float tempangle = value from sensor-zero value which is 327;
                tempangle = Math.Abs(tempangle);
                tempangle /= float.Parse(angle for reference say 3 degree);
                tempangle = 1 / tempangle;

在这里,我将一些已知角度的物体放在传感器下面(具有度数的倾斜度)。当我想为某个值找到某个角度时,我只需将该角度乘以该值与默认值之间的值数(327)。所以我得到旋转身体的角度 假设我有计算后的角度

angle for one sensor value =1.14286286 

假设我通过计算器计算角度,如

1.14286286 *2=2.2857
1.14286286 *3=3.42858
1.14286286 *4=4.57145
1.14286286 *5=5.714314
1.14286286 *6=6.85717

正如您所看到的那样,角度正在跳过一些小数值。有没有办法与它合作? 谢谢

1 个答案:

答案 0 :(得分:0)

不知道我是否理解你的问题,但是从261到395范围内的输入值计算-90到90度之间的角度的方法看起来像这样:

private static double SensorValueToAngle(double value)
{
    const double sensorMin = 261;
    const double sensorMax = 395;
    const double angleMin = -90;
    const double angleMax = 90;

    return angleMin + (angleMax - angleMin)
        * (value - sensorMin) / (sensorMax - sensorMin);
}