Answers:
提示:通用简单多边形在且仅当其正好具有一个坐标小于其邻域的顶点时,才相对于轴为单调。这种观察立即提出了时间算法,至少在多边形的任何边都不垂直的情况下。x O (n )
扰流器
IsMonotone(X [0..n-1],Y [0..n-1]) local_mins←0 对于我←0至n-1 如果(X [i] <X [i + 1 mod n])和(X [i] <X [i-1 mod n]) local_mins←local_mins +1 返回(local_mins = 1)
如果您担心多边形可能具有垂直边缘,请使用以下子例程代替比较,X[i] < X[j]
以始终打破关系:
IsLess(X, i, j):
return ((X[i] < X[j]) or (X[i] = X[j] and i < j))
最后,如果是形式的其他行,则修改如下:a x + b y = cIsLess
IsLess(X, Y, i, j):
Di ← a·X[i] + b·Y[i]
Dj ← a·X[j] + b·Y[j]
return ((Dj < Dj) or (Di = Dj and i < j))