Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 比较两组XY坐标并将其对齐_C#_Geometry_2d_Computational Geometry - Fatal编程技术网

C# 比较两组XY坐标并将其对齐

C# 比较两组XY坐标并将其对齐,c#,geometry,2d,computational-geometry,C#,Geometry,2d,Computational Geometry,我有两组X,Y坐标作为单独的列表。两者都表示相同的不规则多边形形状,但方向和大小/比例不同 需要用C#编写一个程序,比较两个点集,旋转任意一个形状,使其和另一个对齐,使它们处于相同的方向 尝试寻找解决方案,并了解到使用带有角度差的凹面外壳可以有所帮助,但无法找到一个适用于相同情况的良好C#实现 有人能帮我吗,如果有一个最小的方法来实现这一点 编辑:两个点集可能不相同。一个可能包含比另一个多的点。 我有一个形状和一个PNG的轮廓坐标,它们的形状相同,但方向不同。我想阅读PNG,计算角度以使其适合轮

我有两组X,Y坐标作为单独的列表。两者都表示相同的不规则多边形形状,但方向和大小/比例不同

需要用C#编写一个程序,比较两个点集,旋转任意一个形状,使其和另一个对齐,使它们处于相同的方向

尝试寻找解决方案,并了解到使用带有角度差的凹面外壳可以有所帮助,但无法找到一个适用于相同情况的良好C#实现

有人能帮我吗,如果有一个最小的方法来实现这一点

编辑:两个点集可能不相同。一个可能包含比另一个多的点。

我有一个形状和一个PNG的轮廓坐标,它们的形状相同,但方向不同。我想阅读PNG,计算角度以使其适合轮廓。

为点云计算

使用
Theta
角度评估两个云的方向

通过θ差旋转一个云


使用其他力矩(质心等)查找平移和缩放

您可以先计算到两个列表中的点的距离,然后比较它们。应该能够看到一个因素是否是另一个因素。如果你知道因子,你可以放大或缩小一个,看看它们是否相等。你要做的主要事情是计算每个角度。在一对“相同的不规则多边形形状,但方向和尺寸/比例不同”中,角度顺序相同。得到相同的角度列表,您将知道一个多边形中的哪些角与另一个多边形中的哪些角对齐。也就是说,如果不在问题中显示一些代码,您可能不会得到任何答案。谢谢@fstam,但我这里的主要要求是将一个形状相对于另一个旋转,以便它们匹配并定向。基本上,我希望我必须找到它们之间的角度差,从设定的点开始,旋转一个到那个角度,使它与另一个对齐。有什么想法吗?只是大声想一想。尝试根据中心对每个集合进行排序,您可以找到中心,然后将两个集合的前两点作为多边形的一侧,并计算它们之间的角度。然后围绕中心旋转一个多边形。显示示例。我们不能盲目地回答。根据设计,Hu矩是旋转不变的。可以使用协方差矩阵,但在对称云的情况下,它会失败。瞬间的定向是一个令人不安的问题。@Yves Daoust是的,只是中心瞬间。关于对称-作者提到了
不规则
(虽然我们还没有看到示例),不规则与对称并不矛盾。但除此之外,非对称多边形可以具有对称矩。力矩定向是一个不容易解决的问题。@Yves Daoust同样怀疑使用旋转卡尺的凸面壳体的最小/最大直径。矩计算可能是迭代最近点算法的先决条件(可能有点过头了)。是的,点云的方向是一个不容易解决的问题。在坏的情况下,任何角度都可能是错误的。