问题:在三维空间中,已知折射率 e .入射角 L 和法线 N. 要求:计算出折射向量 T. 其中: L. N 和 T 都为单位向量. 如图片所示,下面所有的公式都看着这张图片来求解的: 首先,我们必须了解折射定律: 因为 N.T.L都是单位向量,所以: 那么可以从图中看出: 接着,如图中所示,做出辅助向量 t1 .t2.l1.l2,他们满足于: 注意这里的 l2 . t2 都是平行于 N 且反向的.l1 . t1 都是垂直于 N 的. 接着有: 可得 那么: 而 l1 和 t1 是同向的,所以可…
在3D图形学中,最常用的旋转表示方法便是四元数和欧拉角,比起矩阵来具有节省存储空间和方便插值的优点.本文主要归纳了两种表达方式的转换,计算公式采用3D笛卡尔坐标系: 单位四元数可视化为三维矢量加上第四维的标量坐标 .其中,矢量部分等于单位旋转轴乘以旋转半角的正弦,标量部分等于旋转半角的余弦. 图1 3D Cartesian coordinate System (from wikipedia) 定义分别为绕Z轴.Y轴.X轴的旋转角度,如果用Tait-Bryan angle表示,分别为Yaw.Pit…
[计算几何复习要点] 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夹角…
Unity引擎时非常成熟的,引擎内部运用了很多的数学知识,他对开发者来说是不可见的,而且他已经封装好的算法也不是很全面.此外,要是使用引擎封装好的算法也要明白其实现的原理. 写过一些代码,也参考了一些博客,书籍,想就此记录总结一下的自己所学到的东西,也给大家分享一下. 而我主要想从这五个方面来简要说说,分别是Unity坐标系,向量,矩阵,四元数,欧拉角.这篇先来介绍第一个. 在介绍Unity的坐标系钱,我想先谈谈3D坐标系,表示的是三维空间,它存在着三个坐标轴,分别是X轴,Y轴,Z轴.3D坐标系…
上个月学习Peter Shirley-Ray Tracing in One Weekend的系列三本书,收获真的很多.这个系列的书真的是手把手教你如何从零开始构建一个光线跟踪渲染器,对新手(像我)非常友好.但是书中有很多章节需要有一定的数学功底才能看懂,本文想分享一下关于in One Weekend-chapter 8:Metal中一笔带过的折射公式推导,内容主要来自于<Mathematics for 3D Game Programming and Computer Graphics, 3rd…
https://blog.csdn.net/popy007/article/list/2?t=1&  //向量计算相关文章 https://www.baidu.com/link?url=48CwL-j6E_WG3nUxbBFVL9ejTlj8g-KfykMcBecP27EyuZ5YhLVktT5lT3MJ1ZTR48BdbODaCBKS2GMHSsI55T4YKwRz1_r-5MDQTWjDIaa&wd=&eqid=a068703d00428e9b000000065d0591f8 …
向量是2D.3D数学研究的标准工具,在3D游戏中向量是基础.因此掌握好向量的一些基本概念以及属性和常用运算方法就显得尤为重要.在本篇博客中,马三就来和大家一起回顾和学习一下Unity3D中那些常用的3D数学知识. 一.向量概念及基本定义 1.向量的数学定义 向量就是一个数字列表,对于程序员来说一个向量就是一个数组. 向量的维度就是向量包含的"数"的数目,向量可以有任意正数维,标量可以被认为是一维向量. 书写向量时,用方括号将一列数括起来,如[1,2,3] 水平书写的向量叫行向量 垂直书…
首先来看一下什么是欧拉角(Euler angles)?构件在三维空间中的有限转动,可依次用三个相对转角表示,即进动角.章动角和自旋角,这三个转角统称为欧拉角.——引自百度百科莱昂哈德·欧拉用欧拉角来描述刚体在三维欧几里得空间的取向.对于任何一个参考系,一个刚体的取向,是依照顺序,从这参考系,做三个欧拉角的旋转而设定的.所以,刚体的取向可以用三个基本旋转矩阵来决定.换句话说,任何关于刚体旋转的旋转矩阵是由三个基本旋转矩阵复合而成的.——引自wikipedia 好了,引完了,我来说一下我的理解吧,欧…
一.四元数 四元数本质上是个高阶复数,可视为复数的扩展,表达式为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物体在显示器上成像的过程. 局部坐标-->世界坐标-->观察坐标-->消隐-->光照-->透…