图形学变换

  • 一、概述
  • 二、平移
  • 二、旋转
  • 三、缩放

一、概述

在齐次坐标中,所有的仿射变换都可以使用如下形式的 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′) 的坐标可表示为

使用齐次坐标表示为


欢迎关注个人公众号,实时推送最新博文!

图形学变换——平移、旋转和缩放相关推荐

  1. 【J2me3D系列学习文章之三】(立即模式)对立方体进行变换操作-旋转、缩放、平移...

     本文源地址:http://blog.csdn.net/xiaominghimi/archive/2010/12/09/6064367.aspx  Himi  原创, 转载请注明! 谢谢. 上一篇文章 ...

  2. 图形学-变换(平移矩阵,旋转矩阵,缩放矩阵,线性变换,仿射变换,齐次坐标)

    1.变换 1.1 什么是变换? 变换(Transform)是计算机图形学中非常重要的一部分.变换包含模型变换(Modeling transform)以及视图变换(View transform).模型变 ...

  3. c语言图形学三角形平移,MFC怎么对所画几何图形进行旋转、填充、放缩???(急用)【...

    MFC基本图形的绘制(一)硬件环境类CDC.颜料和画刷 shufa6422014-03-25 MFC绘图_完全图形绘制 u01327050943542014-09-01 MFC之绘图篇:初步绘图(研发 ...

  4. 三维空间中的几何变换-平移旋转缩放

    前言 前段时间由于项目需要,深入学习了下图形几何变换,主要是绕任意轴旋转部分(其他的已有一定基础),现记录学习笔记. 文章内容部分引用并参考了下面的博客: http://netclass.csu.ed ...

  5. Qt quick基础2(包含平移旋转放缩以及qml控件大写开头啊)

    Qt quick基础2(包含平移旋转放缩以及qml控件大写开头啊) 目录 Qt quick基础2(包含平移旋转放缩以及qml控件大写开头啊) 前言 简单的平移.旋转和放缩 其他元素的一些基本使用 qm ...

  6. 【计算机图形学】c++ OpenGL 二维变换(包括多边形绘制、平移、旋转及缩放)

    运行结果演示 源代码 // 二维变换.cpp : 定义控制台应用程序的入口点. //#include "stdafx.h" #include<GL/glut.h> #i ...

  7. 二维图形平移变换c语言程序,[转载]计算机图形学Opengl实现二维图形的平移、旋转、缩放复合变换...

    参考课堂教学中关于模型变化的讲解,编写对一个三角形分别实现平移.缩放.旋转等变化的源码及效果图.请以该例为蓝本,实现3题的代码编写. 如下的几幅图,第一幅就是在给出的代码部分进行修改,将GL_FLAT ...

  8. 二维图形学的变换-平移、旋转、缩放 OpenGL

    这里实现的是多点画多边形,然后把这个多边形进行二维的变换. 首先,多点画多边形,为了方便起见,我直接调用了Opengl的库函数.其次,就是如何进行多边形的二维变换.在这里我有两种方法.第一种是直接根据 ...

  9. WebGL入门(六)-通过坐标计算实现图形的平移、旋转和缩放变换

    通过坐标计算实现图形的平移.旋转和缩放变换 1.图形的平移 1.1平移效果说明 1.2平移原理说明 1.3平移图形的实现步骤 1.3.1在顶点着色器中声明存放平移信息的uniform变量u_Trans ...

最新文章

  1. 【OpenCV】将单通道的Mat对象转换为三通道的Mat
  2. UNITY 复制对象后局部坐标和世界坐标的变化问题
  3. 分布式是写出来的(一)
  4. jQuery的内容选择器和属性
  5. html引vue怎么实现国际化,Vue项目中Vue-i18n和element-ui国际化开发实现过程_唇印_前端开发者...
  6. 基于SpringBoot开发一套完整的项目(一)准备工作
  7. Java List 的merge
  8. python会议室系统预定_会议室预定系统
  9. Cisco Packet Tracer思科模拟器中OSPF动态路由配置
  10. 给小学生上计算机语言课,[程序设计]为了下一代,大家讨论一下小学生该学什么编程语言。...
  11. 51单片机c语言脉冲计数实验报告,单片机计数器实验报告.doc
  12. 利用windrose绘制风玫瑰图并解决错误问题
  13. PCIE 转 spi 总线
  14. CentOS 识别NTFS格式U盘
  15. VMware安装中标麒麟Linux_server_x86_ZX64(兆芯版)
  16. 图书馆下午四点关门,我深刻检讨
  17. [高项]已知风险VS未知风险
  18. Airbus和IBM计划让机器人CIMON加入国际空间站执行任务
  19. Trino安装部署连接iceberg
  20. 计算机毕业设计springboot实验填报系统

热门文章

  1. java连接数据库,jdbc四要素,jdbc六大步
  2. LoRa节点开发:5、代码详解LoRaWAN中的几种数据包(发送与接收数据)
  3. php九宫格图片合成,多宫格图片合成
  4. 电脑微信聊天记录迁移——备份与恢复
  5. “RTOS:实时应用的操作系统”
  6. Cython入门:将python代码转为cython
  7. Graylog日志简介
  8. netstat -i和-s
  9. ios启动时间优化--理论
  10. Linux查看cc编译器版本,如何查看linux版本(转)