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

つまり、すべての平行線と垂直線の座標を取得したいと考えています。私は 2 つの二重ループ (1 つは x によるもの、もう 1 つは 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] ;
              };
          };

編集

OK、状況は次のとおりです。

ここに画像の説明を入力

この種の長方形があり、点の座標(赤いマーク)を配列として持っています:

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

上記の配列には、緑色の線の 1 つである点の座標が含まれています。これらの線は、長方形の辺に平行または垂直な線です。

4

1 に答える 1

0

ポイントを X 座標で並べ替えてから X 座標でグループ化すると、各グループは垂直線上のポイントのセットになります。

同様に、点を Y 座標で並べ替えてから Y 座標でグループ化すると、各グループは水平線上の点のセットになります。

これが単純に聞こえる場合は、お詫び申し上げます。しかし、あなたの最初の説明と追加の図と追加の説明から、それがあなたが求めているものであると私は信じています。

于 2013-03-28T01:32:39.053 に答える