用什么方法判断凹凸多边形的时针方向。
原来我用的是三角形矢量叉乘判断顺逆时针,看顺时针多还是逆时针多,但是这种方法在凸角多的时候是正确的,但是凹角多的时候就会出错。
------------------
\ /
\ /
| |
| |
/ \
/ \
--------------------
上述图形,有8个角,原有的方法就不能判断。
兄弟们,你们都用什么方法来判断多边形的时针方向?
问题点数:50、回复次数:6Top
1 楼happyparrot(快乐鹦鹉)回复于 2005-08-02 14:39:21 得分 0
你们都用什么方法来判断多边形的时针方向
--什么叫时针方向?凸多边形是有方向的,但凹多边形的方向你是怎么定义的呢?Top
2 楼fy719(枫雁)回复于 2005-08-02 15:03:56 得分 0
用户随手画的点,连成多边形,程序来判断是顺时针还是逆时针。Top
3 楼happyparrot(快乐鹦鹉)回复于 2005-08-02 15:13:33 得分 0
用户随手画的点,连成多边形,程序来判断是顺时针还是逆时针。
--对于凹多边形来说,不能用顺时针或者逆时针来表示。凹多边形的时针顺序是交替的。比如你画的凹多边形,显然是逆,逆,顺,顺,逆,逆,顺,顺这样的规则。Top
4 楼syy64(太平洋)回复于 2005-08-02 16:30:51 得分 20
http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=202236
上面的帖子中,面积为负,表示逆时针,为正表示顺时针。Top
5 楼alphapaopao(炮炮)回复于 2005-08-02 16:55:40 得分 0
采用差角累加方法:
假设line1, line2 是多边形中的相邻的两条边,那么定义 line1 转到 line2 的夹角是alpha。
假设 line2 在 line1 左边,则 alpha 是正的,否则 alpha 是负的。 这样 把所有这样的 alpha 累加。 最后,如果得到 2*PI 则说明 是 逆时针的,如果是 -2*PI 则是顺时针的。Top
6 楼happy__888([顾问团]寻开心 www.e-jjj.com)回复于 2005-08-02 19:24:38 得分 30
syy64(太平洋) ( ) 是对的
用面积符号法来判定,计算量O(n)
另外的办法是找到一个凸点,用凸点和它左右各自一个点组成的三角形的顺逆获得总体的顺逆
凸点处的顺逆方向和多边形的总体的顺逆方向是一致的
但是找凸点的过程也是一个搜索过程也是O(N)
本质上计算量和和面积符号法一样,除非你的多边形本身有一些特殊性,比如你知道哪点是凸点Top




