如何判断鼠标指针是否位于Bezier曲线和直线定义的路径内?

GLe*_*aTi 4 algorithm hit

我有一条由多条贝塞尔曲线和直线段组成的闭合路径.如何判断鼠标指针的当前位置是在路径内部还是外部?

鼠标离开该区域的示例:
在鼠标离开

鼠标进入该区域的示例:
在鼠标输入

Tom*_*Tom 5

首先,您应该检查您正在使用的图形库是否已提供此命中测试.

如果你必须自己编码,那么一个完全精确的答案需要求解二次或三次方程(取决于贝塞尔曲线的程度)来确定与这些路径的交点.关于这个问题似乎有一篇论文.

但是我认为建立路径的线性近似(即密集地评估路径)然后使用标准的多边形点测试将更加明智.这可以精确到您选择的任何公差(例如一个像素).