用途:通过一些算法,生成了一些矢量线段,但是没有保持绝对的水平、垂直,需要校正。
如下图所示,白色线为初始的矢量线段,只是能达到大致水平,红色线段为校正后,此时,红色线段已经达到绝对的水平和垂直
本篇内容:
- 二维旋转相关的基础知识
- 如何将线段旋转到水平或垂直
1 二维旋转
绕原点旋转:如下图所示,推导v点(x,y)通过二维旋转矩阵旋转到v’点(x’,y’)
已知:
通过三角函数展开公式:
因此,最终矩阵形式:
二维旋转总结:
- 逆时针的夹角为正
- 上述示例仅适用于逆时针旋转,顺时针旋转应当把夹角取反,再计算cos、sin值从而得到旋转矩阵
2 矢量线段摆正
步骤1:遍历线段所有顶点,找到最长的两个点p1,p2,得到直线L
步骤2:判断直线L是否垂直或者平行,可通过斜率与手动设置的阈值比较
步骤3:通过斜率计算出与X轴的夹角(平行),或与Y轴的夹角(垂直)
步骤4:通过旋转矩阵,线段中的每个顶点进行旋转,得到校正后的实现线段
PS:把绝对旋转转换为相对旋转,先将每个坐标点减去p1,旋转完毕后再加p1,如下图所示: