生成点网格的算法

时间:2013-03-27 22:10:41

标签: javascript algorithm

我在以下架构(x,y)中有坐标数组: 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]]]

换句话说,我想获得所有平行和垂直线的坐标。 我想出了两个双循环(一个用x,另一个用y),但也许有另一个更快(更好)的方式

- 伪代码:

          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] ;
              };
          };

修改

好的,情况如下:

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]]]

在上面的数组中,有一个绿色线条之一的坐标点。这些线是矩形边的平行或垂直线。

1 个答案:

答案 0 :(得分:0)

如果您按X坐标对点进行排序,然后将它们按X坐标组合在一起,则每个组都是垂直线上的一组点。

同样,如果您按Y坐标对点进行排序,然后按Y坐标将它们组合在一起,则每个组都是水平线上的一组点。

如果这听起来过于简单,我道歉。但是你的初步描述和附加的图表以及你的进一步解释让我相信这就是你所要求的。