1

点で表現された凸多角形があります。点はx 座標配列と y座標の配列で表されます。

例えば:

X = {6, 1, 5, 0, 3}
Y = {4, 0, 0, 4, 6}

このポイントを時計回りに並べ替えるにはどうすればよいですか? ポイントの数は常に同じではありませんが、ポリゴンは依然として凸状です。


atan2 またはmath.hの他の関数を使用しない解決策はありますか?

4

2 に答える 2

3

極角でソートすることをお勧めしますが、そのためには凸多角形の内側を原点とする方がよいでしょう。そのようなポイントを取得するには、ポリゴンの対角線の中間点を使用できます。たとえば、 ( (x[0] + x[2])/2, (y[0]+y[2])/2 )。

于 2011-11-06T10:53:27.077 に答える
2

それらを極座標に変換することで回避できると思います。Cにはatan2次のようなものがあります:

atan2(y[0], x[0]);

それぞれの角度を取得したら、それらを使用してポイントを並べ替えることができます。

于 2011-11-06T10:46:06.803 に答える