这是一个由很多个点组成的蚕豆形状的多边形,只需要三个点就可以计算得出一个聚集地图形。
(图一)聚集地的示例图形如下图所示,有三个点(黄色方框)计算得到很多的点(红色圆圈)形成了最终的聚集地图形。
(图二)聚集的点位置第一步:判断用于绘制聚集地图形的点的个数,若不足,则重新计算得到三个基本点。其中pnts是经纬度坐标转成平面坐标后的坐标。若只有两个点pnts[0]和pnts[1],那么这两个点的中点则为mid,mid与pnts[0]的距离的0.9倍则为d,那么mid沿着pnts[0]的方向逆时针旋转90°后距离mid有d远的点就是pnt。
(图三)当用户绘制聚集地的点数不足3个时的计算图解此时,pnts将被重新赋值,有pnts[0]、pnt、pnts[1]构成绘制聚集地的基本点。
(图四)计算基本点的代码第二步:计算各个基本点的法线上的两个点。
(图五)计算法线端点的图解计算pnts[0]和pnts[2]的中点得到mid点,然后将mid、pnts[0]和pnts[1]加入到pnts中,这样做是为了方便计算mid和pnts[0]的法线端点,只需要一次循环就够了。
(图六)计算法线端点的代码第三步:将聚集地分为4段,计算每一段上的所有的三次贝塞尔曲线点坐标。
(图七)分解聚集地图形 (图八)分解聚集地图形后一次计算曲线上的点的代码第五步:将所有点假如一个数组中并转为经纬度赋值给多边形,刷新图形即可。
网友评论