-1

私は配列を持っています: int[][] lawn = new int[980][1280]; 仮想「芝生」にブレードの高さの値を保存します。

私のシミュレーションでは、芝生を回って刃を切るロボットがあります。

私のロボットは、直径 (rDiameter) の円の形をしています。座標系は Double で行われ、私の芝生は Integer です。

ロボットが動き回るときにロボットが触れたすべてのセルを 0 にするアルゴリズムを開発する必要があります。

Line2D.Double フォームに格納されている移動の開始点と終了点があり、ロボット (画像) が触れたすべてのセルを 0 に設定したいと考えています。何か案は?

(ここで、円内のすべてのデカルト点について同じ議論に関する私の以前の質問

4

1 に答える 1

0

問題を 3 つの部分に分割します。パート 1 は、半円内のすべてのポイントを 0 に設定することです。パート 2 は、長方形内のすべてのポイントを 0 に設定することです。パート 3 では、パスを 2 つの半円 (両端) と長方形 (それらを結合) に分割します。

一般に、半円と長方形には、軸が揃っていない線があることに注意してください。ポリゴンと円のラスタライズに関するリファレンスはたくさんあります。Jack Bresenham のアルゴリズムを調べることができます。または、従来のコンピュータ グラフィックス テキストをめくって開くこともできます。

于 2012-04-04T16:19:26.970 に答える