1

オブジェクトが 2D 空間に「存在」し、現在(0;0)にあるとします。

オブジェクトは 2 つの主な制限行x=0y=0で囲まれており、一連の追加行A x+B y=C (トリプレットA、B、CはN 行 3列の配列に含まれています) によって囲まれています。

冗長な行を削除するための簡単なアルゴリズムはありますか? 私は自分のデータを MatLab に持っており、それにはたくさんの派手なネイティブ関数がありますが、どこから始めればよいかまだよくわかりません。


たとえば、すべての行A x+B y=Cの下に青色で表示され、冗長な行は赤色でマークされます。

画像へのリンク.

4

2 に答える 2

2

シンプルさと効率性が必要ですか?

最も単純なアルゴリズムは、単純にオブジェクトを並べて構築します。各ステップには、点 p と方向 v (ベクトル) があります。オブジェクトを時計回りに構築すると仮定すると、p = (0, 0) および方向 v = (0, 1) から開始します。各ステップで、値 q を比較してすべての行をソートし、p + q * v が行が v の行と交差する点になるようにします (平行線は無視します)。複雑さは O(n^2 log n) です。

于 2013-04-28T17:26:07.400 に答える