查找三角形是否位于图像内的指定区域内

Find if a triangle lies within a specified region inside an image

提问人:Aleenah 提问时间:5/31/2023 最后编辑:Christoph RackwitzAleenah 更新时间:5/31/2023 访问量:61

问:

我想了解这段代码背后的逻辑。这段代码是用 python 编写的,它告诉三角形是否位于特定区域内。“顶点”包含三角形的三个顶点,“p”包含特定区域中的所有点?

def func(vertices, p):
    a, b, c = vertices
    cross1 = np.cross(b - a, p - a) <= 0
    cross2 = np.cross(c - b, p - b) <= 0
    cross3 = np.cross(a - c, p - c) <= 0
    return ~(cross1 ^ cross2) & ~(cross2 ^ cross3)

我无法理解其中的逻辑。请帮忙。谢谢

Python 数学 图形 几何 交叉乘积

评论

3赞 Christoph Rackwitz 5/31/2023
布尔表达式和按位表达式的混合是复杂的,并导致无用的垃圾(负整数,-1 或 -2,具体取决于操作数)。不要混淆这些东西。坚持使用布尔运算。除此之外,它是解决的(我想我已经说过了),所以总的来说这也是一个糟糕的主意。 是有效的 python,实际上是正确和可读的cross1 == cross2 == cross3
1赞 MBo 5/31/2023
这个函数说点 p 是否位于三角形内。同意克里斯托夫关于奇怪的最后一行。
0赞 Aleenah 6/2/2023
谢谢@ChristophRackwitz。这很有帮助。你能解释一下你说“表情是复杂的”是什么意思吗?我一般都知道卷积运算,但它在这里是什么意思?
0赞 Christoph Rackwitz 6/2/2023
不是“卷积”,而是“卷积”,意思是复杂、扭曲、巴洛克、拜占庭、不透明、难以理解......,如果不是布尔运算和按位运算的混合,将是(伪代码),相当于 .然后,整个表达式读为~(cross1 ^ cross2)not (cross1 xor cross2)cross1 == cross2(cross1 == cross2) and (cross2 == cross3)

答: 暂无答案