我现在正在处理一个小问题。
我正在从文件中读取一组点,我被要求找到它们内部的区域(问题还有更多,但我现在并不担心)。我得到了点数,我遇到的问题是如果点不是边缘遍历,我的区域功能不起作用。
例如:如果点集是[(0,0) , (1, 0), (1, 1), (0, 1)]
,则会将区域正确计算为1
。但是,如果点集是[(0,0) , (1, 1), (1, 0), (0, 1)]
,则它将返回0
作为区域。
如何获取点列表,让它找到遍历(顺时针或逆时针,无所谓)?我不熟悉任何快速算法。
注意:这不是凸壳问题。形状不一定必须是凸的。例如,点集[(0,0), (0,2), (1, 1), (2, 2), (2, 0)]
是有效形状。