0

我在以下模式(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] ;
              };
          };

编辑

好的,情况如下:

在此处输入图像描述

我有这种矩形,我有点坐标(红色标记)作为数组:

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

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

4

1 回答 1

0

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

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

如果这听起来很简单,我很抱歉。但是您的初始描述和添加的图表以及您的进一步解释使我相信这就是您所要求的。

于 2013-03-28T01:32:39.053 回答