【发布时间】:2015-03-15 20:17:45
【问题描述】:
我发现了一段代码,我尝试使用它相对于指定的原点按顺时针顺序对 Vector2 的数组进行排序,但它是否有效似乎是随机的,而且它超出了我的知识能够解决它。
我从here 找到this code,我正在使用那个,但我怀疑它有问题,我无法找到问题,所以如果有问题,我需要帮助修复代码有问题。
这是我的使用方法(以防我做错了这部分):
Vector2[] clockwise = new Vector2[] { point1, point2, point3 };
Array.Sort(clockwise, new ClockwiseComparer((point1 + point2 + point3) / 3f));
提前致谢!
【问题讨论】:
-
正确设置原点,而不是添加所有向量。
-
如何“正确设置”?这 3 个点几乎是随机生成的,我需要这 3 个点按顺时针顺序排列。我认为将 3 个向量相加并除以 3 会将原点设置为中心。我做了一些测试,将中心可视化,看起来很明显我的点就是中心,所以向量应该正确排序,但它们没有。
-
您必须选择“点 0”(实际上是向量零)是什么。 IE。在 12 点钟的手表上,这将是一个 Vector(0,1) (x=0, y=1)。然后可以将向量排序为从该向量开始的角度。
-
@Darek 我不确定我是否理解。你能举个例子吗?我的向量并不总是接近 (0,0)。
-
比较器需要一个排序的起点。当数组排序时,比较器被调用以比较两个向量。
标签: c# arrays sorting vector unity3d