1.3 点积

点积(dot product)是向量乘法的一种形式,它的计算结果是一个标量值;由于这一原因,有时也将点积称为标量积(scalar product)。设u=(ux,uy,uz),v=(vx,vy,vz),则点积定义如下:

uv=uxvx+uyvy+uzvz    (1.3)

简言之,点积等于两个向量对应分量的乘积之和。点积的定义不存在任何明显的几何含义。但是,使用余弦定理可以发现存在如下关系:

uv=uvcosθ    (1.4)

其中,θ表示向量uv之间的夹角,且0≤θ≤π(参见图1.9)。公式1.4说明这两个向量的点积等于向量夹角的余弦值和向量模之间的乘积。在特殊情况下,如果uv都是单位向量,那么uv就等于它们之间夹角的余弦值(即,uv=cosθ)。

图1.9
图1.9 在左图中,uv之间的夹角θ为锐角。在右图中,uv之间的夹角θ为钝角。记住,当我们提及两个向量之间的夹角时,通常指的是最小的角,也就是角度θ,且0≤θ≤π。

公式1.4提供了一些有用的点积的几何性质:

1.如果uv=0,则uv(即,向量相互垂直)。

2.如果uv>0,则两个向量之间的夹角θ小于90º(即,向量形成一个锐角)。

3.如果uv<0,则两个向量之间的夹角θ大于90º(即,向量形成一个钝角)。

注意:“相互垂直”也可称为“互成直角”。

【例1.4】

u=(1, 2,3)、v=(−4, 0, −1)。求uv之间的夹角。首先,我们要做如下计算:

uv=(1,2,3)(4,0,1)=43=7u=12+22+33=14v=(4)2+02+(1)2=17

现在,由公式1.4解得θ为:

cosθ=uvuv=71417θ=cos171417117

【例 1.5】

考虑图1.10。给出v和单位向量n,推导出一个使用点积求解向量p的公式。

图1.10
图1.10 vn上的正交投影。

首先,从该图中可以看到标量k可以使p=kn;而且,由于我们已知‖n‖=1,所以有‖p‖=‖kn‖=| k|‖n‖=|k|。(注意,当且仅当pn的方向相反时,k为负数。)我们使用三角函数,可以得出k=‖v‖cosθ;由此,p=kn=(‖v‖cosθn。不过,因为n是一个单位向量,所以我们可以用另一种方式进行表达:

p=(vcosθ)n=(v1cosθ)n=(vncosθ)n=(vn)n

请注意,这里的k=vn,它说明了当n为单位向量时vn的几何含义。我们将p称为vn上的正交投影(orthogonal projection),并记为

p=projn(v)

如果我们把v理解为一个作用力,那么p可以被认为是v在方向n上的分力。同理,向量w=perpn(v)=vp是与n垂直方向上的分力。可以看到v=p+w,这说明我们已经将向量v分解成了两个相互垂直的向量pw。如果n不是一个单位向量,那我们可以对它进行规范化,使其保持单位长度。通过用单位向量nn来代替n,可以得到一个更通用的投影公式:

p=projn(v)=(vnn)nn=(vn)n2n

1.3.1 正交化

若一个向量集合{v0,……,vn-1 }中的向量相互正交(即集合中的每一个向量与其他向量正交)并具有单位长度,我们将这个集合称之为规范化正交集。有时一组向量几乎是正交的,但又不完全是,一个常见的任务就是使其正交。在三维计算机图形中,开始时通常是一个规范化正交的向量集合,但由于计算精度问题,这个集合就会逐渐成为非规范化的了。我们主要关心的是2D和3D的情况下任何处理这个问题(即,含有两个和三个向量的情况)。

首先讨论简单的2D情况。假设有一组向量为{v0,v1},我们要将它们正交到一个规范正交集{w0,w1}中,如图1.11所示。首先令w0=v0,然后修改v1使它与w0垂直;这需要减去v1向量在w0上的投影:

w1= v1- projw0(v1)

现在就有了一组互相垂直的向量{w0,w1};最后需要规范化w0w1才能构建规范化的正交集。

图1.11
图1.11 2D正交化处理

3D情况的原理与2D相同,但需要更多的步骤。假设有一组向量{v0,v1,v2}需要正交规范化到{w0,w1,w2},如图1.12所示。首先令w0=v0,然后修改v1使之垂直于w0;这需要从v1中减去v1w0方向上的投影:

w1= v1- projw0(v1)

下一步需要令v2同时垂直于w0w1,这需要从v2中减去v2w0上的投影再减去v2w1上的投影:

w2= v2- projw0(v2) - projw1(v2)

现在就有了一组互相垂直的向量{w0,w1,w2};最后需要规范化w0w1w2才能构建规范化的正交集。

图1.12
图1.12 3D正交化

要规范正交化任意数量的向量集{v0,…,vn-1},我们需要按照通常叫做>Gram-Schmidt正交化(http://zh.wikipedia.org/wiki/格拉姆-施密特正交化)的处理过程进行:

基本步骤:令w0=v0

for 1 ≤ i ≤ n-1,令wi=vij=0i1projwj(vi)

规范化步骤:令wi=wiwi

原理与上面是类似的,当选取一个向量vi将它添加到规范化的正交集时,我们需要减去这个向量在正交集中其他向量(w0,w1,…,wi-1)上的投影,这样可以确保这个新添的向量与正交集中的其他向量垂直。

文件下载(已下载 657 次)

发布时间:2014/9/8 下午8:15:03  阅读次数:5680

2006 - 2025,推荐分辨率 1024*768 以上,推荐浏览器 Chrome、Edge 等现代浏览器,截止 2021 年 12 月 5 日的访问次数:1872 万 9823 站长邮箱

沪 ICP 备 18037240 号-1

沪公网安备 31011002002865 号