2013-03-27 6 views
0

Я получил массив координат в следующей схеме (х, у): array = [[1,2],[1,5],[1,1],[2,2],[2,5],[2,1]]алгоритм генерации сетки точек

Я хотел бы сделать некоторый процесс для достижения эффекта:

array1 = [[[1,2],[1,5],[1,1]],[[2,2],[2,5],[2,1]]]; array2 = [[[2,2],[2,5],[2,1]]] и

array1a = [[[1,2],[2,2]]]; array2a = [[[1,5],[2,5]]]; array3a=[[[1,1],[2,1]]]

другими словами, я хотел бы получить координаты всех параллельных и перпендикулярных линий. я придумал две двойные петли (одна по х, а другой по у), но может быть, есть еще один быстрее (лучше) способ

- псевдокод:

  for (var i = 0; i < length; i++) { 
       for (var j = 0; j < length2; j++) { 
        var x = points[i][j][0]; 
        var y = points[i][j][1]; 
       }; 
      }; 
      for (var i = 0; i < length2; i++) { 
       for (var j = 0; j < length; j++) { 
        var x = points[i][j][0] ; 
        var y = points[i][j][1] ; 
       }; 
      }; 

EDIT

ОК, вот ситуация:

enter image description here

Я получил этот вид прямоугольника, у меня есть координаты точек (красная метка), как массив:

array = [[1,2],[1,5],[1,1],[2,2],[2,5],[2,1]]

, и я хочу сделать antoher массива, который будет выглядеть следующим образом:

array1 = [[[1,2],[1,5],[1,1]],[[2,2],[2,5],[2,1]]]

в массиве выше есть координаты точек то один из containts зеленой линии. Эти линии параллельны или перпендикулярны к сторонам прямоугольника.

+1

Я вижу, что это 2D-координаты, но где же находятся «линии»? И что они делают для циклов, за исключением того, что вы извлекаете последнюю точку в последнем массиве очень неэффективно? – Thomas

+0

@Thomas во всех подмассивах (например, '[[1,2], [1,5], [1,1]]') являются координатами линий, которые являются параллелями или нормали к минимальным и максимальным координатам всего этого набора данных , Я рассматриваю только двумерную плоскость, и позже я использую эти подмассивы в качестве аргумента функции, которая рисует их. – Krystian

+0

почему downvote без комментариев ?! – Krystian

ответ

0

Если вы сортируете точки по координате X, а затем группируете их по координате X, каждая группа представляет собой набор точек на вертикальной линии.

Аналогичным образом, если вы сортируете точки по координате Y, а затем группируете их по координате Y, каждая группа представляет собой набор точек на горизонтальной линии.

Если это звучит упрощенно, прошу прощения. Но ваше начальное описание и добавленная диаграмма с вашим дальнейшим объяснением заставляют меня поверить, что это то, о чем вы просите.

+0

Благодарю вас за ответ, вы имеете право, я должен сортировать точки по координатам. Но попробуйте посмотреть на исходный набор данных, если я хотел бы отсортировать их, а затем извлечь по методу, который вы предлагаете, я получу 2 двойных цикла через набор данных (как показано в моем вопросе). И я хотел бы избежать этого или изменить алгоритм, чтобы упростить эту задачу. – Krystian

+0

@Krystian: Чтобы отсортировать точки, вызовите функцию 'sort' Javascript. Для примера см. Http://www.w3schools.com/jsref/jsref_sort.asp. Вы можете сказать, как сравнить точки. –

Смежные вопросы