Найдите направление от точек прямоугольника - PullRequest
1 голос
/ 02 августа 2020

Я пытаюсь определить направление угла по четырем координатам. Может быть, пример может описать лучше, чем мои слова ..

    var points = [
     [0, 0], // top-left
     [50, 0], // top-right
     [50, 50], // bottom-right
     [0, 50], // bottom-left
   ]; // order can be random

    var topLeft =[9999, 9999]; 
    var topRight =[0, 9999]; 
    var bottomRight =[0, 0]; 
    var bottomLeft =[9999, 0]; 

    points.forEach((p) {
      if (p[0] < topLeft[0] && p[1] < topLeft[1]) topLeft = p;
      if (p[0] > topRight[0] && p[1] < topRight[1]) topRight = p;
      if (p[0] > bottomRight[0] && p[1] > bottomRight[1]) bottomRight = p;
      if (p[0] < bottomLeft[0] && p[1] > bottomLeft[1]) bottomLeft = p;
    });

    print([tl, tr, br, bl]);

  // [[0, 0], [50, 0], [50, 50], [50, 50]] - wrong
  // [[0, 0], [50, 0], [50, 50], [0, 50]] - right 

У меня есть список из 4 координатных точек. Попытка разделить их в соответствии с их направлением, например, верхний левый, верхний правый, нижний левый, нижний правый и т. Д. c .. но мой код работает некорректно (верхний правый и нижний левый неправильные), Не могли бы вы помочь мне решить эту проблему, а также как я могу сделать ее более эффективной?

1 Ответ

1 голос
/ 02 августа 2020

Вы пропустили = (знак равенства) в условиях if. Вот обновленный код.

void main() {
  var points = [
     [0, 0], // top-left
     [50, 0], // top-right
     [50, 50], // bottom-right
     [0, 50], // bottom-left
   ]; // order can be random

    var topLeft =[9999, 9999]; 
    var topRight =[0, 9999]; 
    var bottomRight =[0, 0]; 
    var bottomLeft =[9999, 0]; 

    points.forEach((p) {
      if (p[0] <= topLeft[0] && p[1] <= topLeft[1]) topLeft = p;
      if (p[0] >= topRight[0] && p[1] <= topRight[1]) topRight = p;
      if (p[0] >= bottomRight[0] && p[1] >= bottomRight[1]) bottomRight = p;
      if (p[0] <= bottomLeft[0] && p[1] >= bottomLeft[1]) bottomLeft = p;
    });

    print([topLeft, topRight, bottomRight, bottomLeft]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...