[置顶] 第四节 WebGL中的图形变换:旋转、平移和缩放
2017-11-16 22:20
525 查看
在WebGL中,如果我们想实现更高级的动态场景,或者是对物体进行坐标变换,那么旋转、平移和缩放必不可少。这些变换所涉及的是一些矩阵运算,先从二维平面讲起,再推导至三维空间。下面分别对这几种变换进行一个讲解:
试想一下,如果当一个场景只是静态的,没有动画,那将是多么令人乏味的画面,而旋转变换的加入将会使场景的动画效果更具观赏性。如下图所示,表示点(x, y)绕原点旋转一定角度后到达新的位置,假设原点到想(x, y)半径为R。可参考我另一篇博客的完整示例,绘制一个旋转的彩色立方体:点击打开链接
图中的关系可由系列式子计算:
由上面的公式,上述坐标的矩阵表达形式为:
将其推广至三维空间,并用其次坐标表示出来,称为旋转矩阵:
绕x轴旋转:
绕y轴旋转:
绕z轴旋转
平移是将点沿着指定的方向移动一段距离,即在原有坐标的基础上,再分别给x,y,z加上Tx,Ty,Tz;其示意图如下所示:
平移矩阵如下:
顾名思义,缩放即对图形的放大缩小,其示意图如下所示:
缩放的原理是在原有坐标的基础上乘一个缩放因子:
其缩放矩阵如下:
以上就是WebGL中常用的三种变换,具体的代码实现在我的另一篇微薄上:点击打开链接。
里面实现了一个可用键盘和鼠标交互的可旋转立方体。
1 旋转变换
试想一下,如果当一个场景只是静态的,没有动画,那将是多么令人乏味的画面,而旋转变换的加入将会使场景的动画效果更具观赏性。如下图所示,表示点(x, y)绕原点旋转一定角度后到达新的位置,假设原点到想(x, y)半径为R。可参考我另一篇博客的完整示例,绘制一个旋转的彩色立方体:点击打开链接图中的关系可由系列式子计算:
由上面的公式,上述坐标的矩阵表达形式为:
将其推广至三维空间,并用其次坐标表示出来,称为旋转矩阵:
绕x轴旋转:
绕y轴旋转:
绕z轴旋转
2 平移变换
平移是将点沿着指定的方向移动一段距离,即在原有坐标的基础上,再分别给x,y,z加上Tx,Ty,Tz;其示意图如下所示: 平移矩阵如下:
3 缩放变换
顾名思义,缩放即对图形的放大缩小,其示意图如下所示: 缩放的原理是在原有坐标的基础上乘一个缩放因子:
其缩放矩阵如下:
以上就是WebGL中常用的三种变换,具体的代码实现在我的另一篇微薄上:点击打开链接。
里面实现了一个可用键盘和鼠标交互的可旋转立方体。
相关文章推荐
- WPF/Silverlight中图形的平移,缩放,旋转,倾斜变换演示
- 14 WebGL 使用矩阵实现图形 旋转+平移并解释一下缩放
- WPF/Silverlight中图形的平移,缩放,旋转,倾斜变换演示
- 【Android开发】图形图像处理技术-旋转、缩放、倾斜和平移图像
- 利用Turbo C进行平面二维图形的平移,旋转,缩放,对称
- 需要齐次坐标的原因之二 - 所有的变换运算(平移、旋转、缩放)都可以用矩阵乘法来搞定
- 【C#/WPF】Image图片的Transform变换:平移、缩放、旋转
- 【转载】使用GDI+变换矩阵实现图形的平移、缩放及旋转
- 计算机图形学 几何图形变换算法(缩放、旋转和平移) C语言编写
- webGL第七课 —— 平移、旋转和缩放
- 图像基本变换--- 平移、旋转、缩放、仿射变换、镜像
- 使用GDI+变换矩阵实现图形的平移、缩放及旋转
- 12 WebGL移动、旋转和缩放中的平移
- 世界坐标变换要先缩放、后旋转、再平移的原因
- [OpenGL ES 04]3D变换实践篇:平移,旋转,缩放
- webgl学习笔记三-平移旋转缩放
- 计算机图形学 学习笔记(七):二维图形变换:平移,比例,旋转,坐标变换等
- 自定义控件(11)---Canvas的平移、旋转、缩放、错切、Matrix直接变换Canvas
- webgl学习笔记三-平移旋转缩放
- OpenGL中旋转平移缩放等变换的顺序对模型的影响