计算机游戏算法的原理,计算机游戏概论基本算法.ppt

计算机游戏概论基本算法

本 章 重 点 9-1 3D坐标系 9-2 坐标矩阵 9-3 投影转换 9-4 裁剪 9-5 隐藏面消除 9-1 3D坐标系 坐标转换的作用是用来产生对象让我们可以看到,其中不同的坐标系统所呈现出来的方式会有所不同,如同我们以不同的角度去观看一个特定的目标,以不同角度所看到的对象显示效果会有所不同。 9.1.1 坐标转换 坐标系统必须要有一个基本的原点位置,从原点再延伸出去两个或三个坐标轴,形成一个特定的空间,这个空间即是我们所谓的2D空间或3D空间。 如果在空间中形成了两个以上的坐标系统,我们就必须要使用其中的一个坐标系统来描述其它不同的坐标系统,这些不同的坐标系统必须要经过一些特殊的转换才能让这个坐标系统所接受,而这种转换的过程我们就称为「坐标转换」。 9.1.2 Model坐标系统 即是物体本身中的坐标环境,物体本身也有一个原点坐标,而物体其它的参考顶点是由原点所衍生出来的,如下图所示: 9.1.3 World坐标系统 在3D的世界里,有几个目标物体就会有几个Model坐标系统,而这些Model坐标又不能表示自己在3D世界里的真正位置,所以必须再定义出另外一个可供3D世界里的物体参考之坐标系统,并且使得所有的物体可以正确地被摆放自己应该的位置坐标上,这种另外再定义出来的坐标系统则称为「World坐标系统」。 9.1.4 View坐标系统 当我们有了物体本身的「Model坐标系统」与能够表现物体在3D世界的位置坐标之「World坐标系统」,接下来必须要有一个观看上述两者的坐标系统,这样屏幕的显示才会有依据,而这个可以观看的坐标系统我们称为「View坐标系统」。 9.1.5 坐标转换 在3D世界中,坐标转换过程是相当复杂的,它必须经过4个不同的转换步骤,最后才能显示在屏幕上,这才是我们所要的画面。流程: 9-2 坐标矩阵 矩阵的表示方式是以4*4矩阵来呈现的,因为这种矩阵的表现方式可以用来表示平移、旋转及缩放等三种转换功能,而这就已经包含了3D世界的转换型式了。这一种矩阵的运算对象及所产生的结果坐标,我们称之为「齐次坐标」(Homogeneous Coordinate)。 9.2.1 齐次坐标 「齐次坐标」具有四个不同的元素,简称「四元素」,其表示法为(x,y,z,w),如果将齐次坐标表示成3D坐标的话,其表示法则为(x/w,y/w,z/w)。通常w元素都会被设成「1」。 W用意是用来表示一个比例因子。 9.2.2 矩阵平移(Translation) 即是物体在3D世界里向着某一个向量方向移动,如下图 矩阵平移运算的表示法如下列所示: 9.2.3 矩阵旋转(Rotation) 定义是3D世界里的某一个物体绕着一个特定的坐标轴旋转,如下图所示: 绕着x轴旋转 绕着y轴旋转 绕着z轴旋转 9.2.4 矩阵缩放(Scaling) 即是物体沿着某一个轴进行一定比例缩放的运算。如下图所示: 矩阵的表示法如下列所示: 9.2.5 矩阵的结合律 平移矩阵为A、旋转矩阵为B、缩放矩阵为C,而原来的顶点坐标为K、最后得到的顶点坐标为K’,其矩阵相乘的公式如下列所示: 其实我们可以将这种特定的矩阵相乘过程简化,因为矩阵相乘的运算是可以符合数学上所说的「结合律」,也就是将A、B、C三个矩阵先结合成另一个矩阵,如下: 9.2.6 Direct3D矩阵 在Direct3D定义里,矩阵被宣告成一个名为「D3DMATRIX」的数据结构,如下: 如果我们要建立一个平移的矩阵,其表示法如下图所示: 在程序代码里,我们就可以将它编写成如下列所示: 9.2.7 向量表示法 在Direct3D定义里,向量被声明成一个名为「D3DVECTOR」的数据结构,如下列所示: 矩阵相乘 向量相乘 两个向量进行dot product的运算 计算向量的长度 计算向量的单位向量 向量相加 9-3 投影转换 将三维的坐标系统转换成二维的坐标,并将3D世界里的坐标单位映像到2D屏幕的坐标单位上,才能在计算机屏幕上看到所谓的3D世界,而这整个转换的过程我们称之为「投影」。 9.3.1 平行投影 当我们省略掉三维空间里的一维元素之后,我们就可以得到了一个平行投影的图形坐标,在这个时候,三维空间中的所有顶点都会从三维空间映像到2D平面的并行线上,因此我们就称这种方式为「平行投影」。 平行投影 我们可以在投影线与投影面交叉角度的基础上更进一步地细分平行投影。如果交叉的角度是直角的话,我们则称之为「正交投影」(orthographic);不是直角的话,我们则称为「倾斜投影」(oblique)。 9.3.2 透视投影 透视投影所建立出来的对象投影图像之大小必须依赖对象与观察者的距离。 原点与图像上的顶

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值