私は小さなマルチメディアに取り組んでいます - ユーザーが、とりわけ、点を線で結ぶことによってキャンバス (2d) に図形を描くことができるプロジェクトです。しかし、ユーザーが線を越えることを禁止する必要があります。
私が探しているのは、交差する線を見つけることができる小さなアルゴリズムです。プロジェクトは AS3/Flash で行われますが、答えは普遍的だと思います。
誰でも私に手がかりを与えることができますか?
ありがとう
私は小さなマルチメディアに取り組んでいます - ユーザーが、とりわけ、点を線で結ぶことによってキャンバス (2d) に図形を描くことができるプロジェクトです。しかし、ユーザーが線を越えることを禁止する必要があります。
私が探しているのは、交差する線を見つけることができる小さなアルゴリズムです。プロジェクトは AS3/Flash で行われますが、答えは普遍的だと思います。
誰でも私に手がかりを与えることができますか?
ありがとう
これはJavaの例ですが、AS3に簡単に適応できると思います:
public static boolean intersects(double ax, double ay, double bx, double by,
double cx, double cy, double dx, double dy) {
double denum = ((bx-ax)*(dy-cy)-(by-ay)*(dx-cx));
if (denum == 0) return false; // parallel segments
double r = ((ay-cy)*(dx-cx)-(ax-cx)*(dy-cy)) / denum;
double s =
((ay-cy)*(bx-ax)-(ax-cx)*(by-ay)) / denum;
return 0<=r && r<=1 && 0<=s && s<=1;
}
セグメント [AB] と [CD] が交差する場合、true を返す必要があります。ここでリファレンスを見つけることができます
Point
、hitTest
、hitTestObject
またはの方法を使用できますhitTestPoint
。Super Chafouin の回答が役立つかどうかはわかりませんが、AS3 ではコードがかなり異なって見えると思います。
それらが何を意味するのかを説明するために、 actionscript.orgからAaron Beallを引用して、適切な説明を提供します。
hitTestObjectは、2 つの表示オブジェクトの境界ボックスの四角形をチェックします。常に長方形と長方形をチェックします。
hitTestPointは、表示オブジェクトに対して点 (x,y) をチェックします。
BitmapData/ hitTestは、ポイント、四角形、またはその他のビットマップ データに対してビットマップをチェックします。bitmapdata-vs-bitmapdata のチェックを使用すると、アルファ チャネル ベースの形状と形状のチェックを実行できることを意味します。こちらをご覧ください: http://www.mikechambers.com/blog/200...ion-detection/
(また、細かいことを言うのではなく、理解していることを確認するために、hitTestObject も hitTestPoint も「トリガー」されません。何かを確認したい場合は、手動で呼び出す必要があります。)
アルゴリズム全体を要求することはかなりのことであり、アプリにも依存します。
その他の例とドキュメントについては、こちら、こちらを参照してください
これが役立つことを願っています!