gpt4 book ai didi

algorithm - 如何找到矢量路径的方向

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:25:41 25 4
gpt4 key购买 nike

我有一个矢量路径(由 lineto、curveTo 点组成),我想确定它的方向(顺时针、逆时针)。

是否有任何算法可以用于相同的?

我想这样做的原因是我从不同的函数获得了两条路径;一个总是顺时针,但另一个函数有时会返回逆时针路径;当我组合这两条路径并填充合成路径时,非零缠绕填充规则会在路径重叠的区域创建一个洞。

所以我试图通过在合并之前将所有路径转换为顺时针方向来解决问题。

最佳答案

编辑:查看下面的评论:

什么是顺时针?举个例子。你认为这条路是顺时针的吗?:

alt text

如果你说是,那么这个呢?

alt text

遵循我最初的建议,该建议适用于凸路径:

您可以使用 3D 向量的叉积。

如果 a,b 两个向量使得:

a = (a1, a2, a3)

b = (b1, b2, b3)

那么叉积就是

axb = (a2b3-a3b2, a3b1-a1b3, a1b2 - a2b1)

现在,如果您假设您描述的路径不与自身相交(这会使顺时针或逆时针点无效),那么您所需要的只是路径的前三个点(按它们出现的顺序)。然后从中创建 2 个向量,您可以计算其叉积。

假设您按顺序排列了这些点:

a = (a1, a2)

b = (b1, b2)

c = (c1, c2)

您创建以下向量:

A = (A1, A2) = ab = (b1-a1, b2-a2)

B = (B1, B2) = bc = (c1-b1, c2-b2)

然后您只需要 AxB 的第三个坐标,即:

A1B2 - A2B1

or

(b1-a1)(c2-b2) - (b2-a2)(c1-b1)

如果此坐标为正则您的路径为逆时针,如果为负则为顺时针。

关于algorithm - 如何找到矢量路径的方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4437986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com