ソートする必要があるパスのエッジを形成する座標のリストがあります。グラハムスキャンを使用しようとしており、次のサンプルをいくつか試しました。
これらのコードは、私が持っているいくつかのテスト ケースで失敗し、何が問題なのかわかりません。
編集:
これらの座標は、接線の一部であると想定されています。座標がソートされていない場合、接線は、嵐が進行するにつれて直線または曲線になる可能性のある適切なパスではなく、危険にさらされます。
嵐の進路を形成する円の接線を作成しています。例を次に示します。
編集#02
接線を形成する点が整っている場合、正しい形状 (最後の半円は無視してください) は次のようになります。
テストケース:
テストケース#01
[0]: {X = 11.581625 Y = -110.983437}
[1]: {X = 11.1816254 Y = -108.983437}
[2]: {X = 11.88781 Y = -113.115852}
[3]: {X = 11.587204 Y = -111.015938}
[4]: {X = 12.1884336 Y = -115.215759}
[5]: {X = 11.88781 Y = -113.115845}
[6]: {X = 12.5794077 Y = -116.863365}
[7]: {X = 12.1794081 Y = -115.163368}
[8]: {X = 13.0785418 Y = -118.855026}
[9]: {X = 12.5785418 Y = -116.855026}
[10]: {X = 13.534234 Y = -119.732178}
[11]: {X = 13.034234 Y = -118.732178}
テストケース#02
[0]: {X = 10.4182844 Y = -111.21611} [1]: {X = 10.0190592 Y = -109.21595} [2]: {X = 10.712142 Y = -113.283806} [3]: {X = 10.4127483 Y = -111.183716} [4]: {X = 11.0115175 Y = -115.383896} [5]: {X = 10.712141 Y = -113.2838} [6]: {X = 11.4204569 Y = -117.136063} [7]: {X = 11.0213022 Y = -115.435867} [8]: {X = 11.9213 Y = -119.144341} [9]: {X = 11.4223957 Y = -117.144066} [10]: {X = 12.4652023 Y = -120.266693} [11]: {X = 11.9662571 Y = -119.266167}
テストケース#03
[0]: {X = 10.6 Y = -109.1} [1]: {X = 11.0 Y = -111.1} [2]: {X = 11.3 Y = -113.2} [3]: {X = 11.6 Y = -115.3} [4]: {X = 12.0 Y = -117.0} [5]: {X = 12.5 Y = -119.0} [6]: {X = 13.0 Y = -120.0}
浮動小数点座標の信頼できる並べ替えアルゴリズムを見つけることができ、その間に点を削除しないリソース、アルゴリズム、またはコードを親切に案内してください。スピードが優先ではなく、正確さが優先されます。
すべての入力に感謝します。ありがとう