質問

その他として知られるハードエッジ、これは線の上をマウスできないのです。に役立つゲームします。

現在は、機能を持っているところを返しまう場合マウスカーソルのあるポリゴン描画を画面に表示します。ていない場合、カーソルを動かす前回保存した点にあった多角形を作成します。

    if (!PointInPolygon(local, polyGon))
    {
        Cursor.Position = safePoint;
    }
    else
    {
        safePoint = Cursor.Position;
    }

いうことも理由:

  • により更新時には、理由の如何にかかわらず、私ができる休憩セット。そして店舗としての地位をsafePoint、社外の多角形を作成します。私のマウスは後にこだわった設置されています。

  • 傾斜エッジはpustのマウスは、傾斜方向です。を押して、マウス右againtsに"/"の形状終了する必要があるとカーソルの右上のコーナー。が、このアプローチを中心にラインリセットのカーソルをいたしました。継続プ右のみを保有しresetingにカーソルは最後までしっかりと押し込みまく行ってきました。"

その他の方法に取り組むのですが。私は主に不安が最後の課題この斜面を横断的挙動の主な目的のプログラムが必要です。ものを利用した場合、この基本的な方法、そのアイデアのための最適化を具体的に振る舞えるのでしょうか?


編集:

することが示唆されているようリードまで戻るのにもっとも近い現在のout-of-boundsます。の4コーナーポイントのquadrilateral、あなたは何点ぐらいになると思うのでもっとも近い点にのか?

役に立ちましたか?

解決 3

  1. の方程式の線の端点.
  2. -(1/坂の斜面、垂直ます。
  3. 解決のためのライン方程式に対して垂直線に知られる点のエッジ(所在地は、真のマウス)
  4. 解決のための交差点のライン、垂直ライン。
  5. の偽造カーソルについて高く評価されています

他のヒント

の代わりに「セーフポイント」を追跡する、私は次の操作を行います。

あなたは、多角形のあなたの外側を見つけるのではなく、最後の既知の安全なポイントに戻す場合は、現在のマウスの位置にポリゴン内/上の最も近い点にマウスを置きます。カーソルが(ゆっくり)多角形などのエッジ上の斜面に従う傾向がありますので、これは、同様に、感触を助けるます。

また、コール(セーフポイント)との間で状態を保存する必要がなくなります。

どのようプロジェクトへの協賛を始め点 P ポリゴン単体(non-convexょく)には2-D(当時計回りに巻き)

各端 (Pi、Pj) のポリゴン...

見通常のベクトル N エッジ(単位ベクトルから PiPj, ボ90度)

の変位 D 端からポイント P に沿って N ( D=(P-Pi)ドットN )

の場合 D は正又は負のためのカウンター-時計回りに巻き、その後 P=P-N-D

末ループ:)

最も近い点ます:

if(mouse.x > maxX) 
    mouse.x = maxX;
else if(mouse.x < minX)
    mouse.x = minX;

// same for Y.
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top