矢量线段摆正-二维旋转

用途:通过一些算法,生成了一些矢量线段,但是没有保持绝对的水平、垂直,需要校正。

如下图所示,白色线为初始的矢量线段,只是能达到大致水平,红色线段为校正后,此时,红色线段已经达到绝对的水平和垂直
在这里插入图片描述
本篇内容:

  • 二维旋转相关的基础知识
  • 如何将线段旋转到水平或垂直

1 二维旋转

绕原点旋转:如下图所示,推导v点(x,y)通过二维旋转矩阵旋转到v’点(x’,y’)
在这里插入图片描述
已知:
在这里插入图片描述
通过三角函数展开公式:
在这里插入图片描述
因此,最终矩阵形式:
在这里插入图片描述
二维旋转总结:

  • 逆时针的夹角为正
  • 上述示例仅适用于逆时针旋转,顺时针旋转应当把夹角取反,再计算cos、sin值从而得到旋转矩阵

2 矢量线段摆正

步骤1:遍历线段所有顶点,找到最长的两个点p1,p2,得到直线L

步骤2:判断直线L是否垂直或者平行,可通过斜率与手动设置的阈值比较

步骤3:通过斜率计算出与X轴的夹角(平行),或与Y轴的夹角(垂直)

步骤4:通过旋转矩阵,线段中的每个顶点进行旋转,得到校正后的实现线段
PS:把绝对旋转转换为相对旋转,先将每个坐标点减去p1,旋转完毕后再加p1,如下图所示:

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值