C# - 在列表中搜索点

时间:2017-02-07 13:32:43

标签: c# list

我为每个四轴飞行器创建一个点列表,以便在它周围创建一个安全区域,并避免其他四轴飞行器彼此靠近。

我的代码已经创建了一个点列表来创建一个安全区域(因为距离从-20到+20,它创建了1600点(40 * 40))。

现在我要比较无人机[k] .posicao_atual(实际位置)是否在其他无人机的安全区域内。如果是的话,我现在只想要调试消息。

我要求代码除了无人机本身创建的列表 之外的所有其他列表的代码(最后的If语句,它永远不会成真。即使无人机在安全区域,它永远不会进入if语句)

任何帮助?

 PointF posicao_desejada = new Point(0, 0);
    PointF posicao_atual = new Point(0, 0);    
    List<PointF>[] lista_colisoes;
    int distancia = 20;

      for (int i = 0; i < drone.Length; i++)
        {

            lista_colisoes[i] = new List<PointF>();
          }



   for (int k = 0; k < drone.Length; k++)
        {

            lista_colisoes[k].Clear();

            for (int i = (int)posicao_atual.X - distancia; i <= (int)posicao_atual.X + distancia; i++)
                {
                    for (int j = (int)posicao_atual.Y - distancia; j <= (int)posicao_atual.Y + distancia; j++)
                    {
                        lista_colisoes[k].Add(new PointF(i, j));
                    }

                }

                if (Enumerable.Range(0, drone.Length).Where(i => i != k).
                  Any(list => lista_colisoes.Any(ponto => ponto.Equals(drone[k].posicao_atual))))
                {
                   Debug.WriteLine("Entered Safe Area")
                   //never enters here
                }

            }

绿色无人机位于红色无人机安全区内,并没有进入if声明。

Image

0 个答案:

没有答案