公式:

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;

坐标旋转公式(推导)相关推荐

  1. 推导坐标旋转公式(转)

    在<Flash actionScript 3.0 动画教程>一书中有一个旋转公式: x1=cos(angle)*x-sin(angle)*y; y1=cos(angle)*y+sin(an ...

  2. 三维坐标旋转矩阵推导过程(包看懂)

    推导前提: 坐标使用右手坐标系,角度逆时针旋转为正. 绕X轴旋转角度为 俯仰角 即Pitch 绕Y轴旋转角度为 偏航角 即Yaw(Head) 绕Z轴旋转角度为 翻滚角 即Roll 一.平面二维坐标点的 ...

  3. Lasso回归的坐标下降法推导

    目标函数 Lasso相当于带有L1正则化项的线性回归.先看下目标函数:RSS(w)+λ∥w∥1=∑Ni=0(yi−∑Dj=0wjhj(xi))2+λ∑Dj=0∣wj∣RSS(w)+λ∥w∥1=∑i=0 ...

  4. 坐标旋转公式-- 角度和弧度

    x1=cos(angle)*x-sin(angle)*y; y1=cos(angle)*y+sin(angle)*x; 其中x,y表示物体相对于旋转点旋转angle的角度之前的坐标,x1,y1表示物体 ...

  5. 投影矩阵之z坐标推导

    看了好几篇关于投影矩阵的文章,在z坐标的推导上,没有提到为什么z'和1/z成线性关系,而是通过结论中的投影矩阵,即已知z'= (zA + B)/w,并且x和x',y和y'关系式中分母都有-z,所以w为 ...

  6. python坐标转化极坐标方程公式_《向量》系列——4.天旋地转(向量,复数,极坐标)...

    坐标旋转 如图,坐标(x,y)绕点(p,q)逆时针旋转θ角后得到坐标(x',y'),求x',y'关于x,y的表达式. 之前我们已经讨论过这个问题,在<函数图像旋转公式>一文中,利用解析几何 ...

  7. 图像中某点绕点旋转后的坐标,图像旋转坐标位置

    图像中某点绕点旋转后的坐标,图像旋转坐标位置 在平面坐标上,任意点P(x1,y1),绕一个坐标点Q(x2,y2)旋转θ角度后,新的坐标设为(x, y)的计算公式: x= (x1 - x2)*cos(θ ...

  8. VINS-Mono之后端非线性优化 (目标函数中视觉残差和IMU残差,及其对状态量的雅克比矩阵、协方差递推方程的推导)

    文章目录 1. 前言 2. 非线性最小二乘 2.1 Guass-Newton 和 Levenberg-Marquardt 2.2 鲁棒核函数下状态量增量方程的构建 3. 局部Bundle Adjust ...

  9. 重读经典《Quaternion kinematics for the error-state Kalman filter》

    本文将介绍一篇关于 四元数运动学的误差卡尔曼滤波 经典论文.本文结构如下: 第1章四元数定义和性质介绍,包括:加法.减法.乘法(矩阵表示).模.幂数.指数运算等. 第2章旋转群定义和性质介绍,包括:旋 ...

最新文章

  1. python输出多行对齐_如何用python3输出print对齐?
  2. 基础_模型迁移_CBIR_augmentation
  3. 人工智能技术或成为未来网络安全的引爆点和驱动力
  4. 第十章 PX4-Pixhawk-姿态控制
  5. CSS魔法堂:那个被我们忽略的outline
  6. 如何使用 C# 中的 Action, Func,Predicate
  7. [转]使用npm发布vue组件
  8. 输入一个字母,转大小写
  9. JUnit 5 –动态测试
  10. 分数的拆分原理和方法_常见的节税原理你知道吗?
  11. 数据类型(简单数据类型、简单数据类型传参、复杂数据类型传参)
  12. VB 源码 产生任意数之间随机数,支持负数
  13. 美图秀秀扣取签字,证件照换背景
  14. 浅谈IPFS新激励层Filenet究竟是什么,令牌、公链、应用?超级云系统!
  15. win7服务器建网站教程,win7搭建Web服务器教程
  16. HTML5隐藏图片代码,HTML5终极备忘大全(图片版+文字版)
  17. 一代传奇SIFT算法专利到期
  18. 开放式可插拔规范 (OPS)
  19. 骨龄预测代码学习(二)
  20. 谷歌因安卓涉嫌垄断被罚51亿美元,上诉称:没看到我们在和苹果竞争?

热门文章

  1. 逻辑思维怎么个思维?
  2. 动态语言和静态语言两者的区别
  3. php保留一位小数不四舍五入,PHP保留小数点后一位并且不四舍五入的方法
  4. 高德地图根据经纬度获取地址信息
  5. SQL篇-修改字段、数据
  6. IDEA(2020.3)导入Spring源码
  7. 基于.net 的 ArcMap插件开发学习之路
  8. python django整理(五)配置favicon.ico,解决警告Not Found: /favicon.ico
  9. Java中面向对象三大特征总结
  10. 我用python玩炉石传说(2)-----炉石卡牌套牌爬取器及自动分析卡牌相关度