我正在开展一个项目,我必须根据位置传感器的值旋转轮胎。传感器提供的值从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
正如您所看到的那样,角度正在跳过一些小数值。有没有办法与它合作? 谢谢
答案 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);
}