点绕一点o旋转
若o不是原点,则可先将a点坐标转换为相对坐标计算,计算结果再加上o点坐标。
参与计算的a点坐标实际应为 a – 0,逆时针旋转的最终计算公式如下:
b.x = ( a.x – o.x) * cos (-angle) + (a.y – o.y) * sin (-angle) + o.x
b.y =(a.y – o.y) * cos (-angle) – (a.x – o.x) * sin (-angle)+ o.y
顺时针旋转的最终计算公式如下:
b.x = ( a.x – o.x) * cos (angle) + (a.y – o.y) * sin (angle) + o.x
b.y =(a.y – o.y) * cos (angle) – (a.x – o.x) * sin (angle)+ o.y
旋转的问题解决了,但是地图上直接旋转,旋转后的多边形会变形。将经纬度坐标投影成屏幕坐标进行旋转计算,再将计算的结果投影成经纬度坐标绘制多边形。
根据地图的CRS投影投影投影一个地理坐标板条,然后根据缩放和CRS的变换对其进行缩放。结果是相对于CRS原点的像素坐标。
版权声明:本文为weixin_43813563原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。