我有一个坐标列表,应该形成我需要排序的路径的边缘。我正在尝试使用 Grahams 扫描并尝试了以下几个样本:
这些代码对于我拥有的几个测试用例都失败了,我不确定出了什么问题。
编辑:
这些坐标应该是切线的一部分。如果坐标未排序,则切线会随机发生,而不是随着风暴的进展可能是直的或弯曲的正确路径。
我正在创建形成风暴路径的圆圈的切线。可以在这里看到一个例子:
编辑#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}
请指导我一个资源、算法或代码,我可以在其中找到一个可靠的浮点坐标排序算法,并且在这样做时不会消除点。速度不是优先级,准确性是优先级。
我将不胜感激所有投入。谢谢