二维向量旋转

python 实现二维向量旋转 python实现二维向量旋转问题描述选定基向量计算两向量夹角使用叉积二次判断旋转角大小构建旋转矩阵计算新向量坐标 问题描述 现有一起点在原点 (0,0) 处的向量 (-5,-8)。选择一个基向量 (此基向量可以选任意方向、大小)。要将现有向量旋转至基向量方向,该怎么做? 选定基向量 设定基向量为 (0,2)。则: # 基向量 v1 = np.asarray((0,1)) v2 = np.asarray((-5,-8)) 计算两向量夹角 # 计算方向向量 unit_v1 = v1 / np.linalg. 阅读详情


转: http://hi.baidu.com/haochaoqing/item/89b2090c1ff33ae4f45ba655

基础的2-D绕原点旋转 

在2-D的迪卡尔坐标系中,一个位置向量的旋转公式可以由三角函数的几何意义推出。比如上图所示是位置向量R逆时针旋转角度B前后的情况。在左图中,我们有关系:

  x0 = |R| * cosA

  y0 = |R| * sinA

  =>

  cosA = x0 / |R|

  sinA = y0 / |R|

  在右图中,我们有关系:

  x1 = |R| * cos(A+B)

  y1 = |R| * sin(A+B)

  其中(x1, y1)就是(x0, y0)旋转角B后得到的点,也就是位置向量R最后指向的点。我们展开cos(A+B)和sin(A+B),得到

  x1 = |R| * (cosAcosB - sinAsinB)

  y1 = |R| * (sinAcosB + cosAsinB)

  现在把

  cosA = x0 / |R|

  sinA = y0 / |R|

  代入上面的式子,得到

  x1 = |R| * (x0 * cosB / |R| - y0 * sinB / |R|)

  y1 = |R| * (y0 * cosB / |R| + x0 * sinB / |R|)

  =>

  x1 = x0 * cosB - y0 * sinB

  y1 = x0 * sinB + y0 * cosB

  这样我们就得到了2-D迪卡尔坐标下向量围绕圆点的逆时针旋转公式。顺时针旋转就把角度变为负:

  x1 = x0 * cos(-B) - y0 * sin(-B)

  y1 = x0 * sin(-B) + y0 * cos(-B)

  =>

  x1 = x0 * cosB + y0 * sinB

  y1 = -x0 * sinB + y0 * cosB

  现在我要把这个旋转公式写成矩阵的形式,有一个概念我简单提一下,平面或空间里的每个线性变换(这里就是旋转变换)都对应一个矩阵,叫做变换矩阵。对一个点实施线性变换就是通过乘上该线性变换的矩阵完成的。好了,打住,不然就跑题了。

所以2-D旋转变换矩阵就是:

[cosA sinA]      [cosA -sinA]
[-sinA cosA] 或者 [sinA cosA]

  我们对点进行旋转变换可以通过矩阵完成,比如我要点(x, y)绕原点逆时针旋转:

          [cosA sinA]
[x, y] x [-sinA cosA] = [x*cosA-y*sinA x*sinA+y*cosA]
为了编程方便,我们把它写成两个方阵

[x, y]   [cosA sinA]   [x*cosA-y*sinA x*sinA+y*cosA]
[0, 0] x [-sinA cosA] = [0              0            ]

也可以写成

[cosA -sinA]   [x 0]   [x*cosA-y*sinA 0]
[sinA cosA] x [y 0] = [x*sinA+y*cosA 0]

三、2-D的绕任一点旋转

  下面我们深入一些,思考另一种情况:求一个点围绕任一个非原点的中心点旋转。

  我们刚刚导出的公式是围绕原点旋转的公式,所以我们要想继续使用它,就要把想要围绕的那个非原点的中心点移动到原点上来。按照这个思路,我们先将该中心点通过一个位移向量移动到原点,而围绕点要保持与中心点相对位置不变,也相应的按照这个位移向量位移,此时由于中心点已经移动到了圆点,就可以让同样位移后的围绕点使用上面的公式来计算旋转后的位置了,计算完后,再让计算出的点按刚才的位移向量 逆位移,就得到围绕点绕中心点旋转一定角度后的新位置了。看下面的图



