基本上我有一个点列表,每个点都有X,Y,Z(Z总是相同的).
例如:
pointList.add(Point p = new Point(1, 2, 3));
Run Code Online (Sandbox Code Playgroud)
但是我无法将它们按顺时针顺序排序.
我知道中心,我知道每个列表中大约有600个点.
我以前用Python完成了这个,但是我在C#中遇到了麻烦.
Python代码:
pointlist.sort(key=lambda c:atan2(c[0], c[1]))
Run Code Online (Sandbox Code Playgroud)
不确定这是否能满足您的需求.
points = points.OrderBy(x => Math.Atan2(x.X, x.Y)).ToList();
Run Code Online (Sandbox Code Playgroud)
没有非常优化或任何东西,只是看看你的python代码,并认为这将完成相同的.
注意:您可能需要,using System.Linq除非您已经拥有它.
编辑:Sturm指出,逆转顺序可能是必要的,以便他们'按时钟''实现这一点的一种方法是使用OrderByDescending而不是OrderBy.