1

我正在做一个项目,我必须根据位置传感器的值来旋转轮胎。传感器提供从 261(-90 度)到 395(+90 度)的值。我使用TransformGroup的传感器值几乎是 327,轮胎应该是直的和直立在此处输入图像描述的。

当值为 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

如您所见,角度正在跳过一些十进制值。有什么办法可以配合吗?谢谢

4

1 回答 1

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);
}
于 2013-09-26T07:18:52.507 回答