我需要解决一个相对简单的问题——我有 n 个顶点凸 2D 多边形和一条带有一些“y”坐标的水平(!)线。我只需要一件事:检查多边形是否与这条线相交(即有2个交叉点)。
我能想到的最快的方法是在多边形内找到最小/最大 y 坐标(循环重复 n 次,两次比较和两次存储),然后比较最小 y <= y < max y。
不知何故,我觉得这可以更“数学”地解决,但我总是以较慢的代码结束(例如矢量方式——我需要计算 n[i] 和 n[i+1] 的差异,然后将它们相乘、相加等 - - 比 2 cmps+stores 慢得多)。