介绍

来源:互联网 发布:ios生日提醒软件 编辑:程序博客网 时间:2024/05/17 06:47

介绍

不同于本文的大部分,这里没有源代码,也没有与之相关的项目。我们将会讨论向量数学图形绘制理论,以及OpenGL,这将为本书后面的部分做基础。

向量数学

本书假使你对代数和几何已经很熟悉了,但对向量数学还不是很熟悉。后面的材料将会培养你更多东西,但是在这里我们将介绍向量数学的基础。

一个Vector可以有很多种意思,这要取决于我们讨论的是几何还是数值。但是不管是那种情形下,Vector都是有维度的。这就表示向量有几维。一个二维矢量被限制到一个单一的平面,然而,三维向量则可以放在任意物理空间!向量还可以有更高的维度,但是通常我们只处理2到4维之间的!

从技术上来说,一个向量也可以只有一维,我们将这样的向量称为标量。

从几何学来将,一个向量有这么一个概念:特定空间中的一个位置或一个方向。一个向量位置表示空间中一个特定的位置。例如,下图,我们有一个向量位置A.

图1.点向量

Position Vectors

一个向量同样可以表示一个方向,方向向量(其实就是矢量)没有原点,他们简单的在空间中指定一个方向。下图这些都是向量,而且B和D是一样的向量,尽管他们画的位置不一样:

图2.方向向量

Direction Vectors

这对几何学来说一切都还好,但是向量同样可以描述成数值。这样一来,一个向量就是一串数字,所以一个二维的向量有两个数字,一个三维的向量有3个数字,以此类推。但是对于标量来说那就仅仅是一个单独的数字。

向量里的每一个数字叫做一个分量,每一个分量又通常有一个名字。对我们而言,我们将第一个分量叫做X分量,第二个是Y,第三个是Z,如果还有第四个的话则叫W.

在文中写向量的时候,我们会用括号将他们括起来,所以一个三维的向量可以写成 (0, 2, 4);X分量是0,Y分量是2,Z分量是4。当用方程式来表达时,他们可以写成这样:


在数学方程式中,矢量要么是实黑体写的,要么是在字母头上加个箭头。

当绘制矢量图形的时候点向量和矢量是有区别的。但是在数值上两者是没有区别的。唯一的区别就是你如何使用他们,而不是你如何用数字表达他们。所以你可以将一个点向量当作一个矢量,并且对齐进行向量操作,然后再把结果当作一个点向量。

尽管向量有自己的数字分量,一个向量也还是可以作为一个整体对其进行数值操作,我们将会展示几个和数值的表示:

向量相加:你可以将两个向量加在一起,如下图:

图3.向量相加

Vector Addition

记住,矢量可以在不改变其值大小的情况下移位,所以如果你将两个向量的首尾相连,那么这个向量和就很容易的表现成从第一个向量的尾部指向后面那个向量的头部

图4.向量相加,首尾相连

Vector Addition Head-to-Tail

从数值上来讲,两个向量的和的值就是两个向量对应的值的和

公式1.向量值的相加


任何一个对向量分量相对应操作的操作都叫做分量式操作。向量相加就是一个分量式的操作,任何两个做分量式操作的两个向量都要有相同的维度。

相反向量和向量相减:你可以对一个向量取反,其实就是扭转他的方向。

图5.反向量

Vector Negation

从数值上来讲,就是对该向量的每一个分量值都取反。

公式2.反向量


就像标量一样,向量相减和向量相加也是一样的!

图6.向量相减

Vector Subtraction

向量相乘,向量相乘是向量操作中的一个,但是并没有几何上的结果。一个点向量和一个点向量相乘或一个矢量和一个矢量相乘那样是没有意义的(几何上,数值上还是有意义的)

两个向量相乘还是分量式操作,和向量相加很像的

公式3.向量相乘


向量/标量操作. 向量的操作可以转成标量的操作,记住那个标量仅仅是一数字。向量可以与一个标量相乘,这将会将向量放大或缩小该向量的长度,具体的要看标量的值!

图7.向量缩放

Vector Scaling

从数值上来讲,这还是一个分量式相乘,即向量的每一个分量都与该标量相乘。

公式4.向量-标量相乘


标量也可以和向量相加。但是这个就好像是向量与向量相乘一样的,没有几何意义。这是一个分量式相加。

公式5.标量与向量相加


向量代数。学这么一些向量操作及其之间的关系是很有用的。

向量的相加和相乘与标量的相加和相乘的规则一样,具有可交换性,可结合性,可分配性。

公式6.向量代数


向量标量都有相似的属性

长度:向量有长度,矢量的长度就是起始点到终点的距离,从数值上来讲,计算其需要以下公式

公式7.向量长度


计算这个向量长度用到了比达哥斯拉定理。这个公式适用任意向量维度,而不仅仅是2或3维。

单位向量和标准化.长度为1的向量就叫做单位向量。单位向量在数学公式中写成a^。

一个向量可以通过标准化使之转换成一个单位向量,这个需要用该向量的长度来除每个分量。或者是乘以长度的倒数(额,,,不是同一个意思么?)

公式8.向量标准化


这并不是我们要在教程中要用到的所有公式,新的公式在最新用到的时候还会介绍解释的,而且不像这里所介绍的,那些将会是不再用分量式操作的。

区间符号:本书将会使用标准的符号来指定一个值的范围。

如果一个值在0到1之间,而且它能取到0或1的值,那我们就说它在区间[0, 1],方括号表示能取到该值。

如果一个值在0到1之间,而且它不能取到0,那我们就说它在区间(0, 1],小括号表示不能取到该值。

如果一个值大于0,则我们可以用到无穷大符号,用[0, ∞)来表示其区间。(无穷大是永远都无法取到的),比0小的区间(-∞, 0)


原文:http://www.arcsynthesis.org/gltut/Basics/Introduction.html

2 0
原创粉丝点击