• ベストアンサー

グリッドに乗った座標値

マウスをクリックしたポイントの座標値を取得した場合に その座標に一番近いグリッドの座標を求めようとしています。 入力(mX、mY) Grid(gX、gY) よい計算方法はないでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • noocyte
  • ベストアンサー率58% (171/291)
回答No.2

補足 #1 の計算式は mX,gX0,dgX が非整数でも (dgX 以外が) 負数でも使えますが, 普通は座標は非負整数なので,それを前提としてさらに gX0 を mX の最小値以下 (普通は0) にすれば n = floor((mX - gX0) / dgX) の代わりに普通の整数除算 n = (mX - gX0) / dgX でかまいません.

men_tan
質問者

お礼

VBもで割った数値を整数に出来ました。 ありがとうございました。

その他の回答 (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 のすぐ右のグリッド座標. あとはお好きなように.

関連するQ&A

  • エクセルシート上のマウスポインタ座標の取得

    こんにちは。エクセルVBAの初心者です。 エクセルでシート上のマウスポインタの座標を取得する方法はありますか?色々やってみたのですがわからない感じです。もし分かれば教えてください。お願いします。 セルのアドレスではなくて、ポイント数で知りたい感じです。 マウスのモニタ座標とフォーム上での座標はなんだか色々調べたら取得することが出来た感じなのですが、シート上の座標をポイント数で取得することができない感じです。 なんかモニタ座標は型がLong型で、エクセルのシートのポイントはDouble型なので互いに採用しているポイントと単位が違うので全く別物だろうとは思いますが、一番うれしいのはエクセルシートのポイントが分かること、次が、ウィンドウのサイズや位置に左右されない、アクティブウィンドウのローカル座標(とか言えばいいのでしょうか?)が知れたらうれしいです。 すみません。分かる人、どうか教えてください。よろしくお願いします。

  • DirectInputでの現在のマウス座標は・・?

    DirectInputでマウス座標を取得したいのですが、 lX lY による移動量の取得方法しかわからず、 初回起動時に下のコードで現在座標を取得して扱っているのですが、 ----------------------------------- GetCursorPos(&point); ScreenToClient(hWnd, &point); input_mpos[0] = float(point.x); input_mpos[1] = float(point.y); ----------------------------------- 問題点 1.クライアント領域を抜け、モニターの隅までマウスカーソルが行っても移動量が加算され続け狂ってしまう 2.タイトルバーをダブルクリックして擬似フルスクリーンにすると移動量そのものが通用しない 3.フォーカスが飛んだり、ダイアログボックスが出ると現在座標が狂ってしまう に悩まされています。 常に確実にクライアント内の座標を捕らえ続けられる計算式というか、 定番の手順というものが有ったりするのでしょうか? それとも、マウス座標はDirectXで取得しようとする事そのものが間違いだったりするのでしょうか? 経験者様いらっしゃいましたら、ヒント程度でも構いませんので教えて頂けると幸いです。 orz

  • 座標取得方法をおしえてください!

    マウスの座標取得方法を教えてください。 お願いします。

  • グリッドについて,エクセルのアドインについて

    1)グリッド上で文字を直接入力したいのですが,どのようにすればよいのでしょうか。具体的には,エクセルのようにグリッド上をクリックしたら,そのグリッドがテキスト入力モードになるような方法を教えて頂きたいと思います。 2)MSFlexGridに描かれる垂直スクロールバーの,幅の値を得る方法を教えてください。(スクロールバーを表示させるとグリッドの右端が切れてしまうため) 3)エクセルのソルバーアドインを,VBから使用することはできますか? 複雑な回帰分析を行わせようと考えておりますので,できればエクセルのアドインをそのまま使えれば…,と考えております。 以上,よろしくお願いいたします。

  • vistaでの縦横のグリッド線の書き方

    Windows XPの場合の縦横のグリッド線は編集でグリッドにチェック入れると縦横のグリッド線の大、小を簡単に書けたが、vistaの場合のグリッド表示のグリッドにチェックを入れると行としてのグリッドは書けるが、それでは回路図等が書けない。縦横のグリッド線を当間隔でグリッド間隔の大、小を書く方法を教えて下さい。ヘルプでWord2007で検索した所 1、文書内の図形またはオブジェクトをクリックする。2、「描写ツール」の「書式」タブの「配置」で「配置」をクリック、「グリッド線の表示」をクリックする。と書いてあるが「描写ツール」はホーム、挿入、レイアウト、表示等を探したが見つからない。XPに慣れていたがVvistaは使い辛い。お分かりの方は教えて下さい。

  • DataGridのスクロールについて

    はじめまして、papillon68と申します。 「Flash MX Professional 2004」を使っています。 その中のコンポーネント「DataGrid」についての質問です。 ◆困っていること DataGridで勝手に選択中のアイテムがスクロールする (htmlにobjectタグでswfファイルを読み込んでいます) ◆したいこと DataGridで勝手に選択中のアイテムがスクロールしないようにしたい ◆現象 1.グリッド中のアイテムを選択する 2.1でマウスの左クリックを押したままFlash(swf)   外にドラッグする 3.再びFlash(swf)内にマウスを持っていく 3のとき [マウス] ------- |     |↑ |グリッド|↑ |     |↑ ------- マウスがグリッドより上(X座標が大きい)に あればグリッド内が勝手に上にスクロール ------- |     |↓ |グリッド|↓ |     |↓ ------- [マウス] マウスがグリッドより下(X座標が小さい)に あればグリッド内が勝手に下にスクロール 実際にはselectedindexなどは変わっておらず、 見た目の選択中(緑のライン)が移動します。 分かりにくいかもしれませんが、解決策や情報を お持ちでしたらご教授お願いできませんでしょうか。 よろしくお願い致します。

    • ベストアンサー
    • Flash
  • パス上のポイント座標の取得

    イラストレーター(CS3,Win)で作成したパス上のアンカーポイントの座標をリスト形式で取得する方法を探しています。 出来れば、方向線のポイントも取得できると助かるのですが・・・ アンカーポイントだけでも構いません。 任意のポイントを0,0として、各アンカーポイントの座標(出来ればピクセル)が取得出来れば問題ないです。

  • 十進BASICについて

    !**************** メインルーチン **************** 110 call format  !formatを呼び出し 210 do until right=1 220  mouse poll mx,my,left,right !マウス位置を取得 230  if left=1 then 240   print mx,my !クリックされた座標を表示 289  end if 299 loop 999 end 220  mouse poll mx,my,left,right でsyntax errorがでます原因が分かる方よろしくお願いします。

  • VBのグリッドにてマウスクリックでセル位置を正確に取得したい

    Visual BASIC でアクティブコンポーネントのグリッド(表)を使用しています。 ●グリッドのセルをマウスでクリックした時に、そのセルの列と行の位置番号を 正確に取得したいのですが、1列ある見出し列(行)をクリックしても 1(本来は 0)が、最初のデータ列(行)をクリックしても 1が返り、同じため正しく処理できません。(データのセルは正しく番号が取得できます。) どうしたら、クリックしたセルが見出し列(行)かどうか判別できますか? ●また、マウスをドラッグして複数のセルの範囲を取得したいのですがマウスDown と マウスUp イベントで列(行)番号を取得してもどちらも、マウスDown 時の値が返り、範囲となっていません。どうしたら、範囲を認識できますか。 分かるかたがおられたら教えてください。 (片方でも結構です。) Visual BASIC は Version 5 です。

  • マウス座標について

    PS/2マウスの座標データを取得したいのですが どうしたら良いものでしょうか? OSはLinuxを使用しています。言語はCです。 方法は如何なるものでも構いません。 情報をお持ちの方、URLなど教えて下さい。

専門家に質問してみよう