2017-12-25 10 views
0

개체의 거리를 계산합니다.C# generic 목록을 사용하여 개체 위치 분석

X 및 제 두 가지를 나열 X Y에 저장된 위치 값

W.

그러면 I이 오브젝트에 의해 커버되는 거리를 저장하기위한 또 다른 목록을 사용한다. 또한 메모리 부담을 피하기 위해 개수가 10 개가되면 목록을 새로 고칩니다.

거리 값을 기준으로 개체가 정적 위치에 있으면 거리가 늘어나지 않아야한다고 분석해야합니다. 그리고 텍스트 상자 디스플레이에서 계산 된 거리 값은 정적으로 나타납니다.

실제로 거리를 계산하기 위해 센서를 사용하고 있습니다. 그리고 물체가 정적 상태에 있어도 센서 오류로 인해 거리 값이 달라집니다. 센서 오류 임계 값은 약 15cm입니다. 다음과 같이

System.ArgumentOutOfRangeException : 'Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: 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     
    }    
    } 
+1

코드에 'X'가 무엇입니까? 다른 목록? –

+1

코드에'W'가 무엇입니까? 다른 목록? – HudsonPH

+0

예 X와 W는 X 축과 Y 축 위치 값이 포함 된 또 다른 목록입니다. – SN25

답변

1

나는 논리를 개발

는 그러나, 나는 오류가 발생합니다. 주어진 두 점에 대해 거리를 계산하는 방법을 생각해보십시오. 그게 서명 double -> double -> double의 기능이 될거야, 아니면 C#을 선호한다면 double ComputeDistance(double startPoint, double endPoint).

그런 다음해야 할 일은 당신이 가진 각 포인트 쌍에 그러한 fuction을 적용하는 것입니다. 가장 쉽고 간단한 방법은 Linq을 사용하는 것입니다. 일반 foreach에서도 가능합니다.

결국 분리 된 목록을 단일 목록으로 병합하는 것이 더 명확한 방법이라는 점에 유의하십시오. Tuple<double, double>은 성능을 포함한 최상의 선택 인 것으로 보입니다.