现在求左下方的蓝色点围绕红色点旋转一定角度后的新位置。由于红色点不在原点,所以可以通过红色向量把它移动到原点,此时蓝色的点也按照这个向量移动,可见,红色和蓝色点的相对位置没有变。现在红色点在原点,蓝色点可以用上面旋转变换矩阵进行旋转,旋转后的点在通过红色向量的的逆向量回到它实际围绕下方红色点旋转后的位置。
在这个过程中,我们对围绕点进行了三次线性变换:位移变换-旋转变换-位移变换,我们把它写成矩阵形式:
设红色向量为(rtx, rty)

[x y 1]   [1   0   0]   [cosA sinA 0]   [1    0    0]   [x' y' -]
[0 1 0] x [0   1   0] x [-sinA cosA 0] x [0    1    0] = [- - -]
[0 0 1]   [rtx rty 1]   [0     0    1]   [-rtx -rty 1]   [- - -]

  最后得到的矩阵的x'和y'就是我们旋转后的点坐标。

python实现二维向量旋转 (附完整源码) python实现二维向量旋转 (附完整源码) 阅读详情

相关推荐

NX二次开发-UFUN使一个二维向量围绕垂直于该平面的直线旋转 向量通过向量原点UF_VEC2_rotate

NX二次开发-UFUN使一个二维向量围绕垂直于该平面的直线旋转 向量通过向量原点UF_VEC2_rotate

阿飞2018 131

向量旋转公式(转)

在二维坐标系中,一个位置向量的旋转公式可以由三角函数的几何意义推出.比如上图所示是位置向量R逆时针旋转角度B前后的情况. 在左图中,我们有关系:  x0 = |R| * cosA => cosA = x0 / |R|  y0 = |R| * sinA => sinA = y0 / |R|  在右图中,我们有关系:...

weixin_30511107的博客 2797

Unity向量按照某一点进行旋转

本文实例为大家分享了Unity向量按照某一点进行旋转的具体代码,供大家参考,具体内容如下 一、unity的旋转 首先要知道一点就是在Unity的旋转中使用过四元数进行旋转的,如果对一个物体的rotation直接赋值你会发现结果不是你最终想要的结果,这个时候我们需要去借助Quaternion来进行旋转。 二、向量按照原点进行旋转 用到的Unity内置方法Quaternion.AngleAxis(float angle,Vector3 axis) 第一个参数就是我们需要旋转的角度 angle大于0时是按照顺时针的方向进行旋转,angle小于0是按照逆时针的方向旋转,这里的旋转时按照坐标原点进行的旋

二维空间下的向量旋转

向量运算是计算机图形学的数学基础,而向量的旋转是向量的一种常见操作,本文将详细讲解向量在二维空间下的旋转原理。在前端项目中,旋转一个元素我们会使用CSS的rotate函数,本文会让你对rotate有一个全新的认识。向量二维中间中的向量其实就是一个包含了两个数值的数组,一个是 x 坐标值,一个是 y 坐标值。向量既可以表示一个“点”(x, y),也可以表示一个从原...

淘系技术 2859

AI大模型应用性能核心指标:TTFT 与 TPOT 详解

这两个指标专门衡量大模型流式响应性能,是评估用户体验的关键指标。· 是什么:从请求到第一个输出的等待时间· 为什么重要:决定用户的第一印象和响应感知· 优化方向:模型加载、预处理、冷启动优化· 行业标准:最好<500ms,可接受<1.5s· 是什么:每个输出token的平均生成时间· 为什么重要:决定流式输出的流畅度和总完成时间· 优化方向:推理引擎、内存带宽、批处理优化· 行业标准:最好<50ms/token,可接受<100ms/token在Dify/大模型应用中的意义。

lovehu6686的博客 3972

DEAP数据集实战指南:从脑电信号到情绪分类的完整流程解析

本文提供了DEAP数据集在脑电信号情绪识别领域的完整实战指南。详细解析了数据下载、结构理解、频带功率特征提取等核心步骤,并演示了如何构建和评估机器学习分类模型,为研究者实现从原始脑电信号到情绪分类的完整流程提供了清晰路径。

jj890的博客 903

