三角学和向量参考


-
三角学和向量参考
附录C三角学和向量参考 注意:这里使用了术语定义域( Domain)和值域( Range),它们分别对应输入和输出。 三角恒等式和技巧数不胜数,要全部证明它们,需要整本书的篇幅,这里只列出游戏程序员应该知道 的一些恒等式: 余割:cSc()=1/sin(b) 正割:sec()=1/cos(0) 余切:cot(O)=1tan(O) 勾股定理的三角函数表示:sin(O)2+cos(0)2 转换恒等式:sin(B1)=cos(B-m2) 负角公式:sin(-6)=-sin(O)cos(-0)=cos(0) 和差化积公式 sin(0 1 +6)=sin (0,)*cos(6)*+ cos(0)*sin(0) cos(O1+的)=cos(1)*cos(B)*-sin(t)*sin(B) sin(0-0)=sin(0)*cos(B)*-cos(0)*sin(B) cos(01-02)=cos(01)*cos(0)*+ sin(0)*sin(h) 当然,可以根据它们推导岀很多其他三角恒等式。一般来说,三角恒等式可帮助简化复杂的三角公式, 避免执行数学运算。因此,得到基于正弦、余弦或正切的公式后,务必参考三角学方面的书籍,看能否对 公式进行化简,进而减少计算量。 向量是一条线段,由起点和终点定义,如图C.3所示 P2(2, y U= P1P2 P1(X1,y1) 123456789 P4(x4,y4) -4 图C.3平面中的向量 其中向量U是用两个点p1(起点)和p2(终点)定义的。向量U=<,4y>从p1(x1,yl)指向p2(x2 y2)。要计算向量U,只需将终点和起点相减 p (X2-×1,y2y1) 通常使用粗体大写出字母来表示向量,如U。分量都写在尖括号中,如<lx,y>。然而,如果上下 文谈论的只有向量,我使用非粗体小写字母来表示,以减少排版工作量。 向量是从一个点到另一点的有向线段,但该线段可以表示很多概念,如速度、加速度等。需要注意的 929 3D游戏编程大师技巧 是,向量被定义后,总是相对于原点的。这意味着当您创建了一个从点p1到点p2的向量后,该向量的起 点总是(0,0)(在3D空间中为(0,0,0)。 2D向量由两个数组成,而3D向量由三个数组成,因此只定义了2D或3D空间中的终点,起点总是为原 点。这并不意味着不能平移向量并使用它们来执行各种几何操作;而只意味着您必须记住向量实际上是什么。 向量的优点在于可以对它们执行的操作。向量实际上是一个有序数集,可以通过分别对每个分量执行 数学运算,来对向量执行标准的数学运算。 注意:向量可以由任意个分量组成。在计算机图形学中,处理的是2D和3D向量;即向量的形式为a <x,y>和b=<x,y,z>。n维向量的形式为 c=<c1,c2,c3 cn> n维向量用于代表变量集而不是几何空间,因为超过3维后便是超空间 C.2.1向量长度 向量的长度被称为范数(norm),本书通过在向量两边分别添加竖线来表示,如U 向量长度是从原点到向量表示的终点的距离,因此,可以使用勾股定理来计算。计算U的公式如下: lU=sart(ux uy) 如果U是三维向量,其长度计算公式为 lU= sart(Ux uy+ ui) C.22归一化 知道向量的长度后,就可以对其进行归一化,即进行缩放,使其长度为1.0,同时方向保持不变。像标量 1.0一样,单位向量也有很多不错的性质。给定向量N<n,n>,其归化版本通常用n表示,计算公式如下 n =N/NI 非常简单。归一化版本为向量除以其长度。 C.2.3标量乘法 种向量运算是缩放。例如,假设有一个表示速度的向量,要提高或降低速度,可以使用缩放运算。 缩放是通过将每个分量乘以一个标量来完成的,例如 令U=<lx,4x>,k为实数常量,则: k*U=k*<u 图C4图示了缩放运算。 k·u=k k u=1 长度=1.0 A.缩放前 B.缩放后 图C.4向量缩放 930 附录C三角学和向量参考 要反转向量的方向,可以将其乘以-1,如图C.5所示。 1.u (Ux, -uy) 图C.5反转向量的方向 用数学语言说,情况如下: 假设U=<l,u>,则方向与U相反的向量为 C.2.4向量加法 要将多个向量相加,只需将各个分量分别相加即可,如图C.6所示。 Move to tip of u u+v 图C.6向量加法 将向量U和ⅴ相加,结果为向量R。请注意向量加法的几何意乂:平行移动向量ⅴ,使其起点与向量 ⅴ的终点重合,然后画出三角形的另一条边。从几何学上说,这种操作相当于下面的数学运算: U v=<U,U>+ <v, v>=<U,tu, u+V> 因此,要在图纸上将任意多个向量相加,可以将这些向量“首尾相连”,从第一个向量的起点到最后 个向量的终点的线段,就是这些向量的和。 C.2.5向量减法 向量减法实际上是加上一个方向相反的向量。然而,有时候以图形方式来表示向量减法更直观。图C.7 图示了U-V U-V是从ν到u的向量,而V-U是U(起点)到ⅴ(终点)的向量。用数学语言说,情况如下 931 D游戏编程大师技巧 Draw a vector from tip of v to u U-V This is u 图C.7向量减法 U-V=<UxUy> Vy>=<ux-vx, uy-Vy 这可能更容易记住,但有时候在图纸上进行计算更好些,因为可以直观地看到计算结果。知道如何在 图纸上执行向量加法和减法,对于编写渲染算法很有帮助。 C.26点积 点积的定义如下 U·V=ux*Vx+uy*y 点积通常用点()表示,它将各个分量分别相乘后相加,得到一个标量,而不是将各个分量相乘,并保 留向量形式。读者可能会问,点积有什么用呢?其结果不再是向量了!但点积相当于下列表达式: V= U*V*cosO 该表达式指出,U和V的点积等于向量U的长度乘以向量V的长度,再乘以它们的夹角的余弦。组 合上述两个表达式可得到如下结果: JU*V *cos0 Ux*+.xV u*vI*cose 这是一个很有趣的公式,它提供了一种计算两个向量之间夹角的方法,如图C.8所示,因此点积是一 种很有用的运算。 (ux, uy u (Vx, Vy) 图C.8点积 如果读者还不明白,可以对上述公式两边求反余弦,结果如下 0= cos[(Ux*Vx+u*Vv)/U*VIl -932 附录C三角学和向量参考 将U·V=(ux*x+uy*y)代入上述公式,结果如下 <90,锐角 0=cos(U·V/|U|*|V|) U·V>0 这是一个功能非常强大的工具,也是很多3D图形学算法的基础。 如果U和V都是单位向量,即U和Ⅴ的长度都是10,则J*V=1.0, 上述公式可进一步简化为 6=cos(U·V) 90,直角 下面是一些关于点积的有用事实: u·V=0 ●事实1:如果向量U和V之间的夹角为90度(互相垂直), U·V=0 事实2:如果向量U和ⅴ之间的夹角小于90度(锐角),则 U·V>0。 >90,钝角 ●事实3:如果向量U和ⅴ之间的夹角大于90度(钝角),则 ·V<0 U·V<0。 事实4:如果向量U和Ⅴ相等,则U·V=U=V2。 图C9图示了这些事实。 图C.9向量的夹角及其与点积的关系 C.27叉积 另一种向量乘法是叉积。然而,仅当向量包含三个或更多分量时,叉积才有意义。因此,这里将以3D 向量为例进行讨论。给定U=<,ly,l>和V=<以,w,vz>,叉积U×V的定义如下 u×V=|U|*V|*sin*n 下面逐项分析这个公式。U为向量U的长度,Vl +z 为向量ⅴ的长度,sin(θ)是两个向量之间夹角的正弦。 因此,U*V*sin()是一个标量,即是一个数值。然后, 我们将它与n相乘,但n是什么呢?n是一个单位法线 向量,即它与向量U和V都垂直,且长度为1.0。图C.10 图示了这种乘法。 因此,根据叉积可以知道向量U和ⅴ之间的夹角以 XZ 及U和ⅴ的法线向量。然而,如果没有另一个公式,将 无法得到任何信息。问题是,如何计算U和V的法线向 量呢?答案是使用叉积的另一种定义。叉积还定义为 U×ⅴ与u和ⅴ都垂直, 如果和ⅴ都位于xz平面内, 种非常特殊的向量积。然而,如果不使用矩阵,将难以 则u×ⅴ与y轴平行 描述这种定义。要计算U和ⅴ的叉积(U×V),可以建 图C.10叉积 立一个这样的矩阵 ijk 其中i、jk分别是与x轴、y轴、z轴平行的单位向量。 要计算U和V的叉积,执行下面的乘法 (uy*vz-Vy*Ui) *i+(-Ux*Vi+Vx*Ui)*j+(ux*Vy-Vx*uy)*k N是三个标量分别乘以三个相互垂直(即分别与x轴、y轴和z轴平行)的单位向量的线性组合。因此, 可以省略i、j、k,将上述公式表示为: N = <U*V,-VyU,,-uxv,+v,*U,, ux*Uv-vx*uy> 933 3D游戏编程大师技巧 N是向量U和ⅴ的法线向量,但不一定是单位向量(如果U和ⅴ都是单位向量,N也将是单位向量), 因此必须归一化以得到n。完成这一步后,就可以其代入到前面的叉积方程中,执行所需的计算 然而,在实际应用中,很少有人使用公式UxⅤ=U*V*sin(θ)*n,而只是使用矩阵形式来计算法线向 量,因为θ通常是未知的。这里再次表明了对向量进行归一化在3D图形学中的重要性,您将使用归一化 向量来进行光照计算、定义平面、比较多边形朝向、进行碰撞检测等。 C.28零向量 虽然您不会经常使用零向量,但它的确存在。零向量的长度为零,没有方向,仅仅是一个点。因此 2D零向量为<0,0>,3D零向量为<0,0,0>,在维数更多的空间中,零向量与此类似。 C.29位置向量 位置向量在跟踪几何实体,如直线、线段、曲 线等时很有用。第10章进行裁剪时使用过位置向 量,它很重要。图C.11描述了一个可用于表示线 段的位置向量 该线段从p1到p2,V是从p1到p2的向量,v 是从p1到p2的单位向量。可以创建向量P来跟踪 P=P1+tV 该线段。从数学上说,向量P如下 P=p1+ t*v 其中t是一个取值范围为0到V的参数。如果 t=0,则 P=p1+0*v=<p1>=<p1x;p1y> 因此t=0时,P指向线段的起点。另一方面, 如果t=V,则 P=p1+|V|*=p1+V=<p1+V> 图C.11位置向量 V, pa C.2.10向量的线性组合 正如您在向量叉积中见到的,向量还可以这样表示: U u,*k 其中i、jk分别为与x、y、z轴平行的单位向量。这没什么特别的,它只是您可能需要知道的另一种 向量表示法。所有运算的工作原理仍然相同。例如 假设U=3i+2j+3k,V=-3i-5j+12k,则 U+V=3i+2j+3k-3i-5j+12k 3j+15k -934

26.63MB
三角学专门教程((苏)诺渥赛洛夫著)
2018-11-03【作 者】(苏)诺渥赛洛夫著 【形态项】 215 【出版项】 哈尔滨:哈尔滨工业大学出版社 , 2014.09 【ISBN号】978-7-5603-4912-1 【中图法分类号】O171 【原书定价】
16.36MB
世界著名三角学经典著作钩沉(平面三角卷Ⅱ)
2018-12-03《世界著名三角学经典著作钩沉:平面三角卷(2)》共有五部分,分别为绪论,第一编基本公式,第二编对数表、三角方程,第三编三角形的解法,第四编与复数相关的内容。《世界著名三角学经典著作钩沉:平面三角卷(2
13.5MB
世界著名三角学经典著作钩沉 : 平面三角卷(Ⅰ)
2018-12-03世界著名三角学经典著作钩沉(平面三角卷I),ISBN:9787560330082,作者:《世界著名三角学经典著作钩沉》编写组 编
6.30MB
《工程数学手册(第四版)》
2019-05-16工程数学手册(第四版) 作 者: (美)JanJ.图马(JanJ.Tuma) (美)RonaldA.沃尔什(RonaldA.Walsh) 出版社:科学出版社 出版时间:2002/1/1 内容简介 本手
30.98MB
建筑中的数学之旅
2019-05-31图灵新知:建筑中的数学之旅 作 者: (美)Alexander·J·Hahn 著,李莉 译 出版时间: 2014 《图灵新知:建筑中的数学之旅》带领读者享受了一次世界最壮观建筑物背后的数学之旅,探
32.62MB
《建筑中的数学之旅》作者: [美] Alexander J. Hahn 译者: 李莉 出版年: 2014年
2019-05-31作者: Alexander J. Hahn 出版社: 人民邮电出版社 原作名: Mathematical excursions to the world’s great buildings 译者: 李
46.75MB
计算机图形学(OpenGL)第三版(带完整目录).pdf
2017-02-15世界著名图形学教材,完整版,带完整电子目录。 《计算机图形学(OpenGL版)第3版》是一本国外很有影响的教材,为许多国外著名大学所采用。《计算机图形学(OpenGL版)第3版》通过最能代表技术发展状
18.79MB
你必须知道的495个C语言问题
2015-10-16第1章 声明和初始化 基本类型 1.1 我该如何决定使用哪种整数类型? 1.2 为什么不精确定义标准类型的大小? 1.3 因为C语言没有精确定义类型的大小,所以我一般都用typedef定义int16和
48.48MB
VB工程Stl文件的解析读取.zip
2020-04-22STL格式文件由无数的小三角形及法向量组成,具有其特殊的格式,该工程是我做圆雕算法中的一部分STL解析,包含了两种格式的解析,是VB工程做的,可供大家参考学习。
9.28MB
算法竞赛入门经典(第二版) (算法艺术与信息学竞赛) 刘汝佳 pdf格式 文字版 有书签目录 完整版 清华大学出版社
2019-01-06算法竞赛入门经典(第二版) (算法艺术与信息学竞赛) 刘汝佳 pdf格式 文字版 有书签目录 完整版 清华大学出版社 内容简介 · · · · · · 《算法竞赛入门经典(第2版)》是一本算法竞赛的入
59.34MB
《实用数学手册》作者:沈永欢 梁在中 许履瑚 蔡蒨蒨 出版时间: 1992年
2019-05-26实用数学手册以高等数学为主,注重应用,内容分为三部分:初等数学(3章),基础数学(11章),应用数学(14章)。本手册的特点是:内容比较全面而又突出重点,不庞杂;文字简明准确但又不是公式堆砌;除数学基
87.28MB
《极限论与微分学新探》作者: 定光桂 出版年: 2014年
2019-05-19作者: 定光桂 出版社: 科学出版社 出版年: 2014-4-1 页数: 493 定价: 128.00元 装帧: 平装 ISBN: 9787030395528 内容简介 · · · · · · 这是一
4.72MB
《平面几何分类证明》作者: 李中平 出版年: 2011年
2019-05-31作者: 李中平 出版社: 西南师大 出版年: 2011-7 页数: 445 定价: 25.00元 ISBN: 9787562153658 内容简介 · · · · · · 《平面几何分类证明》内容简介
1.33MB
《你必须知道的495个C语言问题》
2010-03-20内容简介 《你必须知道的495个C语言问题》以问答的形式组织内容,讨论了学习或使用C语言的过程中经常遇到的一些问题。书中列出了C用户经常问的400多个经典问题,涵盖了初始化、数组、指针、字符串、内存分
20.93MB
python计算机视觉编程
2015-01-26推荐序 前言 第1章 基本的图像操作和处理 1.1 pil:python图像处理类库 1.1.1 转换图像格式 1.1.2 创建缩略图 1.1.3 复制和粘贴图像区域 1.1.4 调整尺寸和旋转 1.
45.5MB
【MATLAB R2014a完全自学一本通】-第二部分(共两部分)真正的入门、进阶、实践
2016-04-24《MATLAB R2014a完全自学一本通》面向MATLAB 的初中级读者,在介绍MATLAB R2014a 集成环境的基础上,对MATLAB 使用中常用的知识和工具进行了详细的介绍,书中各章均提供了
1.33MB
你必须知道的495个C语言问题(高清版)
2010-03-31~第1章 声明和初始化 1 基本类型 1 1.1 我该如何决定使用哪种整数类型? 1 1.2 为什么不精确定义标准类型的大小? 2 1.3 因为C语言没有精确定义类型的大小,所以我一般都用typed
311KB
LINGO软件的学习
2009-08-08LINGO是用来求解线性和非线性优化问题的简易工具。LINGO内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO高效的求解器可快速求解并分析结果。 §1 LINGO快速入门 当你
55.0MB
Visual C++开发实战1200例(第1卷).(清华出版.刘锐宁.梁水.李伟明).part1
2016-06-16书名:《Visual C++开发实战1200例(第I卷)》(清华大学出版社.刘锐宁.梁水.李伟明) PDF格式扫描版,全书分为4篇15章,共839页。2011年1月出版。 注:原电子版图书,为阅读方便
80.0MB
【MATLAB R2014a完全自学一本通】-第一部分(共两部分)真正的入门、提高、实践
2016-04-24真正的MATLAB入门书、进阶、实践一本通 美国MathWorks公司推荐用书 《MATLAB R2014a完全自学一本通》结构严谨、内容全面、图文并茂、实例丰富,既适合信号处理、通信工程、自
76KB
图形图像处理源程序-matlab6.5图形图像处理源程序.rar
2019-08-13图形图像处理源程序-matlab6.5图形图像处理源程序.rar 这是一些图形图像处理源程序,需要的话可以参考一下 第一章 MATLAB6.5 基础 1.1 MATLAB 语言介绍 1.1.1 MAT
153KB
HumanMotionTrack 全
2010-12-09基于视频序列捕获人体运动和人体运动分析 如何制作一个可控制的人体骨骼模型 描述:本文提供一种将骨架动作矢量映射到人体骨架模型的一种方法,通过输入各个骨骼的当前方向,反馈给骨架模型,这样就实现了动画的效
1.18MB
维基百科:数学基础(zslcn周生烈编译摘注评)
2014-02-06译者注:本人所译文章(以及其中本人的所注、所编和所评,用绿色正体示出,仅供参考,阅读时可以略去),首先是出于自身研究工作的需要;同时也兼顾 作为同行们和学友们 的非正式参考。文中诸多错误和谬误,恳望读
29.74MB
详解MATLAB图形绘制技术
2016-01-19详解MATLAB图形绘制技术》首先介绍MATLAB的基本知识及基本运算,使读者对MATLAB有一个概略的了解,然后系统论述图形绘制技术的基本概念、工作原理及在工程中的应用。书中精选科学和工程中常用的多
21.99MB
Excel公式与函数大辞典.宋翔(带书签高清文字版).pdf
2019-03-02本书从函数功能、函数格式、参数说明、注意事项、Excel 版本提醒、案例应用、交叉参考7 个方面,全面、细致地介绍了Excel 2016/2013/2010/2007/2003 中公式和函数的使用方法
48.30MB
Visual C++开发实战1200例(第1卷).(清华出版.刘锐宁.梁水.李伟明).part2
2016-06-16书名:《Visual C++开发实战1200例(第I卷)》(清华大学出版社.刘锐宁.梁水.李伟明) PDF格式扫描版,全书分为4篇15章,共839页。2011年1月出版。 注:原电子版图书,为阅读方便
C语言入门--必须基础17讲
2017-07-28适合没有基础的人群学习C语言,简单的入门教程。帮助小白理解什么是开发,什么是编程。做的很简单,很多细节没有详细讲解,不适合用来深入研究。学了这个,你能理解什么是编程,什么是C语言。
5.8MB
2020美赛C题题目.rar
2020-03-06Problem C: 电商里的数据财富 在电商市场中,亚马逊为消费者提供了对购买商品的评价(打分和评论)的服务。个人评级,又称为“星级评级”,意思是允许消费者使用1(低分差评,低满意度)到5(高分好评
-
下载
oxford 102flowers.zip
oxford 102flowers.zip
-
博客
并发 concurrency 与并行 parallel的区别
并发 concurrency 与并行 parallel的区别
-
下载
微服微服微服务.rar
微服微服微服务.rar
-
学院
UnitySocket异步聊天室
UnitySocket异步聊天室
-
学院
【数据分析-随到随学】互联网行业业务指标及行业数
【数据分析-随到随学】互联网行业业务指标及行业数
-
博客
【语言排行查询】 - 记一个小网站
【语言排行查询】 - 记一个小网站
-
博客
PHP实现用户登录注册(详细教程)
PHP实现用户登录注册(详细教程)
-
学院
Unity游戏开发之数字华容道
Unity游戏开发之数字华容道
-
博客
Scan network mac command
Scan network mac command
-
下载
SIMATIC NET_ 工业以太网交换机 SCALANCE X-200.pdf
SIMATIC NET_ 工业以太网交换机 SCALANCE X-200.pdf
-
博客
倪文迪陪你学蓝桥杯2021寒假每日一题:1.26日(2019省赛A组第4题)
倪文迪陪你学蓝桥杯2021寒假每日一题:1.26日(2019省赛A组第4题)
-
下载
心理咨询与诊断系统.
心理咨询与诊断系统.
-
博客
HiLink & LiteOS & IoT芯片 让IoT开发简单高效
HiLink & LiteOS & IoT芯片 让IoT开发简单高效
-
下载
awt的一个图片匹配算法系统.zip
awt的一个图片匹配算法系统.zip
-
学院
Qt and Qt Charts
Qt and Qt Charts
-
博客
深度学习笔记 掌握AI专业术语
深度学习笔记 掌握AI专业术语
-
学院
第1章 Java入门基础及环境搭建【java编程进阶】
第1章 Java入门基础及环境搭建【java编程进阶】
-
博客
idea工具集成配置maven最详细的
idea工具集成配置maven最详细的
-
博客
求一个真彩色转高彩色的工具
求一个真彩色转高彩色的工具
-
博客
【scala报错】java.sql.BatchUpdateException: Incorrect string value: ‘\xE4\xBA\xA7\xE5\x93\x81...‘ for co
【scala报错】java.sql.BatchUpdateException: Incorrect string value: ‘\xE4\xBA\xA7\xE5\x93\x81...‘ for co
-
下载
2020-12-01-DVWA.md
2020-12-01-DVWA.md
-
学院
【数据分析-随到随学】Mysql数据库
【数据分析-随到随学】Mysql数据库
-
学院
Java无损导出及转换word文档
Java无损导出及转换word文档
-
下载
反应过程vghtet.zip
反应过程vghtet.zip
-
学院
性能测试面面观
性能测试面面观
-
下载
CrashAPI.rar
CrashAPI.rar
-
学院
Spring Boot2.X仿朋友圈PC版系统实战_架构1.0
Spring Boot2.X仿朋友圈PC版系统实战_架构1.0
-
下载
VisualSFM_windows_64bit
VisualSFM_windows_64bit
-
博客
归并排序算法实现(javascript语言)
归并排序算法实现(javascript语言)
-
下载
64位+spacedesk_driver_Win_10_64_v0914_BETA
64位+spacedesk_driver_Win_10_64_v0914_BETA