3D数学基础 KeyNote 1】的更多相关文章

[计算几何复习要点] 1.向量加法的几何含意: a+b的释意为:a的尾连上b的头,新建一条从a的尾指向b的头的向量. 2.向量减法的几何含意: a-b的释意为:尾部相连,新建一个从b的头指向a的头的向量. 3.点积,内积: 对于向量a(Xa,Ya).向量b(Xb,Yb),a与b的点积为:Xa*Xb+Ya*Yb. 另外 a*b=|a|*|b|*cos(a与b夹角).通过此公式可通过坐标来计算2向量夹角. 4.叉积.注意,axb 的结果是一个向量. |aXb| = |a|*|b|*sin(a与b夹角…
在3D图形学中,最常用的旋转表示方法便是四元数和欧拉角,比起矩阵来具有节省存储空间和方便插值的优点.本文主要归纳了两种表达方式的转换,计算公式采用3D笛卡尔坐标系: 单位四元数可视化为三维矢量加上第四维的标量坐标 .其中,矢量部分等于单位旋转轴乘以旋转半角的正弦,标量部分等于旋转半角的余弦. 图1 3D Cartesian coordinate System (from wikipedia) 定义分别为绕Z轴.Y轴.X轴的旋转角度,如果用Tait-Bryan angle表示,分别为Yaw.Pit…
[3D Math Keynote 4] 1.三角带. 合并三角带能够提升渲染效率. 三角扇. 2.边缩坍,将边缩减为顶点 . 网格消减,使用边缩坍,可以实现渐进式网络. 3.下图左边是面拆分.右边是焊接顶点. 4. 5. 6. 7.…
[3D Math Keynote 3] 1.球的表面积 Surface.球的体积 Volumn: 2.当物体旋转后,如果通过变换后的旧AABB来顶点来计算新的AABB顶点,则生成的新AABB可能比实际的新AABB大一些. 由 旧AABB 快速计算 新AABB的方法. 如果 m < 0,则取min值参与计算,如果 m > 0,则取max值参与计算. 3.多于3个点的最佳平面.算法就是求出所有的n,然后求个平均值.(此公式书中未给出证明过程) 使用求和符号,能使公式更简洁一些. 最佳d值为: 4.…
[3D Math Keynote 2] 1.方向(diretion),指的是前方朝向.方位(orientation),指的是head.pitch.roll. 2.欧拉角的缺点: 1)给定方位的表达式不惟一. 例如,pitch 135 = heading180 + pitch 45 + bank 180. 通过将 heading.bank 限制在 +180~-180度,pitch限制在+90~-90度即可解决不惟一的问题. 2)两个角度间插值非常困难. 3.复数的共轭 复数的模. 4.复数集存在于…
向量是2D.3D数学研究的标准工具,在3D游戏中向量是基础.因此掌握好向量的一些基本概念以及属性和常用运算方法就显得尤为重要.在本篇博客中,马三就来和大家一起回顾和学习一下Unity3D中那些常用的3D数学知识. 一.向量概念及基本定义 1.向量的数学定义 向量就是一个数字列表,对于程序员来说一个向量就是一个数组. 向量的维度就是向量包含的"数"的数目,向量可以有任意正数维,标量可以被认为是一维向量. 书写向量时,用方括号将一列数括起来,如[1,2,3] 水平书写的向量叫行向量 垂直书…
一.四元数 四元数本质上是个高阶复数,可视为复数的扩展,表达式为y=a+bi+cj+dk.在说矩阵旋转的时候提到了它,当然四元数在Unity里面主要作用也在于此.在Unity编辑器中的Transform组件,包括这位置(Position).旋转(Rotation)和缩放(Scale).Rotation就是一个四元数,但是不能直接对Quaterian.Rotation赋值.可以使用函数Quaterian.Eular(Vector3 angle)获取四元数,该函数返回的就是四元数. 欧拉角表示为Qu…
3D引擎中对于矩阵的使用非常多,介绍这些知识也是为了告诉开发者原理,更有助于开发者编写逻辑. (1)固定流水线 各种坐标系之间的转化是通过矩阵相乘得到的,这里面就涉及到了3D固定流水线.作为3D游戏开发者,必须要知道两个流水线:一个是固定流水线,一个是可编程流水线. 固定流水线主要原理是3D模型在屏幕上显示是按照一定得固定流程来完成的,这个固定的流程就是固定流水线.鸡蛋来说就是一个3D物体在显示器上成像的过程. 局部坐标-->世界坐标-->观察坐标-->消隐-->光照-->透…
向量的基本运算包括加法.减法.点乘.叉乘.单位化运算等,而在游戏开发中使用最为广泛的是减法.点乘.叉乘.单位化运算.向量是具有方向和长度的矢量,有2D.3D.4D等的.在游戏开发里面一般使用的是2D和3D,分别用<x,y>和<x,y,z>来表示的. (1)向量的加法 两个向量的维数相同,那么二者相加后得到的值还是一个维数相同的向量,其运算方法是对应项相加.例如:[x,y,z]+[a,b,c]=[x+a,y+b,z+c].向量的加法在游戏开发中一般表示物体从一个位置移动到另一个位置.…
Unity引擎时非常成熟的,引擎内部运用了很多的数学知识,他对开发者来说是不可见的,而且他已经封装好的算法也不是很全面.此外,要是使用引擎封装好的算法也要明白其实现的原理. 写过一些代码,也参考了一些博客,书籍,想就此记录总结一下的自己所学到的东西,也给大家分享一下. 而我主要想从这五个方面来简要说说,分别是Unity坐标系,向量,矩阵,四元数,欧拉角.这篇先来介绍第一个. 在介绍Unity的坐标系钱,我想先谈谈3D坐标系,表示的是三维空间,它存在着三个坐标轴,分别是X轴,Y轴,Z轴.3D坐标系…