gpt4 book ai didi

algorithm - 多边形的对角线在里面还是外面?

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

我有三个连续的多边形点,比如 p1、p2、p3。现在我想知道 p1 和 p3 之间的正交是在多边形内部还是在多边形外部。

我通过使用三个向量 v1、v2 和 v3 来做到这一点。多边形中点 p1 之前的点表示 p0。

v1 = (p0 - p1)<br/>
v2 = (p2 - p1)<br/>
v3 = (p3 - p1)

引用this问题,我正在使用该问题的已接受答案中显示的方法。它仅适用于逆时针。如果我的点是顺时针怎么办。

我也知道我的整个多边形是顺时针还是逆时针。因此我选择了向量 v1 和 v2。但我还是遇到了一些问题。我正在展示一个我遇到问题的案例。

alt text

这个多边形是逆时针的。并且它是从v1和v2的起源开始的。

最佳答案

因为你的点是连续的,你可以通过检查三角形 p1 p2 p3 的方向来解决这个问题。如果方向与多边形的方向相同,则对角线在内部,否则在外部。

要确定三角形的方向,最简单的方法是计算带符号的面积并检查符号。计算

p1.x * p2.y + p2.x * p3.y + p3.x * p1.y - p2.x * p1.y - p3.x * p2.y - p1.x * p3.y

如果此值的符号为正,则方向为逆时针方向。如果符号为负,则方向为顺时针。

准确地说,上面的方法只给出了对角线位于多边形的哪一侧的信息。显然,多边形仍然可以在后面的点与对角线相交。

关于algorithm - 多边形的对角线在里面还是外面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2816572/

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