坐标旋转公式(推导)
公式:
x1=cos(angle)*x-sin(angle)*y;
y1=cos(angle)*y+sin(angle)*x;
其中x,y表示物体相对于旋转点旋转angle的角度之前的坐标,x1,y1表示物体旋转angle后相对于旋转点的坐标
从数学上来说,此公式可以用来计算某个点绕另外一点旋转一定角度后的坐标,例如:A(x,y)绕B(a,b)旋转β度后的位置为C(c,d),则x,y,a,b,β,c,d有如下关系式:
1。设A点旋转前的角度为δ,则旋转(逆时针)到C点后角度为δ+β
2。求A,B两点的距离:dist1=|AB|=y/sin(δ)=x/cos(δ)
3。求C,B两点的距离:dist2=|CB|=d/sin(δ+β)=c/cos(δ+β)
4。显然dist1=dist2,设dist1=r所以:
r=x/cos(δ)=y/sin(δ)=d/sin(δ+β)=c/cos(δ+β)
5。由三角函数两角和差公式知:
sin(δ+β)=sin(δ)cos(β)+cos(δ)sin(β)
cos(δ+β)=cos(δ)cos(β)-sin(δ)sin(β)
所以得出:
c=r*cos(δ+β)=r*cos(δ)cos(β)-r*sin(δ)sin(β)=xcos(β)-ysin(β)
d=r*sin(δ+β)=r*sin(δ)cos(β)+r*cos(δ)sin(β)=ycos(β)+xsin(β)
即旋转后的坐标c,d只与旋转前的坐标x,y及旋转的角度β有关
从图中可以很容易理解出A点旋转后的C点总是在圆周上运动,圆周的半径为|AB|,利用这点就可以使物体绕圆周运动,即旋转物体。
上面公式是相对于B点坐标来的,也就是假如B点位(0,0)可以这么做。现在给出可以适合任意情况的公式:
x0 = dx * cos(β) - dy * sin(β)
y0 = dy * cos(β) + dx * sin(β)
参数解释:
x0,y0是旋转后相对于中心点的坐标,也就是原点的坐标,但不是之前点旋转后的实际坐标,还要计算一步,
β旋转角度,可以是顺时针或者逆时针。
dx是旋转前的x坐标-旋转后的x坐标
dy是旋转前的y坐标-旋转后的y坐标
x1=a+x0;
y1=b+y0;
上面才是旋转后的实际坐标,其中a,b是原点坐标
下面是上面图的公式解答:
x0=(x-a)*cos(β)-(y-b)*sin(β);
y0=(y-b)*cos(β)+(x-a)*sin(β);
x1=x0+a;
y1=y0+b;
坐标旋转公式(推导)相关推荐
- 推导坐标旋转公式(转)
在<Flash actionScript 3.0 动画教程>一书中有一个旋转公式: x1=cos(angle)*x-sin(angle)*y; y1=cos(angle)*y+sin(an ...
- 三维坐标旋转矩阵推导过程(包看懂)
推导前提: 坐标使用右手坐标系,角度逆时针旋转为正. 绕X轴旋转角度为 俯仰角 即Pitch 绕Y轴旋转角度为 偏航角 即Yaw(Head) 绕Z轴旋转角度为 翻滚角 即Roll 一.平面二维坐标点的 ...
- Lasso回归的坐标下降法推导
目标函数 Lasso相当于带有L1正则化项的线性回归.先看下目标函数:RSS(w)+λ∥w∥1=∑Ni=0(yi−∑Dj=0wjhj(xi))2+λ∑Dj=0∣wj∣RSS(w)+λ∥w∥1=∑i=0 ...
- 坐标旋转公式-- 角度和弧度
x1=cos(angle)*x-sin(angle)*y; y1=cos(angle)*y+sin(angle)*x; 其中x,y表示物体相对于旋转点旋转angle的角度之前的坐标,x1,y1表示物体 ...
- 投影矩阵之z坐标推导
看了好几篇关于投影矩阵的文章,在z坐标的推导上,没有提到为什么z'和1/z成线性关系,而是通过结论中的投影矩阵,即已知z'= (zA + B)/w,并且x和x',y和y'关系式中分母都有-z,所以w为 ...
- python坐标转化极坐标方程公式_《向量》系列——4.天旋地转(向量,复数,极坐标)...
坐标旋转 如图,坐标(x,y)绕点(p,q)逆时针旋转θ角后得到坐标(x',y'),求x',y'关于x,y的表达式. 之前我们已经讨论过这个问题,在<函数图像旋转公式>一文中,利用解析几何 ...
- 图像中某点绕点旋转后的坐标,图像旋转坐标位置
图像中某点绕点旋转后的坐标,图像旋转坐标位置 在平面坐标上,任意点P(x1,y1),绕一个坐标点Q(x2,y2)旋转θ角度后,新的坐标设为(x, y)的计算公式: x= (x1 - x2)*cos(θ ...
- VINS-Mono之后端非线性优化 (目标函数中视觉残差和IMU残差,及其对状态量的雅克比矩阵、协方差递推方程的推导)
文章目录 1. 前言 2. 非线性最小二乘 2.1 Guass-Newton 和 Levenberg-Marquardt 2.2 鲁棒核函数下状态量增量方程的构建 3. 局部Bundle Adjust ...
- 重读经典《Quaternion kinematics for the error-state Kalman filter》
本文将介绍一篇关于 四元数运动学的误差卡尔曼滤波 经典论文.本文结构如下: 第1章四元数定义和性质介绍,包括:加法.减法.乘法(矩阵表示).模.幂数.指数运算等. 第2章旋转群定义和性质介绍,包括:旋 ...
最新文章
- python输出多行对齐_如何用python3输出print对齐?
- 基础_模型迁移_CBIR_augmentation
- 人工智能技术或成为未来网络安全的引爆点和驱动力
- 第十章 PX4-Pixhawk-姿态控制
- CSS魔法堂:那个被我们忽略的outline
- 如何使用 C# 中的 Action, Func,Predicate
- [转]使用npm发布vue组件
- 输入一个字母,转大小写
- JUnit 5 –动态测试
- 分数的拆分原理和方法_常见的节税原理你知道吗?
- 数据类型(简单数据类型、简单数据类型传参、复杂数据类型传参)
- VB 源码 产生任意数之间随机数,支持负数
- 美图秀秀扣取签字,证件照换背景
- 浅谈IPFS新激励层Filenet究竟是什么,令牌、公链、应用?超级云系统!
- win7服务器建网站教程,win7搭建Web服务器教程
- HTML5隐藏图片代码,HTML5终极备忘大全(图片版+文字版)
- 一代传奇SIFT算法专利到期
- 开放式可插拔规范 (OPS)
- 骨龄预测代码学习(二)
- 谷歌因安卓涉嫌垄断被罚51亿美元,上诉称:没看到我们在和苹果竞争?
热门文章
- 逻辑思维怎么个思维?
- 动态语言和静态语言两者的区别
- php保留一位小数不四舍五入,PHP保留小数点后一位并且不四舍五入的方法
- 高德地图根据经纬度获取地址信息
- SQL篇-修改字段、数据
- IDEA(2020.3)导入Spring源码
- 基于.net 的 ArcMap插件开发学习之路
- python django整理(五)配置favicon.ico,解决警告Not Found: /favicon.ico
- Java中面向对象三大特征总结
- 我用python玩炉石传说(2)-----炉石卡牌套牌爬取器及自动分析卡牌相关度