ポリゴンをスキャンライン アルゴリズムで塗りつぶしたいと考えています。このためには、スキャンラインがポリゴンと接触するすべてのポイントを知る必要があります。このためのループを書きましたが、明らかに機能していません (リストにポイントを追加することはありません。これは、ポリゴンをカットするポイントを見つけることができないことを意味します)。ポリゴンを作成し、そこからすべてのエッジを取得できます。
ポリゴンと交差するスキャンラインのポイントを取得するためのコードは次のとおりです。xmin、xmax、ymin、ymax はポリゴンの最大ポイントです。それらも正しいです。contains() は、java.awt.Polygon クラスを使用して、Point がポリゴンの内側にあるかどうかをチェックします。これも機能しています。wasInside にはブール値が含まれており、最後にチェックされたポイントがポリゴンの内側にあるかどうかにかかわらず、古い状態が保存されます。
boolean wasInside = false;
ArrayList<Point> intersectionPoints = new ArrayList<Point>();
for (int yTemp = ymin; yTemp <= ymax; yTemp++) {
for (int xTemp = xmin; xTemp <= xmax; xTemp++) {
if (wasInside != this.contains(new Point(xTemp, yTemp))) {
intersectionPoints.add(new Point(xTemp, yTemp));
wasInside = !wasInside;
}
}
}