我有一个 2D 点列表 (x1,y1),(x2,y2)......(Xn,Yn) 代表一个曲线段,是否有任何公式可以确定绘制该段的方向是顺时针还是逆时针?
任何帮助表示赞赏
最佳答案
一种可能的方法。如果由您的点列表表示的线的采样足够均匀和平滑,并且线足够简单,它应该可以很好地工作。
我假设你有
x
和 y
向量中的数据。theta = cart2pol(x-mean(x), y-mean(y)); %// steps 1 and 2
theta = unwrap(theta); %// step 3
clockwise = theta(end)<theta(1); %// step 4. Gives 1 if CW, 0 if ACW
这仅考虑了所有点的综合作用。它不会告诉您是否存在“扭结”或沿途转弯方向不同的部分。
一种可能的改进是用某种积分替换
x
和 y
的平均值。原因是:如果一个区域中的采样更密集,则平均值将偏向于此,而积分则不会。关于algorithm - 判断线段的方向是顺时针还是逆时针,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25252664/