二维坐标系中的向量旋转公式

  1、在二维坐标系中,一个向量可以使用三角函数来表示,左图中的向量用三角函数表示为: x0 = |R| * cosA y0 = |R| * sinA 2、右图是将左图中向量逆时针旋转B之后得到的向量,它的向量可表示为: x1 = |R| * cos(A + B) = |R| * cosA * cosB - |R|* sinA * sinB y1 = |R| * sin(A + B) ...

whocarea的博客 3万+

因时机器人-灵巧手配置方案(Ubuntu18.04)

因时机器人-灵巧手配置方案(Ubuntu18.04)

CH_monsy的博客 3850

向量的旋转矩阵

那么,这一理论的数学机理是什么呢?以及,这个旋转角度该怎么用矩阵表示呢?本文用二维向量旋转来推导旋转矩阵的公式。假设,我们有一个向量。我们用极坐标表示向量P和向量Q,默认原点是向量的起点,分别表示P和Q与x轴正向的夹角。,准备通过一个旋转矩阵将其旋转到。矩阵的乘法可以表示旋转。

木盏 2118

Tessent实战:网表扫描链插入全流程解析

本文详细解析了使用Tessent工具为网表插入扫描链(Scan Chain)的全流程。从前期环境配置、网表检查,到扫描链数量、时钟域等核心配置,再到执行扫描单元替换与连接,最后进行结果验证与文件输出。文章提供了关键命令与实用技巧,帮助工程师高效完成DFT设计,确保芯片可测试性。

hhh00的博客 747

Android11 关于三方应用获取su权限

SELinux,全称Security-Enhanced Linux,是一种基于Linux内核的安全机制。它通过强制访问控制(MAC)来增强Linux系统的安全性,如果不禁用SELinux,完成下面的修改可能会导致设备进入Recovery界面!adb shell getenforce 为Permissive(宽容模式),查看报错日志,发现是客户apk想使用su命令提权,但是没有权限!对于保护系统资源和防止未经授权访问非常有帮助!系统这边做修改,让su权限下放到三方应用.客户的apk运行报错。

sinat_37429535的博客 1902

二维旋转矩阵

