从手册页XFillPolygon:
如果
shape是复杂的,则路径可以自相交.请注意,路径中的连续重合点不会被视为自相交.如果
shape是Convex,对于多边形内的每对点,连接它们的线段不与路径相交.如果客户端知道,指定Convex可以提高性能.如果为非凸的路径指定Convex,则图形结果未定义.如果
shape是Nonconvex,则路径不会自相交,但形状不是完全凸的.如果客户端知道,指定Nonconvex而不是Complex可以提高性能.如果为自相交路径指定Nonconvex,则图形结果未定义.
我遇到填充性能问题XFillPolygon,正如手册页所示,我想要采取的第一步是指定多边形的正确形状.我目前正在使用Complex来保证安全.
是否有一种有效的算法来确定多边形(由一系列坐标定义)是凸的,非凸的还是复杂的?
我需要一个快速算法来检查两条非无限线是否正在交叉.必须快速,因为它会在手机上运行很多.
该算法只需要返回yes或no,它不必确切地找出线交叉的位置!
我看过这里:你如何检测两个线段相交的位置? 但是这个线程是一个丛林,人们一直在说"这就是答案"但是其他两个人说这是错误的,因为这个和那个错误.
请帮我找到一个好的和有效的算法.
为了清楚起见:我需要一个你给出的函数
lineApointAx
lineApointAy
lineApointBx
lineApointBy
lineBpointAx
lineBpointAy
lineBpointBx
lineBpointBy
......并且返回true或false,具体取决于两条线是否交叉.
如果你回答(伪)代码,而不是公式,我将不胜感激.