关于二维图形旋转可能在很多计算机图形学相关的书籍上都会介绍,然而真正理解公式推导过程的却讲得不多。那么如何推导出二维图形绕某一点旋转的公式呢?我在这里就将其推导过程简要的说明一下。

其实推导过程比较简单,首先我们来看一幅图,看看如何推导出二维图形绕原点进行旋转的公式。

上图画的比较粗略,不过能说明问题就够了。假设旋转前的点位于P处,旋转之后的点位于P'处。如何求旋转之后的点P'坐标?

在图中,旋转之前P的方向角是a,旋转之后P'的方向角就变为a+b,这里b就是旋转的角度,所谓方向角是改点和原点连线与X轴正向的夹角。旋转的正方向是逆时针

在图中,从P'点向X轴引垂线,垂足为B点,根据三角形的基础知识,可以写出如下的等式。

公式1中的R就是点P以及P'到原点的距离

由公式1,根据高中三角函数的知识,即和差公式得到如下等式2

通过观察上式,Rcos(a)=x,Rsin(a)=y,所以上式进一步花间可以得到下面的等式。

这个公式就是我们经常看到的二维图形旋转的公式,这样绕原点的旋转公式推导出来了,那么嗨经常碰到的绕某一点旋转的,比如绕着矢量图形的中心旋转的。在这种情况下,首先需要平移,然后旋转,最后平移回去,具体过程如下。

由上图可知,(x0,y0)是旋转的顶点,那么先将图形平移到原点,然后绕着原点旋转b角度,最后平移到(x0,y0)上去。

那么很容易可知绕任意一点(x0,y0)旋转的公式为

是不是比较简单,我觉得还行。

二维图形旋转公式的推导相关推荐

  1. 通过Matrix进行二维图形仿射变换

    Affine Transformation是一种二维坐标到二维坐标之间的线性变换,保持二维图形的"平直性"和"平行性".仿射变换可以通过一系列的原子变换的复合来 ...

  2. autocad2007二维图画法_cad怎样绘制简单的二维图形

    CAD绘制二维图形非常的简单,大家经常用它来画图,下面是学习啦小编带来关于cad怎样绘制简单的二维图形的内容,希望可以让大家有所收获! cad绘制简单二维图形的方法 1.绘图菜单绘图菜单是绘制图形最基 ...

  3. 如何使用MATLAB绘制不同类型的二维图形

    如何使用MATLAB绘制不同类型的二维图形 听语音 | 浏览:360 | 更新:2014-11-30 18:10 | 标签:matlab 1 2 3 4 5 分步阅读 如何用MATLAB绘制各种二维图 ...

  4. 二维绕任意点旋转_二维图形复合线性变换程序设计:三角形绕任意点旋转2wfhbh...

    第七讲:二维图形复合线性变换程序设计: 例题:三角形绕任意点旋转. 组合变换为: ( 1 )平移变换 ( 2 )旋转变换 ( 3 )平移变换 #include #include #define PAI ...

  5. matlab 如何画二维图形,Matlab 学习 画图篇 一 二维图形

    matlab给绘制二维图形提供了很多的函数,把一些绘制二维图形的基本函数做成一张表,如下图所示: 我就按照表的顺序一一记录一些个函数的简略用法. 首先是 1.plot函数 plot函数有很多重载方法, ...

  6. matlab画二维颜色深浅,matlab中如何为二维图形填充渐进的颜色

    t1=(0:11)/11*pi; t2=(0:400)/400*pi; t3=(0:50)/50*pi; y1=sin(t1).*sin(9*t1); y2=sin(t2).*sin(9*t2); y ...

  7. 计算机图形学二维图形基本变换实验原理,计算机图形学实验:二维图形变换.docx...

    计算机图形学实验:二维图形变换.docx (9页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 实验三 二维图形变换一.实验任务1. 通 ...

  8. python画二维图_使用python绘制二维图形示例

    我就废话不多说了,直接上代码吧! import matplotlib.pyplot as plt #也可以使用 import pylab as pl import matplotlib.font_ma ...

  9. matlab图片包微盘,如何用Matlab绘制二维图形资料下载

    简要 上一篇已经对图形的属性有过介绍,在此基础上来进行二维以及后续三维图形的操作(注:没接触过其他维度的操作,就不折腾相关的内容了),将会更容易理解这些属性的用法,当然,全部的属性使用都来一遍,感觉就 ...

最新文章

  1. RNA-seq【分析记录】
  2. 16核64g服务器性能,16核64g云服务器
  3. 015_面向对象_异常,包和Object类
  4. [转]notepad++ java编码,输出中文字符时,编译出错
  5. IE 首页被改为www.1188.com的恢复办法
  6. 一步一步带你搭建SpringCloud微服务
  7. npm 使用报错合集
  8. linux模拟dnf,每天学一个 Linux 命令:dnf
  9. 微软 Exchange 服务器被滥用于内部邮件回复链攻击
  10. Java中getclass(),class()与iinstanceof的区别与联系
  11. php curl 缓存请求_PHP异步非阻塞实现方法
  12. Python网络爬虫经典书籍推荐
  13. 29个用于石油和天然气等行业的最佳 GIS 软件
  14. 项目启东异常Failed to read candidate component class
  15. iOS开发笔记1:ToDoList、相册、地图应用及新浪微博
  16. Flutter 开屏方案
  17. csp ccf公共钥匙盒
  18. 虚拟主播合成视频使用教程
  19. 中南大学上机:PIPI的DNA序列
  20. 2021.2.15-2.22 人工智能行业每周技术动态

热门文章

  1. 《十二怒汉》看到一半的观后感(一些零零碎碎语句不通的感想)
  2. 【Unity3d日常开发】Unity3D中实现热力图、风向图、温度图效果
  3. 套接字 I/O 模型 WSAEvent
  4. 简单了解的分布式术语
  5. linux基础(四):shell简单命令;文件系统命令,系统操作命令,文本操作命令;文本处理命令
  6. 普通话计算机等级用英语怎么说,普通话用英语怎么说
  7. 一文读懂超融合与私有云的区别与联系
  8. java基础入门-ZipOutputStream打包下载
  9. 图灵计算机与网络论文,论文导读 | 阿兰·图灵《计算机器与智能》
  10. leetcode_Hamming Distance