基本上我有一个点列表,每个点都有 X、Y、Z(Z 始终相同)。
例如:
pointList.add(Point p = new Point(1, 2, 3));
但是我无法将它们按顺时针顺序排序。
我知道中心,我知道每个列表中大约有 600 个点。
我之前已经用 Python 完成了这个任务,但在 C# 中遇到了麻烦。
Python代码:
pointlist.sort(key=lambda c:atan2(c[0], c[1]))
不确定这是否能满足您的需求。
points = points.OrderBy(x => Math.Atan2(x.X, x.Y)).ToList();
不是很优化或者什么,只是查看了你的 python 代码,并认为这会完成相同的任务。
注意:您可能需要using System.Linq
除非你已经拥有了。
编辑:
斯特姆指出,为了让它们“顺时针”排列,可能需要颠倒顺序
实现此目的的一种方法是使用OrderByDescending
代替OrderBy
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)