wmz 发表于 2020-10-5 14:15:08

如何判定任意多边形线段是顺时针还是逆时针?

如何判定任意多边形线段是顺时针还是逆时针?须要考虑各多边形为形状各异且各个多边形之间靠的很近的复杂情况。谢谢了!

wzg356 发表于 2020-10-6 12:50:46

g版那个有偏移失败的瑕疵,这个保险
;;;---------------------- 高飞函数改造------------------------------;
;;;功能: 判断多边形的方向(为简单多边形,不自交的多边形);
;;;输入: 多边形顶点列表Pts                           ;
;;;输出: 返回T则是顺时针,否则逆时针            ;
;;;(POLY:clockwise pts)
(defun POLY:clockwise (Pts / MAT:Det2V)
        (defun MAT:Det2V (v1 v2)
                (-         (* (car v1) (cadr v2))
                  (* (car v2) (cadr v1))
                )
        )
        (< (* (apply '+
                     (mapcar 'MAT:Det2V pts
                             (append (cdr Pts) (list (car Pts)))
                          )
                   ) 0.5
               ) 0.0
        )
)
参数是点集

自贡黄明儒 发表于 2020-10-5 14:19:21

去看G版的那个帖子

wmz 发表于 2020-10-5 15:10:08

谢谢!刚看到用鞋带公式求面积,以正负判断顺逆,试了一下似乎可以。

自贡黄明儒 发表于 2020-10-7 09:47:33

wzg356 发表于 2020-10-6 12:50
g版那个有偏移失败的瑕疵,这个保险
;;;---------------------- 高飞函数改造--------------------------- ...

这个是你自已写的吧。记得G版那个是包围盒角点往曲线投影,每三个点判断一下,有三个是顺时针的话,就是顺时针,适用于不相交曲线。

wzg356 发表于 2020-10-7 10:10:08

自贡黄明儒 发表于 2020-10-7 09:47
这个是你自已写的吧。记得G版那个是包围盒角点往曲线投影,每三个点判断一下,有三个是顺时针的话,就是 ...

高飞有这个函数,我是把他的函数合并进去成型的,我也看不懂高飞那么高深的

多年没逛论坛了,不知G版又有新的了,还请包涵。以前确用过他一个偏移法判断的。

自贡黄明儒 发表于 2020-10-7 10:18:56

wzg356 发表于 2020-10-7 10:10
高飞有这个函数,我是把他的函数合并进去成型的,我也看不懂高飞那么高深的

多年没逛论坛了,不知G版 ...

查一下点积,叉积的几何意义,就能明白高大师函数了

dandee 发表于 2021-12-29 04:28:27

多边形线段是顺时针还是逆时针 可以用上线性代数里的向量叉积,,简单方便,,牛人啊,学习了

vladimir 发表于 2022-1-31 13:59:44

非常好的代码,谢谢楼主分享。
页: [1]
查看完整版本: 如何判定任意多边形线段是顺时针还是逆时针?