1

誰かが私にヒントを与えたり、次の(できれば興味深い:-))問題を手伝ってくれませんか。

JavaProgramm に 2 つの GeneralPath があり、それらの間のストリップラインを見つけたいと思います。

次の状況:

私は2つのGeneralPath AとBを持っています

A は 3 つの点 ( moveto 、 lineto 、 lineto 、 close ) を持つ黄色の三角形です。

B (赤) は三角形で、減算 BA の結果です。

B = new Area(gp_B); // General path B area object
A = new Area(gp_A); // General path A area object
B.subtract(A);

B は減算後に 4 点を持っています。したがって、A & B と GeneralPath の間に交差はなくなり、A には GeneralPath B のポイントと一致するポイントがありません。

ここに画像の説明を入力

それらの間のストリップラインを見つけるにはどうすればよいですか?

私の例は、説明をわかりやすくするために単純化されています。私の GeneralPath A & B には、Cubeto を使用した Beziercurves も含めることができます。

ここに画像の説明を入力

よろしくアンドレアス

4

1 に答える 1

0

あなたが望む答えを得られるとは思えないので、最初に、タスクの複雑さを制限するためのヒントをいくつか紹介します。

私はあなたの仕事をいわゆる単純なポリゴンに減らします。それは自己交差しないポリゴンです。それが機能したら、ベジエ パスに拡張してみてください。
一般的なパスのタスクを実行するには、これは非常に困難です (これは、仕事に 6 か月の時間が与えられている修士論文ですか、それとも、顧客が支払っても構わないと思っている CAD システムですか?)

それでもやりたい場合は
、最も複雑なシナリオを手で描き始めます。完全に重なっています (木製の十字架のように)。

じゃあ引き算は誰がするの?それは準備ができていますか?減算にどのような制限があるか (単純なポリゴンと非単純なポ​​リゴン)

1つの可能性:

減算のソースコードを取得し、理解しようとし、切断を行う部分を拡張して、追加のストライプパスを返すようにします。

他の解決策:

A1: 古いオブジェクトとカット後のポイントを比較します。新しく導入されたポイントを決定します。古いポイントに到達するまで、パス上の 1 つのポイントに従います。他の方向でもそれを行います。両方向を連結します。

すべての新しいポイントに対してこれを行い、最終的にストライプのリストを取得します。おそらく、重複した行を削除してクリーンアップする必要があります。

于 2013-02-03T13:38:21.387 に答える