3D游戏引擎数学基础1--3D坐标系

要学3D引擎,最基础当然就是数学知识,数学知识中最基础的自然就是坐标系了,没有坐标系,一切都是白谈,幸运的是,坐标系学起来非常简单,好了,让我们一起来回顾一下坐标系的概念吧。
1、2D坐标系
2D坐标系非常简单,从初中开始就接触到一个,那就是笛卡尔坐标系。笛卡尔坐标系以水平向右的一轴作为x轴,正方向为从左到右,以垂直向上的一轴作为y轴,正方向为从下到上。如下所示:
3D坐标系
(备注:有些读者可能有使用Windows API的经验,使用Windows API绘制窗口的坐标系y轴的正方向是从上往下,也许是因为微软想标新立异,这里就不作讨论了。)
在笛卡尔坐标系中,由于两个坐标轴的关系,整个平面就分为四个区域,左上、右上、左下和右下。将这些区域取一个专业的名字叫做象限,四个区域就是四个象限,分别编号一~四象限。右上为第一象限,左上为第二象限,左下为第三象限,右下为第四象限。由此,我们可以判断出每个象限中点的正负号:
象限中点的正负号
提示:很多图形算法都用这样的方法进行优化:先在第一象限中解决问题,然后通过对称性将解决方案反射到其他象限中(3D坐标系中为卦限)

2、3D坐标系
有了上面的基础,过渡到3D坐标系简直是轻而易举。3D的笛卡尔坐标系只是多了一个z轴,这三条轴相互垂直,共同构成了3D空间。这样,要在3D空间中定义一点p,就需要3个坐标:x、y、z。另外,这3条轴构成了3个平面:x-y平面、x-z平面和y-z平面。如下图所示。这3个平面很重要,其中每个平面都将控件分成两个区域(半空间)。半空间的概念会应用到很多算法中,所以要好好记住它。3个平面将控件分为8个子空间,为子空间取一个名字,叫卦限。卦限没有编号,笔者也不知道为什么,有兴趣的读者可以找一下资料然后给笔者科普一下。
这里写图片描述
于是,z轴带来了一点小麻烦,那就是:z轴可以向里,也可以向外啊,到底哪边才是z轴的正半空间呢?因此,产生了两种不同的3D笛卡尔坐标系:左手坐标系和右手坐标系。
将它们命名为左手坐标和右手坐标,是因为当用左手握住z轴时,如果其他手指从x轴绕道y轴,则大拇指的方向为z轴正方向。所以,上图所示的是左手坐标系,右手坐标系如下图所示:
这里写图片描述
本质上,左手坐标系和右手坐标系并没有什么区别,只是习惯上的表示方法不同。两种坐标系之间的转换也很容易,对3D引擎的要求仅仅是坐标系一致就可以了。值得提到的一点是,DirectX使用左手坐标系,OpenGL使用的是右手坐标系。
好了,坐标系就讲到这里,非常简单的知识,虽然简单,但十分必要,下一节将讲到3D数学中另一个重要的知识点:向量。

由于笔者水平有限,博文中难免会有错漏之处,还请读者批评指正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值