我正在计算物体的距离。
X和Y位置值首先存储在两个不同的列表X和W中。
然后我使用另一个List来存储此对象所覆盖的距离。此外,如果计数达到10,我会刷新列表,以避免内存负担。
在距离值的基础上,我必须分析,如果物体处于静止位置,距离不应该增加。在文本框显示中,计算出的距离值似乎是静态的。
实际上,我正在使用传感器来计算距离。并且由于传感器错误,即使物体处于静止状态,距离值也会变化。传感器误差阈值约为15cm。
我已经开发了逻辑,但是,我收到了错误:
System.ArgumentOutOfRangeException
:'索引超出范围。必须是非负数且小于集合的大小。参数名称:index'
我的代码如下:
void distance()
{
List<double> d = new List<double>();
double sum = 0, sum1 = 0;
for (int i = 1; i < X.Count; i++)
{
//distance computation
if ((d[i] - d[i -1]) > 0.15)
{
sum1 = d.Sum();
sum = sum1 + dis1;
Dis = Math.Round(sum, 3);
}
}
// refresh the Lists when X, W and d List reach the count of 10
}
}
答案 0 :(得分:1)
你完全错了。想出一个计算两个给定点的距离的方法。这将是签名double -> double -> double
的功能,或者,如果您更喜欢C#,double ComputeDistance(double startPoint, double endPoint)
。
然后,唯一要做的就是将这样的功能应用到你得到的每一对点上。通过Linq
实现这一目标的最简单,最紧凑的方法。它也可以在常规foreach
中完成。
请注意,如果您最终将分离的列表合并到一个列表中,那将更加清晰。 Tuple<double, double>
似乎是包括表现在内的最佳选择。