1
4
我之所以这么说,主要是因为这个问题引起了我的兴趣,这是我没有专业知识的问题,我想引起大家的讨论。 我拿走了 Point in Polygon pseudo-code 努力让它适合你的情况。你似乎只对确定某物是顺时针还是逆时针旋转感兴趣。这是一个简单的测试和一个非常简单的(边缘粗糙的)C#实现。
不同的是,我计算了所有点的X和Y的平均值,并将其作为“多边形中的点”值。所以,只要传入一个点数组,它就会在其中找到一些东西。 我还假设,当V I+1到达点数组的边界时,它应该环绕,这样
这还没有优化,它只是一些潜在的答案你的问题。也许你已经自己想出来了。 希望能得到建设性的批评。:) |
2
2
不,你必须在这些点上循环以确定缠绕顺序。网络上有许多算法。 http://www.engr.colostate.edu/~dga/dga/papers/point_in_polygon.pdf 我想当我需要实现它的时候,我使用了一个来自GraphicsGems书籍的算法,为地球表面修改(一个地理空间应用程序)。在我的头顶上,我认为它乘以了分量向量并求和。总数的符号给了你一个盘旋的顺序。 |
3
0
编辑: 忽略下面的所有内容。我发现了问题。 上述代码的最后一行应改为:
到
否则,代码工作得很好,我已经接受了这个答案(但我确实想给@winwaed一些道具,他用算法找到了这篇文章)。 ---忽略---(仅用于历史目的) 嗨,戴夫, 我还不确定发生了什么,但我得到了一个错误的响应“顺时针”的功能,轮廓是逆时针的。 这是其中一个轮廓,显示在Inkscape0.48中,它有一个(新的)选项,可以用微小的半箭头来显示路径的方向。如您所见,外部路径逆时针缠绕(即使函数返回顺时针方向)。
我很快就会调查。。。 |