- ベストアンサー
グリッドに乗った座標値
マウスをクリックしたポイントの座標値を取得した場合に その座標に一番近いグリッドの座標を求めようとしています。 入力(mX、mY) Grid(gX、gY) よい計算方法はないでしょうか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
補足 #1 の計算式は mX,gX0,dgX が非整数でも (dgX 以外が) 負数でも使えますが, 普通は座標は非負整数なので,それを前提としてさらに gX0 を mX の最小値以下 (普通は0) にすれば n = floor((mX - gX0) / dgX) の代わりに普通の整数除算 n = (mX - gX0) / dgX でかまいません.
その他の回答 (1)
- noocyte
- ベストアンサー率58% (171/291)
回答No.1
X方向のグリッドの原点を gX0,間隔を dgX (>0) とすると, 任意のグリッド座標は gX[n] ≡ gX0 + dgX * n (n は任意の整数) です. gX[n] ≦ mX < gX[n+1] となるようなnを求めると, n = floor((mX - gX0) / dgX) ここで floor(a) は a 以下の最大の整数. (VB を知らないのでCの関数名を使いました.(^^;)) したがって gX[n] は mX と同じか,そのすぐ左側のグリッド座標, gX[n+1] は mX のすぐ右のグリッド座標. あとはお好きなように.
お礼
VBもで割った数値を整数に出来ました。 ありがとうございました。