快速导航:   教程资源  | 经典范例  | 友情链接  | 联系我们  | 官方微博
登陆 | 注册

 flash 3d 研究所
flash3d 研究所 pv3d 教程 研究所小贴士: 很遗憾,flash组件不能在stage3d中使用了,因为不是displayObject,所以只能自制组件










最近更新:
● Aberumnomug阁下在讨论区里 发表新主题“Казино Онлайн Честно...”(18:31:07)
● DonaldHaing阁下在讨论区里 发表新主题“Бк Фонбет зеркало са...”(13:47:47)
● Aberumnomug阁下在讨论区里 发表新主题“Играть В Крейзи Манк...”(05:48:59)
浏览主题:《图形学原理 矩阵变换》

《图形学原理 矩阵变换》
DDM君 (2012-03-16 05:50:41)

DDM君,Flab3D.com(允许转载,转载请注明)

空间中的某个点(x,y,z)的任何移动,旋转,缩放的变换,都是用这个点乘以某个一个矩阵而得到。那么模型是由一个个(x,y,z)的点组成,模型整个要变换,就是让每个点乘以某个矩阵。这个我们在《三维成像基本原理里》提到过。
这是三维引擎开发,和引擎代码阅读的必备的基础常识。
Flash3d的引擎里给我们提供了很丰富的运算类。(详细我们在《pv3d, sandy, away3d的三维数学运算类》介绍)
由于(x,y,z)乘以3*3矩阵可以达到旋转和缩放的目的,但是无法表示移动,所以为了统一,我们通常是采用乘以一个4行4列的矩阵。我们flash3d的引擎也都是为我们准备的4*4/4*3矩阵有关的算法。也就是说所有变换方法,都是用如下公式:
变换后点的(x’,y’,z’)=原来的(x,y,z) 乘以 4*4矩阵M
如果使用pv3d的数学类,写法如下:

var 点:number3D=new Number3D(x的值,y的值,z的值); //原来的点
var 数组:Array=[n11,n12,n13, 0,
            n21,n22,n23, 0,
            n31,n32,n33, 0,
            nx , ny, nz, 1]; //构造矩阵内每个值,需要一个数组,我们通常都是以这种格式书写
var 矩阵: Matrix3D=new Matrix3D(数组); //构造矩阵
Matrix3D.multiplyVector4x4(矩阵,点); //点的x,y,z数据直接就更新为相乘后的数据了。

那么具体是用哪个矩阵M呢?下面我们就列出来:
(本教程的公式图,来自Skyman君的博客http://www.cnblogs.com/skyman/

旋转
旋转在三维里应该是最麻烦的东西,因为人类对旋转的描述是很有限。光靠矩阵控制旋转很多情况是非常复杂和不形象的,所以我们还发明了优拉角和四元数这些对旋转的控制更优良的办法,这些我们以后会讲到。

角度θ表示的是延某轴旋转的角度。
下面三个矩阵分别表示了点绕x轴,y轴,z轴的旋转矩阵。


移动
从公式我们很容易能看出,第4行1,2,3列的数,分别控制着点在x,y,z方向上的移动。


缩放
从公式我们很容易能看出,对角线上的n11,n22,n33,分别控制着点在x,y,z方向上的缩放。



这些就是最简单的变换矩阵,熟悉了这些,我们就又向前迈进了一步。
图形学应该是一个很有趣的东西,并非像很多学校和学生教授的的那种痛苦不堪的东西。其实道理非常简单,如果自己再具备一点编程知识,很容易就能做出自己的成像程序。


DDM君
Flab3D.com







flash 3d 研究所
(2008-11-30 16:46:14)
写得不错,顶一个!
PS:文中我博客的地址写错了,应该是http:://skyman.cnblogs.com
呵呵!


flash 3d 研究所
(2008-12-01 11:36:54)
Skyman你好,欢迎光临。对不起呢,这个地址无法被访问,真的想要我们链接到这个地址吗?
http:://skyman.cnblogs.com


flash 3d 研究所
(2008-12-01 11:43:50)
http://www.cnblogs.com/skyman/
是这个地址,已经更正了,skyman记不住自己的博客地址呢 呵呵


flash 3d 研究所
(2008-12-01 23:10:14)
呵呵,非常有用,感觉要做稍微复杂一点的东西,还是要先把原理搞通,看来要回补一下矩阵论了。


flash 3d 研究所
(2008-12-03 16:13:11)
学习了


flash 3d 研究所
(2009-05-19 17:33:32)
很早就看过这个了
但是今天才用到
^-^


flash 3d 研究所
(2009-06-11 11:08:31)
这个写的真好,学习了,不介意我转帖到我的博客吧,呵呵


flash 3d 研究所
(2011-08-02 18:15:14)
复习了一下高等数学的内容,不错


评论人:
邮   箱: (填入邮箱,博客地址均可)

内   容: (广告和垃圾内容可能会被删除,望理解)
链接地址

验证码:(为防止机器人骚扰,请麻烦输入验证码^_^)
  

(目前需登陆方可发表)


不想添加了