我听很多人说,编程找到非凸多边形内的点比凸多边形难。我对此感到困惑。这是真的吗?如果是,为什么呢?
我听很多人说,编程找到非凸多边形内的点比凸多边形难。我对此感到困惑。这是真的吗?如果是,为什么呢?
所以您想要检查点P是否在多边形内部或外部。
如果该多边形是凸的,那么您可以迭代每个构成该多边形的线段,并检查P位于该线段的哪一侧。如果它沿逆时针方向在所有线段的右侧,则P在多边形内部。
如果该多边形是凹的,则此算法无法工作。适用于凹多边形的算法是从P开始沿任意方向向无限追踪,并计算穿过多边形的边的次数。如果穿越次数为奇数,则P在多边形内部。此算法有许多需要考虑的边缘情况,通常更加复杂,因此编写此算法需要更多的程序员努力。
就算法正确编写难度而言,确实更难些。
就计算复杂度而言,两种算法都具有Θ(N)渐近运行时间。在这个意义上,两个问题同样困难。