0

非常に規制されたポリゴンに対して線をクリップする必要があります。多角形は常にユークリッド軸に沿った長方形であり、角が「切り取られている」場合があります。この写真を見て、私が言いたいことを理解してください。

ここに画像の説明を入力

角は、エッジの 1 つでポイントが形成されるようにカットできますが、それ以上はカットできません。場合によっては (ほとんどの場合、実際には) コーナーがカットされず、これらのケースに対処するために Cohen-Sutherland アルゴリズムを実装しましたが、コーナーがカットされたときにそれを行う方法について途方に暮れています。多角形に対して線をクリッピングするための一般的なアルゴリズムがあると思いますが、これについてはあまり知りません。また、これはおそらく私の状況ではやり過ぎです。私が扱っているポリゴンは、常に単純で、凹状で、モノトーンです。これに適した(できれば単純な)アルゴリズムはありますか?

4

1 に答える 1

3

これを行う1つの方法は次のとおりです。

For each side of a convex polygon
  p = the intersection point between line and the polygon side
  if p lies between the endpoints of the polygon side, save point p
  if there are two saved points then exit the loop
next

答えの 2 点間に線を引きます。ラインがポリゴンの頂点を通過する場合は注意してください。丸め誤差が問題を引き起こす可能性があります。

于 2013-01-25T22:17:47.130 に答える