如何判断多边形是顺时针绘制还是逆时针绘制

这篇博客介绍了如何通过JavaScript判断多边形是由顺时针还是逆时针绘制的。核心思想是选取多边形中X坐标最大的点作为某一点,然后计算该点与其前后两点构成的向量的叉乘,根据叉乘结果的正负判断多边形的旋转方向。提供了一段具体的代码实现,用于处理多边形坐标数组。
摘要由CSDN通过智能技术生成

## js判断多边形是顺时针绘制还是逆时针绘制
方法:循环遍历多边形的坐标选取X或者Y值中最大或者最小的点,这个点必然是凸点(**本文以选取X最大为例**),*记住必须要选择多边形的凸点,选择凹的的话对多余顺时针的多边形会不成立的*

**原理:**
然后根据三个点组成的两个向量乘积判断,
设 p1=(x1,y1),   p2=(x2,y2),   p3=(x3,y3)  
 求向量    p12=(x2-x1,y2-y1)     p23=(x3-x2,y3-y2)  
则当 p12 与 p23 的叉乘(向量积) p12   x   p23   =   (x2-x1)*(y3-y2)-(y2-y1)*(x3-x2)  
结果:
为正时,p1-p2-p3   路径的走向为逆时针,  
为负时,p1-p2-p3   走向为顺时针,  
为零时,p1-p2-p3   所走的方向不变,亦即三点在一直线上。

具体代码:
 /**
             * @param coordsArr:多边形坐标数组(三维数组,每个地块为第一维数组的一个值)
             * @return handType:返回的顺序和数组地块的顺序一一对应,true:为顺时针,false:逆时针,null:不是多边形
             * 格式:
             * data:[
             *  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值