0

以下のように、水平方向に 1 ~ 9 の番号が付けられた 50 ピクセルの正方形の 3 x 3 のグリッドがあるとします。

| | 1 | 2 | 3 |

| | 4 | 5 | 6 |

| | 7 | 8 | 9 |

たとえば正方形 9 などの正方形の数と、この場合の正方形の幅が 50 ピクセルであることがわかっている場合、0, 0 の座標系に基づいて正方形の座標をプログラムで計算するにはどうすればよいですか?左上から。

この場合の正方形 9 はx = 100y = 100

ここまでやってみたけどダメだった

x = (squareNumber * squareWidth)
y = (squareNumber * squareHeight)
4

2 に答える 2

1
var width=50,height=50;
 function gridPos(n){
      var pos={};
      pos.x=(n -1)%3*width;
      pos.y=Math.floor((n-1)/3)*height;
      return pos;
 }
pos=gridPos(8);
console.log("pos is " + pos.x + " " + pos.y);
于 2013-06-30T18:12:07.700 に答える
1

一般式は次のとおりです。

x = (squareNumber - 1) % numberOfSquaresPerRow * squareWidth
y = (squareNumber - 1) / numberOfSquaresPerCol * squareHeight

あなたの場合、それは 3 x 3 グリッドなので、次のようになります。

x = (squareNumber - 1) % 3 * squareWidth
y = (squareNumber - 1) / 3 * squareHeight

整数除算を使用しない Javascript では、次のように使用する必要がありますy

y = Math.floor((squareNumber - 1) / 3) * squareHeight
于 2013-06-30T18:02:37.953 に答える