当前位置: 首页 > news >正文

webGL入门教程_06变换矩阵与绕轴旋转总结

变换矩阵与绕轴旋转总结

目录

  • 1. 变换矩阵简介
  • 2. 平移矩阵
  • 3. 缩放矩阵
  • 4. 旋转矩阵
    • 4.1 绕 Z 轴旋转
    • 4.2 绕 X 轴旋转
    • 4.3 绕 Y 轴旋转
  • 5. 组合变换矩阵
  • 6. 结论

1. 变换矩阵简介

在计算机图形学中,变换矩阵用于在三维空间中对物体进行操作,包括:

  • 平移(Translation):改变位置。
  • 旋转(Rotation):调整方向。
  • 缩放(Scaling):改变大小。

变换矩阵通常为 4×4 大小,用于处理三维空间的变换,并可以通过矩阵乘法实现多个变换的组合操作,具有高效性和灵活性。


2. 平移矩阵

平移操作用于移动物体在三维空间中的位置。假设物体的初始位置为 ((x, y, z)),目标平移距离为 ((dx, dy, dz)),则平移矩阵为:

T ( d x , d y , d z ) = ( 1 0 0 d x 0 1 0 d y 0 0 1 d z 0 0 0 1 ) T(dx, dy, dz) = \begin{pmatrix} 1 & 0 & 0 & dx \\ 0 & 1 & 0 & dy \\ 0 & 0 & 1 & dz \\ 0 & 0 & 0 & 1 \end{pmatrix} T(dx,dy,dz)= 100001000010dxdydz1

将顶点坐标与平移矩阵相乘即可计算平移后的新位置。


3. 缩放矩阵

缩放操作调整物体在各个方向上的大小比例。设缩放比例为 (sx, sy, sz),则缩放矩阵为:

S ( s x , s y , s z ) = ( s x 0 0 0 0 s y 0 0 0 0 s z 0 0 0 0 1 ) S(sx, sy, sz) = \begin{pmatrix} sx & 0 & 0 & 0 \\ 0 & sy & 0 & 0 \\ 0 & 0 & sz & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} S(sx,sy,sz)= sx0000sy0000sz00001

顶点与缩放矩阵相乘后,物体会按比例缩放。


4. 旋转矩阵

旋转变换是围绕某一坐标轴对物体进行旋转操作。以下是围绕不同坐标轴的旋转矩阵公式:

4.1 绕 Z 轴旋转

绕 Z 轴旋转的矩阵会影响 (x) 和 (y) 坐标,角度为 (\theta) 时的旋转矩阵为:

R z ( θ ) = ( cos ⁡ ( θ ) − sin ⁡ ( θ ) 0 0 sin ⁡ ( θ ) cos ⁡ ( θ ) 0 0 0 0 1 0 0 0 0 1 ) R_z(\theta) = \begin{pmatrix} \cos(\theta) & -\sin(\theta) & 0 & 0 \\ \sin(\theta) & \cos(\theta) & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} Rz(θ)= cos(θ)sin(θ)00sin(θ)cos(θ)0000100001

4.2 绕 X 轴旋转

绕 X 轴旋转的矩阵会影响 (y) 和 (z) 坐标,角度为 (\theta) 时的旋转矩阵为:

R x ( θ ) = ( 1 0 0 0 0 cos ⁡ ( θ ) − sin ⁡ ( θ ) 0 0 sin ⁡ ( θ ) cos ⁡ ( θ ) 0 0 0 0 1 ) R_x(\theta) = \begin{pmatrix} 1 & 0 & 0 & 0 \\ 0 & \cos(\theta) & -\sin(\theta) & 0 \\ 0 & \sin(\theta) & \cos(\theta) & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} Rx(θ)= 10000cos(θ)sin(θ)00sin(θ)cos(θ)00001

4.3 绕 Y 轴旋转

绕 Y 轴旋转的矩阵会影响 (x) 和 (z) 坐标,角度为 (\theta) 时的旋转矩阵为:

R y ( θ ) = ( cos ⁡ ( θ ) 0 sin ⁡ ( θ ) 0 0 1 0 0 − sin ⁡ ( θ ) 0 cos ⁡ ( θ ) 0 0 0 0 1 ) R_y(\theta) = \begin{pmatrix} \cos(\theta) & 0 & \sin(\theta) & 0 \\ 0 & 1 & 0 & 0 \\ -\sin(\theta) & 0 & \cos(\theta) & 0 \\ 0 & 0 & 0 & 1 \end{pmatrix} Ry(θ)= cos(θ)0sin(θ)00100sin(θ)0cos(θ)00001


5. 组合变换矩阵

多个变换可以通过矩阵相乘进行组合,例如:平移、旋转和缩放可以表示为:

M = T ⋅ R ⋅ S M = T \cdot R \cdot S M=TRS

具体过程:

  1. 平移矩阵 (T(dx, dy, dz)):控制物体的移动位置。
  2. 旋转矩阵 (R(\theta)):调整物体的方向。
  3. 缩放矩阵 (S(sx, sy, sz)):修改物体的大小。

通过矩阵的左乘顺序,多个变换可在一次计算中完成。


6. 结论

  • 变换矩阵是三维图形操作的基础,能够通过简单的矩阵运算完成复杂的变换。
  • 旋转矩阵在绕轴旋转中应用广泛,可灵活调整物体的方向。
  • 在现代图形库(如 OpenGL、WebGL)中,矩阵变换是不可或缺的核心工具。

通过熟练掌握变换矩阵,可以更高效地实现各种三维场景中的操作。

http://www.lryc.cn/news/496363.html

相关文章:

  • 生成树详解(STP、RSTP、MSTP)
  • 【QNX+Android虚拟化方案】128 - QNX 侧触摸屏驱动解析
  • C#中的集合初始化器
  • cartographer建图与定位应用
  • 专业解析 .bashrc 中 ROS 工作空间的加载顺序及其影响 ubuntu 机器人
  • Apache Doris 现行版本 Docker-Compose 运行教程
  • Flink四大基石之窗口(Window)使用详解
  • NGINX配置https双向认证(自签一级证书)
  • Flink双流Join
  • 【数据结构实战篇】用C语言实现你的私有队列
  • 基于web的海贼王动漫介绍 html+css静态网页设计6页+设计文档
  • 2022 年 9 月青少年软编等考 C 语言三级真题解析
  • 机器学习算法(六)---逻辑回归
  • 计算机科学中的主要协议
  • 下载maven 3.6.3并校验文件做md5或SHA512校验
  • 【Android】View工作原理
  • TIE算法具体求解-为什么是泊松方程和傅里叶变换
  • postman中获取随机数、唯一ID、时间日期(包括当前日期增减)截取指定位数的字符等
  • 【计算机网络】实验3:集线器和交换器的区别及交换器的自学习算法
  • flink学习(14)—— 双流join
  • HTTP协议详解:从HTTP/1.0到HTTP/3的演变与优化
  • 张量并行和流水线并行在Transformer中的具体部位
  • WEB开发: 丢掉包袱,拥抱ASP.NET CORE!
  • 【论文阅读】Federated learning backdoor attack detection with persistence diagram
  • Gooxi Eagle Stream 2U双路通用服务器:性能强劲 灵活扩展 稳定易用
  • 【计算机网络】实验2:总线型以太网的特性
  • 如何在Spark中使用gbdt模型分布式预测
  • Qt-5.14.2 example
  • virtualbox给Ubuntu22创建共享文件夹
  • GPT打字机效果—— fetchEventSouce进行sse流式请求