图形学变换——平移、旋转和缩放
图形学变换
- 一、概述
- 二、平移
- 二、旋转
- 三、缩放
一、概述
在齐次坐标中,所有的仿射变换都可以使用如下形式的 4 x 4 矩阵来表示
点 p(x,y,z)p (x, y, z)p(x,y,z) 表示方式为
向量 a⃗(x,y,z)\vec a (x, y, z)a(x,y,z) 表示方式为
关于齐次坐标的理解参考博文:齐次坐标
二、平移
平移(translation)变换把点沿着给定方向移动固定距离, p′=p+dp' = p + dp′=p+d 如下图所示。
比如:将点 p(1,1,1)p (1, 1, 1)p(1,1,1),往 XXX 轴正方向移动 1单位,往 YYY 轴正方向移动 2 单位, 往 ZZZ 轴正方向移动 3 单位,最终坐标是 p′(2,3,4)p'(2, 3, 4)p′(2,3,4)
数学上的运算为 p(1,1,1)+d(1,2,3)=p′(2,3,4)p (1, 1, 1) + d (1, 2, 3) = p'(2, 3, 4)p(1,1,1)+d(1,2,3)=p′(2,3,4)。
在图形学中,p+dp + dp+d 可以表示为 ppp 乘于 ddd 对应的平移矩阵 TTT
所以 p′p'p′ 的平移运算可表示为
即
二、旋转
旋转(rotation)变换指点绕着特定的一个点旋转固定角度。下面我们使用 2D 坐标讲解点 p(x,y)p(x, y)p(x,y),绕特定的点O(0,0)O(0, 0)O(0,0) 原点旋转 θθθ 度,变换后的坐标表示为 p′(x′,y′)p'(x', y')p′(x′,y′)
将 ppp 与 p′p'p′ 转换为极坐标表示则有
利用两角和的正弦和余弦公式可得
转换为矩阵像形式
在 3D 中绕 ZZZ 轴旋转的所有点 zzz 值不变,等价于上面 2D 绕原点的旋转,所以 3D 坐标的旋转可以表示为
在图形学中 绕 ZZZ 轴旋转的变换矩阵为
最终 p′p'p′ 的旋转可表示为
同理可得绕 XXX 轴旋转的变换矩阵为 RxR_{x}Rx,绕 YYY 轴旋转的变换矩阵为 RyR_{y}Ry。注:这里使用右手坐标系
三、缩放
缩放(scaling)变换指沿着指定不动点(变换后该点位置保持不变,这里使用原点),对象沿着指定方向(坐标轴)伸长或缩短。缩放后的点 p′(x′,y′,z′)p'(x', y', z')p′(x′,y′,z′) 的坐标可表示为
使用齐次坐标表示为
欢迎关注个人公众号,实时推送最新博文!
图形学变换——平移、旋转和缩放相关推荐
- 【J2me3D系列学习文章之三】(立即模式)对立方体进行变换操作-旋转、缩放、平移...
本文源地址:http://blog.csdn.net/xiaominghimi/archive/2010/12/09/6064367.aspx Himi 原创, 转载请注明! 谢谢. 上一篇文章 ...
- 图形学-变换(平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标)
1.变换 1.1 什么是变换? 变换(Transform)是计算机图形学中非常重要的一部分.变换包含模型变换(Modeling transform)以及视图变换(View transform).模型变 ...
- c语言图形学三角形平移,MFC怎么对所画几何图形进行旋转、填充、放缩???(急用)【...
MFC基本图形的绘制(一)硬件环境类CDC.颜料和画刷 shufa6422014-03-25 MFC绘图_完全图形绘制 u01327050943542014-09-01 MFC之绘图篇:初步绘图(研发 ...
- 三维空间中的几何变换-平移旋转缩放
前言 前段时间由于项目需要,深入学习了下图形几何变换,主要是绕任意轴旋转部分(其他的已有一定基础),现记录学习笔记. 文章内容部分引用并参考了下面的博客: http://netclass.csu.ed ...
- Qt quick基础2(包含平移旋转放缩以及qml控件大写开头啊)
Qt quick基础2(包含平移旋转放缩以及qml控件大写开头啊) 目录 Qt quick基础2(包含平移旋转放缩以及qml控件大写开头啊) 前言 简单的平移.旋转和放缩 其他元素的一些基本使用 qm ...
- 【计算机图形学】c++ OpenGL 二维变换(包括多边形绘制、平移、旋转及缩放)
运行结果演示 源代码 // 二维变换.cpp : 定义控制台应用程序的入口点. //#include "stdafx.h" #include<GL/glut.h> #i ...
- 二维图形平移变换c语言程序,[转载]计算机图形学Opengl实现二维图形的平移、旋转、缩放复合变换...
参考课堂教学中关于模型变化的讲解,编写对一个三角形分别实现平移.缩放.旋转等变化的源码及效果图.请以该例为蓝本,实现3题的代码编写. 如下的几幅图,第一幅就是在给出的代码部分进行修改,将GL_FLAT ...
- 二维图形学的变换-平移、旋转、缩放 OpenGL
这里实现的是多点画多边形,然后把这个多边形进行二维的变换. 首先,多点画多边形,为了方便起见,我直接调用了Opengl的库函数.其次,就是如何进行多边形的二维变换.在这里我有两种方法.第一种是直接根据 ...
- WebGL入门(六)-通过坐标计算实现图形的平移、旋转和缩放变换
通过坐标计算实现图形的平移.旋转和缩放变换 1.图形的平移 1.1平移效果说明 1.2平移原理说明 1.3平移图形的实现步骤 1.3.1在顶点着色器中声明存放平移信息的uniform变量u_Trans ...
最新文章
- 【OpenCV】将单通道的Mat对象转换为三通道的Mat
- UNITY 复制对象后局部坐标和世界坐标的变化问题
- 分布式是写出来的(一)
- jQuery的内容选择器和属性
- html引vue怎么实现国际化,Vue项目中Vue-i18n和element-ui国际化开发实现过程_唇印_前端开发者...
- 基于SpringBoot开发一套完整的项目(一)准备工作
- Java List 的merge
- python会议室系统预定_会议室预定系统
- Cisco Packet Tracer思科模拟器中OSPF动态路由配置
- 给小学生上计算机语言课,[程序设计]为了下一代,大家讨论一下小学生该学什么编程语言。...
- 51单片机c语言脉冲计数实验报告,单片机计数器实验报告.doc
- 利用windrose绘制风玫瑰图并解决错误问题
- PCIE 转 spi 总线
- CentOS 识别NTFS格式U盘
- VMware安装中标麒麟Linux_server_x86_ZX64(兆芯版)
- 图书馆下午四点关门,我深刻检讨
- [高项]已知风险VS未知风险
- Airbus和IBM计划让机器人CIMON加入国际空间站执行任务
- Trino安装部署连接iceberg
- 计算机毕业设计springboot实验填报系统