对列表中的 2d 点顺时针排序

2024-04-09

基本上我有一个点列表,每个点都有 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(使用前将#替换为@)

对列表中的 2d 点顺时针排序 的相关文章