设有二维向量 vxy,将其旋转 θ度(逆时针旋转时 θ0;顺时针旋转时 θ0旋转矩阵 R可以表示为:Rcosθsinθ​−sinθcosθ​旋转后的向量 v′可以通过以下公式计算:v′Rv将 v和 R代入,我们得到:v′cosθsinθ​−sinθcosθ​xy​所以旋转后的向量 v′的坐标为 (xcosθ−ysinθxsinθycosθ。

风滞舞生的博客 1003

新手也能搞定的ANPC三电平逆变器Simulink仿真:从SPWM调制到开关损耗优化

本文详细介绍了如何在Simulink中搭建ANPC三电平逆变器仿真模型,从SPWM调制基础到开关损耗优化技巧。通过分层设计思路和实用代码示例,帮助新手快速掌握ANPC拓扑的核心功能,包括中点平衡控制和性能指标分析,为电力电子系统设计提供实践指导。

weixin_30335575的博客 409

二维向量的旋转公式

二维向量的旋转公式 可以参考下面这篇文章 传送门 下面我再简单说下怎么证明: 考虑变换前后的坐标。 变换前的角度为α\alphaα,变化换的角度为α+β\alpha+\betaα+β 因为半径RRR不变,所以将cos⁡α,sin⁡α\cos \alpha,\sin \alphacosα,sinα 用之前的坐标表示。 然后就可以得到公式了。 ...

Harris-H的博客 2909

【嵌入式Linux】EC20模块多运营商自适应PPP拨号实战:从IMSI识别到网络配置

本文详细介绍了在嵌入式Linux系统中,如何基于EC20 4G模块实现多运营商自适应PPP拨号。通过解析SIM卡的IMSI识别运营商,并动态配置对应的APN和拨号参数,结合AT指令交互与健壮的pppd脚本,解决了设备跨地域部署时的网络自动连接问题,提升了物联网设备的部署效率和稳定性。

fox11的博客 904

STM32 BOOTLOADER配置以及APP跳转实现(裸机)

Bootloader是硬件启动的引导程序,是运行操作系统的前提。在操作系统内核或用户应用程序运行之前运行的一段小代码。对硬件进行相应的初始化和设定,最终为操作系统准备好环境。APP就是我们的应用程序,经过硬件引导程序之后跳转到系统程序运行。

吻等离子的博客 3356

向量表示 运动抛物线_二维旋转矩阵与向量旋转

基本思想:处于某二维空间中的任意向量,可以通过标准正交基来表示。通俗来讲,就是用坐标系来表示。不过表示这个向量的不是x轴和y轴坐标,而是二维的基向量。我们可以联想一下物理中的静止参考系和动参考系。动静参考系在这里对应于动静坐标系。向量旋转的同时,动坐标系是相对于这个向量不动的,相对于静止坐标系则旋转同样的角度。只要知道旋转后动坐标系中的标准正交基在静止坐标系中的表达,就能知道旋转后的向量在静止坐标...

weixin_39565390的博客 363

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

【陀螺仪-IMU】二维向量旋转&旋转矩阵

二维向量旋转 向量 OA (xA,yA)和向量 OB (xB,yB) 设向量 OA 的长度为 r,OA、OB 与 x 轴的夹角分别为 α β 则OA、OB 的极坐标形式分别为 OA:(rcosα,rsinα) OB:(rcosβ,rsinβ) 由于 β = α+θ 则有(下式使用三角函数中的和差角公式) rcosβ = rcos(α+θ) = r(cosαcosθ - sanαsinθ) = rcosαcosθ - rsanαsinθ rsinβ = rsin(α+θ) = r(..

嵌入式Stark 1561

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

二维向量旋转90度算法参考

二维向量旋转90度算法参考

ttod的博客 817

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

matlab,二维向量,在[-π, π]之间随机旋转一个角度

二维向量,在[-π, π]之间随机旋转一个角度 vec = [6, 0];%初始向量 x = [0 vec(1)]; y = [0 vec(2)]; plot(x, y, 'b', 'linewidth',2); hold on grid on axis([-10 10 -10 10]); %二维向量,在[-π, π]之间随机旋转一个角度 angle = randi([-314,314],1...

gongfuyd的博客 2608

二维向量间的旋转矩阵

二维向量间的旋转矩阵 问题描述 求A到B的旋转矩阵 A×B=|A||B|sinθ A·B=cosθ/|A||B| 对于归一化的向量来说 A×B=sinθ A·B=cosθ 上式中:cosθ代表的是AB向量间的锐角cos三角函数值。 而sinθ代表的是AB向量间的锐角sin三角函数值。 对于旋转矩阵来说,要考虑顺逆时针的问题: 顺时针 [ cosθ -sinθ sinθ cosθ ] 逆时针 [ cosθ sinθ -sinθ cosθ ] 如果sinθ为正,则向量A到B为逆时针 [ cosθ sinθ -

fb_help的专栏 1730

从奶牛芭蕾到坐标变换:USACO题解中的二维空间模拟与向量旋转

坐标变换是计算机图形学、机器人学和游戏开发中的基础概念,它描述了物体在二维或三维空间中的位置、方向和运动状态的数学表达与更新。其核心原理是通过向量、矩阵运算来模拟物体的平移、旋转等几何变换,从而实现精确的空间状态管理。掌握坐标变换技术对于开发仿真系统、运动规划算法以及解决复杂的空间几何问题具有重要价值,例如在机器人路径规划、动画角色控制和物理引擎中广泛应用。本文以一道USACO竞赛题为具体场景,通过模拟“奶牛芭蕾”中腿部移动和整体旋转的指令序列,深入解析了如何将现实问题抽象为**坐标变换**与**状态模拟*

congbao6525的博客 440

二维向量旋转公式

1.基础的2-D绕原点旋转  在2-D的迪卡尔坐标系中,一个位置向量的旋转公式可以由三角函数的几何意义推出。比如上图所示是位置向量R逆时针旋转角度B前后的情况。在左图中,我们有关系:      x0 = |R| * cosA       =>          cosA = x0 / |R|   y0 = |R| * sinA        =>          sin

我要上火星(停止更新,转为私人笔记) 3万+
上一篇: 点到线段的最短距离算法
下一篇: 分格器
CCCStudyer
博客等级 码龄16年 14粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值