下载此文档

矩阵相乘的快速算法.doc


文档分类: | 页数:约2页 举报非法文档有奖
1/2
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/2 下载此文档
文档列表 文档介绍
矩阵相乘的快速算法
如果不好好学,那么下回我介绍一个3D Engine的时候你就麻烦大了.
质量保证:
只讨论可以任意平移自由矢量
以下原理适于你个人开发的3D系统,D3D系统,OpenGL系统

2D系统:
Point1(x1,y1),Point2(x2,y2)
距离D=sqr( (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) )
3D系统:
Point 1 (x1, y1, z1) Point 2 at (x2, y2, z2).
xd = x2-x1
yd = y2-y1
zd = z2-z1
距离Distance = SquareRoot(xd*xd + yd*yd + zd*zd)
做游戏和demo永远不要去做开方:
(Look up Table )
,误差Distance*Distance<a certain number就可以认为点相撞了
二规格化,单位化(Normalize)
先要说矢量的长度:
矢量Vector(x,y,z)
矢量长度Length(Vector)= |Vector|=sqr(x*x+y*y+z*z)
Normalize后:
(x/Length(Vector),y/Length(Vector),z/Length(Vector))
方向不变,长度为1个单位
(Dot Product)
.
中学物理的力做功就是矢量点积的例子:W=|F|.|S|.cos(theta)
二矢量点积:
Vector1:(x1,y1,z1) Vector2(x2,y2,z2)
DotProduct=x1*x2+y1*y2+z1*z2
很重要的应用:
:
由我们最熟悉的力做功:
cos(theta)=/(|F|.|S|)
可以判断二矢量的方向情况: cos=1同向,cos=-1相反,cos=0直角
曲面消隐(Cull face)时判断物体表面是否可见:(法线和视线矢量的方向问题)cos>0不可见,cos<0可见
OpenGL就是这么做的。
:
Light=(theta)
K,I为常数,theta是平面法线与入射光线夹角
老王头的Fast

矩阵相乘的快速算法 来自淘豆网www.taodocs.com转载请标明出处.