定义 3.1:点积
两个向量 $\vc{u}$ 和 $\vc{v}$ 之间的点积记为 $\vc{u}\cdot \vc{v}$,
定义为标量值
\begin{equation}
\vc{u}\cdot \vc{v} = \left\{
\begin{array}{ll}
\ln{\vc{u}}\ \ln{\vc{v}} \cos[\vc{u},\vc{v}], & \text{如果 } \vc{u}\neq \vc{0} \text{ 且 } \vc{v}\neq \vc{0},\\
0, & \text{如果 } \vc{u}=\vc{0} \text{ 或 } \vc{v}=\vc{0}.
\end{array}
\right.
\end{equation}
公式 3.5:
\begin{equation}
\cos \theta= \frac{a}{c},
\end{equation}
公式 3.6:
\begin{equation}
\vc{w} = \ln{\vc{w}}\ \vc{v} = \ln{\vc{u}} \cos [\vc{u},\vc{v}]\ \vc{v}.
\end{equation}
定义 3.2:正交投影
如果 $\vc{v}$ 是非零向量,那么 $\vc{u}$ 在 $\vc{v}$ 上的正交投影记为 $\proj{\vc{v}}{\vc{u}}$,
定义为
\begin{equation}
\proj{\vc{v}}{\vc{u}} = \frac{\vc{u} \cdot \vc{v}}{ \ln{\vc{v}}^2 } \vc{v}.
\end{equation}
注意如果 $\ln{\vc{v}}=1$,即 $\vc{v}$ 是标准化的,那么投影表达式会更简单:
$\proj{\vc{v}}{\vc{u}} = (\vc{u} \cdot \vc{v})\vc{v}$。
定理 3.1:点积规则
以下是使用点积时的一组有用规则。
\begin{align}
\begin{array}{llr}
(i) & \vc{u} \cdot \vc{v} = \vc{v} \cdot \vc{u} & \spc\text{(交换律)} \\
(ii) & k(\vc{u} \cdot \vc{v}) = (k\vc{u}) \cdot \vc{v} & \spc\text{(结合律)} \\
(iii) & \vc{v} \cdot (\vc{u} +\vc{w}) = \vc{v} \cdot \vc{u} + \vc{v} \cdot \vc{w} & \spc\text{(分配律)} \\
(iv) & \vc{v} \cdot \vc{v} = \ln{\vc{v}}^2 \geq 0, \mathrm{仅当\ } \vc{v}=\vc{0} \mathrm{\ 时等号成立} & \spc\text{(长度平方)} \\
\end{array}
\end{align}
公式 1.5:
\begin{equation}
c^2 = a^2 + b^2 - 2ab\cos \gamma.
\end{equation}
定义 3.4:标准正交基中的点积计算
在任何标准正交基中,两个 $n$ 维向量 $\vc{u}$ 和 $\vc{v}$ 之间的点积可以计算为
\begin{equation}
\vc{u}\cdot\vc{v} = \sum_{i=1}^{n} u_i v_i,
\end{equation}
这是分量逐项相乘的和。二维和三维点积计算为
\begin{align}
\mathrm{二维空间} &:\ \ \vc{u}\cdot\vc{v} = u_xv_x + u_yv_y, \\
\mathrm{三维空间} &:\ \ \vc{u}\cdot\vc{v} = u_xv_x + u_yv_y +u_zv_z. \\
\end{align}
定义 3.7:二维隐式直线
直线可以用隐式形式表示,使用起点 $S$ 和法向量 $\vc{n}$。
直线上的所有点 $P$ 可以用以下方式描述
\begin{equation}
\vc{n} \cdot (P - S) = 0.
\end{equation}
注意 $\vc{n}\neq \vc{0}$,否则所有点 $P$ 都在直线上。
公式 3.65:
\begin{equation}
e(P) = \vc{n} \cdot (P - S).
\end{equation}
公式 3.73:
\begin{equation}
P(t_1, t_2) = S + t_1 \vc{d}_1 + t_2\vc{d}_2
\ \ \ \Longleftrightarrow \ \ \
\begin{cases}
p_x(t_1,t_2) = s_x + t_1 d_{1,x} + t_2 d_{2,x},\\
p_y(t_1,t_2) = s_y + t_1 d_{1,y} + t_2 d_{2,y},\\
p_z(t_1,t_2) = s_z + t_1 d_{1,z} + t_2 d_{2,z}.
\end{cases}
\end{equation}
定义 3.6:参数化直线
由参数 $t\in \R$ 参数化的直线可以用起点 $S$ 和方向向量 $\vc{d}$ 描述。
直线上的所有点 $P(t)$ 可以描述为
\begin{equation}
P(t) = S + t\vc{d}.
\end{equation}
注意 $\vc{d}\neq \vc{0}$,否则只会生成单个点 $S$(即没有直线)。
第3章:点积
本章介绍一个强大的工具,称为。
它是计算机图形学中的基本构建块之一,
在
交互式插图 3.1中,
有一个计算机图形学程序称为光线追踪器。光线追踪器的思想是生成一组几何对象的图像
(在下面的情况中,只有球体)。这些对象由
多个位于三维位置的光源照明。用户还必须
设置一个虚拟相机,即相机位置和视野,以及相机的方向(即它朝向哪里)。然后光线追踪器从相机位置沿相机方向追踪光线,穿过
相机图像中的一组像素。程序然后找到最近的几何对象,
并确定是否有任何光线从光源直接到达该点(否则,它将处于阴影中)。
也可以追踪反射光线以创建反射对象(例如
交互式插图 3.1中的中间球体)。
通过按下插图下方的
开始按钮来试用光线追踪程序。
在上面的光线追踪程序中,被用于计算光线与球体之间的相交,
并且还被用于测量到相交点的。
此外,用于计算反射对象的反射定律是使用点积实现的。
当读者了解点积如何工作时,这两个主题将在
第 3.7 节中再次解释。
一般来说,实际上是关于度量,即如何测量向量的角度和长度。
下面是关于角度和的两个简短小节,然后是本章的主要小节,
它定义和阐明,并且包括例如
第 3.2.3 节中的规则和性质。
第 3.3 节介绍了的概念,
在
第 3.4 节中,介绍了一组常常有用的不等式。
第 3.5 节展示了一些关于如何使用的例子。然后是
关于和的一节,最后是关于光线追踪的后续小节。
一个向量 $\vc{u}$ 和另一个向量 $\vc{v}$ 之间的最小角度
记为 $[\vc{u},\vc{v}]$。
右侧展示了向量对之间的最小角度,用绿色圆弧表示,
在一种情况下,角度用绿色正方形表示。在后一种情况下,
角度是 $90^\circ$ 或 $\pi/2$ 弧度,即 $[\vc{u},\vc{v}]=\pi/2$。
这也记为 $\vc{u} \perp \vc{v}$,表示向量是的,
也就是垂直。
注意左下角的角度是 $0$,底行中间的角度是 $\pi$ 弧度。在这两种情况下,可以说向量是
共的,因为它们位于共享的上,并且它们实际上也是平行的。
在左下角,向量是平行的并且具有相同的方向,而
在底行中间,向量是平行的但具有相反的方向。
当两个向量平行时,记为 $\vc{u}\, || \,\vc{v}$。
还要注意,如果 $\vc{u}$ 和 $\vc{v}$ 平行,那么对于某个值 $k$,必须满足
$\vc{v} = k \vc{u}$。
我们现在准备好了本身的定义:
定义 3.1:
点积
两个向量 $\vc{u}$ 和 $\vc{v}$ 之间的记为 $\vc{u}\cdot \vc{v}$,
定义为标量值
|
\begin{equation}
\vc{u}\cdot \vc{v} = \left\{
\begin{array}{ll}
\ln{\vc{u}}\ \ln{\vc{v}} \cos[\vc{u},\vc{v}], & \text{如果 } \vc{u}\neq \vc{0} \text{ 且 } \vc{v}\neq \vc{0},\\
0, & \text{如果 } \vc{u}=\vc{0} \text{ 或 } \vc{v}=\vc{0}.
\end{array}
\right.
\end{equation}
|
(3.1)
|
回顾
第2章,$||\vc{v}||$ 表示向量 $\vc{v}$ 的。
由于向量的总是正数,
将是正数当且仅当 $\cos[\vc{u},\vc{v}]$ 是正数。
从中我们可以推导出以下关于点积的规则
|
\begin{align}
\vc{u} \cdot \vc{v}>0 \ \ \ &\Longleftrightarrow\ \ \ \ 0 < [\vc{u},\vc{v}] < \pi/2,\\
\vc{u} \cdot \vc{v}<0 \ \ \ &\Longleftrightarrow\ \ \ \ \pi/2 < [\vc{u},\vc{v}] \leq \pi, \\
\vc{u} \cdot \vc{v}=0 \ \ \ &\Longleftrightarrow\ \ \ \vc{u} \perp \vc{v}, \mathrm{\ 即\ } [\vc{u},\vc{v}]=\pi/2 \mathrm{\ 或\ } \vc{u} = 0 \mathrm{\ 或\ } \vc{v} = 0. \\
\end{align}
|
(3.2)
|
特别是最后一个很重要:如果两个向量 $\vc{u}$ 和
$\vc{v}$ 彼此(垂直),那么 $\vc{u}\cdot \vc{v} = 0$。正如我们在本章后面将看到的,正交性
是一个有用的特征,它常常简化计算。
注意产生一个标量值,因此,它有时被称为。
例 3.1:
简单点积例子
假设我们有两个向量 $\vc{u}$ 和 $\vc{v}$。$\vc{u}$ 的是 $4$,$\vc{v}$ 的是 $3$。
它们之间的角度是 $\frac{\pi}{4}$。计算 $\vc{u} \cdot \vc{v}$。
两个向量都没有零。根据
定义 3.1,
$\vc{u}$ 和 $\vc{v}$ 的是
|
\begin{align}
\vc{u} \cdot \vc{v} &= \ln{\vc{u}} \ln{\vc{v}} \cos[\vc{u},\vc{v}]\\
&= 4 \cdot 3 \cos\Big(\frac{\pi}{4}\Big) \\
&= 12 \frac{1}{\sqrt{2}} \\
&= 6 \sqrt{2}.
\end{align}
|
(3.3)
|
3.2.1 单位向量与标准化
是为 1 的向量,即如果 $\ln{\vc{v}}=1$,那么 $\vc{v}$ 是。
从每个非 $\vc{v}$ 都可以创建一个。这被称为向量,
这个过程称为。
$\vc{n}$ 是通过将 $\vc{v}$ 除以其 $\ln{\vc{v}}$ 从 $\vc{v}$ 创建的,即
|
\begin{equation}
\vc{n} = \frac{1}{\ln{\vc{v}}}\vc{v}.
\end{equation}
|
(3.4)
|
接下来,我们需要证明 $\vc{n}$ 确实是一个,即 $\ln{\vc{n}}=1$。让我们记 $l=1/\ln{\vc{v}}$,
并简化 $\vc{n}$ 的表达式为
$\ln{\vc{n}} = \ln{l\vc{v}} = \abs{l}\,\ln{\vc{v}}=\frac{1}{\ln{\vc{v}}}\ln{\vc{v}}=1$。
注意如果两个向量都是,即 $\ln{\vc{u}}=\ln{\vc{v}}=1$,
简化为 $\vc{u} \cdot \vc{v} = \cos[\vc{u},\vc{v}]$。
这个事实在计算机图形学的着色计算中非常有用,其中经常需要两个向量之间角度的余弦值。
实际上,在
交互式插图 3.1中,在光线追踪和着色中被广泛使用。
3.2.2 投影
从三角学知道,在直角三角形中,其中一个较小角度的余弦值
与斜边和其中一条较短边的有关。
更确切地说,这可以表示为
|
\begin{equation}
\cos \theta= \frac{a}{c},
\end{equation}
|
(3.5)
|
其中 $c$ 是斜边的,$a$ 是与斜边成 $\theta$ 角的较短边的。这也在右图中有所说明。
因此,在这些非常特殊的情况下,如果已知两个长度 $a$ 和 $c$,就可以计算出角度。
或者,如果已知角度和一边的,也可以计算出另一边的。
$\vc{u}$
$\vc{v}$
$\vc{w}$
$[\vc{u},\vc{v}]$
假设一个向量 $\vc{u}$ 需要正交投影到另一个向量 $\vc{v}$ 上,以便
创建一个新的向量 $\vc{w}$。这在右图中有所说明。
由于 $\vc{u}$ 和 $\vc{w}$ 构成了一个直角三角形,
因此必须满足:$\cos [\vc{u},\vc{v}] = \ln{\vc{w}} / \ln{\vc{u}}$,这
只是上述
公式 (3.5) 的简单应用。这意味着 $\vc{w}$ 的
为 $\ln{\vc{w}} = \ln{\vc{u}}\cos [\vc{u},\vc{v}]$。如果 $\vc{v}$ 的为1,即 $\ln{\vc{v}}=1$,
那么投影向量可以计算为
|
\begin{equation}
\vc{w} = \ln{\vc{w}}\ \vc{v} = \ln{\vc{u}} \cos [\vc{u},\vc{v}]\ \vc{v}.
\end{equation}
|
(3.6)
|
为了确信 $\ln{\vc{w}}\vc{v}$ 确实等于
$\vc{w}$,请注意它既有正确的方向($\vc{v}$ 的方向,
因为 $\ln{\vc{w}}$ 只是一个标量),也有正确的
(即 $\ln{\vc{w}}$,因为 $\vc{v}$ 的等于1)。
然而,如果能处理 $\vc{v}$ 的不为1的情况就更好了。
这可以通过对向量 $\vc{v}$ 进行来实现,即将其乘以 $\frac{1}{\ln{\vc{v}}}$,这将使其为1。
如果在上述
公式 (3.6) 中将 $\vc{v}$ 替换为
$\frac{1}{\ln{\vc{v}}}\vc{v}$,就可以得到
|
\begin{equation}
\vc{w} = \frac{\ln{\vc{u}} \cos [\vc{u},\vc{v}]}{\ln{\vc{v}}} \vc{v}.
\end{equation}
|
(3.7)
|
这里,我们利用了不会改变方向这一事实,
因此我们可以继续使用 $\cos[\vc{u},\vc{v}]$ 而不是 $\cos[\vc{u}, \frac{\vc{v}}{\ln{v}}]$。
接下来,将分子和分母都乘以
$\ln{\vc{v}}$,这就得到了通用的公式
|
\begin{equation}
\vc{w} = \frac{\ln{\vc{u}}\ \ln{\vc{v}} \cos [\vc{u},\vc{v}] }{ \ln{\vc{v}}^2 } \vc{v}.
\end{equation}
|
(3.8)
|
最后这一步的原因是,分子 $\ln{\vc{u}}\ \ln{\vc{v}} \cos[\vc{u},\vc{v}]$ 现在
正好等于的定义。因此我们可以将公式写得更简洁
|
\begin{equation}
\vc{w} = \frac{\vc{u} \cdot \vc{v} }{ \ln{\vc{v}}^2 } \vc{v}.
\end{equation}
|
(3.9)
|
因此我们证明了以下公式:
定义 3.2:
正交投影
如果 $\vc{v}$ 是非,那么 $\vc{u}$ 到 $\vc{v}$ 的记为 $\proj{\vc{v}}{\vc{u}}$,
其定义为
|
\begin{equation}
\proj{\vc{v}}{\vc{u}} = \frac{\vc{u} \cdot \vc{v}}{ \ln{\vc{v}}^2 } \vc{v}.
\end{equation}
|
(3.10)
|
请注意,如果 $\ln{\vc{v}}=1$,即 $\vc{v}$ 是,那么的表达式就更简单:
$\proj{\vc{v}}{\vc{u}} = (\vc{u} \cdot \vc{v})\vc{v}$。
3.2.3 规则与性质
借助定义和公式,现在
可以推导出以下规则:
定理 3.1:
点积规则
以下是使用点积时的一组有用规则。
|
\begin{align}
\begin{array}{llr}
(i) & \vc{u} \cdot \vc{v} = \vc{v} \cdot \vc{u} & \spc\text{(交换律)} \\
(ii) & k(\vc{u} \cdot \vc{v}) = (k\vc{u}) \cdot \vc{v} & \spc\text{(结合律)} \\
(iii) & \vc{v} \cdot (\vc{u} +\vc{w}) = \vc{v} \cdot \vc{u} + \vc{v} \cdot \vc{w} & \spc\text{(分配律)} \\
(iv) & \vc{v} \cdot \vc{v} = \ln{\vc{v}}^2 \geq 0, \mathrm{当且仅当\ } \vc{v}=\vc{0}时\ 等号成立. & \spc\text{(平方长度)} \\
\end{array}
\end{align}
|
(3.11)
|
$(i)$ 根据
定义 3.1,我们知道 $\vc{u} \cdot \vc{v} = \ln{\vc{u}}\ \ln{\vc{v}} \cos[\vc{u},\vc{v}]$,且 $\vc{v} \cdot \vc{u} = \ln{\vc{v}}\ \ln{\vc{u}} \cos[\vc{v},\vc{u}]$,两者相等是因为 $[\vc{u},\vc{v}]$ 和 $[\vc{v},\vc{u}]$ 都表示 $\vc{u}$ 和 $\vc{v}$ 之间的最小角度。
$(ii)$ 再次根据
定义 3.1,
$k(\vc{u} \cdot \vc{v}) =$ $k\ln{\vc{u}}\,\ln{\vc{v}} \cos[\vc{u},\vc{v}]$ 等式左边为,而
$(k\vc{u}) \cdot \vc{v} =$ $\ln{k\vc{u}}\,\ln{\vc{v}} \cos[k\vc{u},\vc{v}]$ 等式右边为。
若 $k>0$,则 $\cos[k\vc{u},\vc{v}]=$ $\cos[\vc{u},\vc{v}]$,且 $\ln{k\vc{u}}=k\ln{\vc{u}}$,由此证明 $k>0$ 时等式成立。对于 $k<0$,等式左边可以重写为
$k\ln{\vc{u}}\ \ln{\vc{v}} \cos[\vc{u},\vc{v}] = - \abs{k}\,\ln{\vc{u}}\ \ln{\vc{v}} \cos[\vc{u},\vc{v}]$.
右边 可以重写为
$\ln{k\vc{u}}\,\ln{\vc{v}} \cos[k\vc{u},\vc{v}] = \abs{k}\ln{\vc{u}}\,\ln{\vc{v}} \cos(\pi-[\abs{k}\vc{u},\vc{v}])$,
其中最后一步来自于 $[k\vc{u},\vc{v}]=[-\vc{u},\vc{v}]=\pi-[\vc{u},\vc{v}]$
对于负数 $k$。根据三角学知识,我们知道 $\cos (\pi-[\vc{u},\vc{v}]) = -\cos [\vc{u},\vc{v}]$,
因此右边变为 $-\abs{k}\,\ln{\vc{u}}\ \ln{\vc{v}} \cos[\vc{u},\vc{v}]$, 这证明了 $k<0$ 时的规则。
最后,对于 $k=0$,等号两边显然都为零。
$(iii)$
$\vc{u}$
$\vc{v}$
$\vc{w}$
$\proj{\vc{v}}{\vc{u}}$
$\proj{\vc{v}}{\vc{w}}$
$\vc{v}$
$\vc{u}+\vc{w}$
$\proj{\vc{v}}{(\vc{u}+\vc{w})}$
首先,我们假设 $\vc{v}\neq \vc{0}$(如果 $\vc{v}=\vc{0}$,这个规则显然成立)。
我们将使用几何证明来证明这个规则,利用投影的和
等于和的这一事实。
这可以表示为
|
\begin{equation}
\proj{\vc{v}}{\vc{u}} + \proj{\vc{v}}{\vc{w}} = \proj{\vc{v}}{(\vc{u}+\vc{w})}.
\end{equation}
|
(3.12)
|
等号左边的表达式在
图 3.5 的上部分显示(请注意图中的 $\vc{u}$ 和 $\vc{w}$ 向量可以移动),
而在同一图的下部分,等号右边的表达式被可视化。
使用
定义 3.2,这可以重写为
|
\begin{gather}
\frac{\vc{u} \cdot \vc{v}}{ \ln{\vc{v}}^2 } \vc{v} + \frac{\vc{w} \cdot \vc{v}}{ \ln{\vc{v}}^2 } \vc{v} =
\frac{(\vc{u}+\vc{w}) \cdot \vc{v}}{ \ln{\vc{v}}^2 } \vc{v} \\
\Longleftrightarrow \\
(\underbrace{\vc{u} \cdot \vc{v}}_{\text{标量}}) \vc{v} + (\underbrace{\vc{w} \cdot \vc{v}}_{\text{标量}})\vc{v} =
\bigl(\underbrace{(\vc{u}+\vc{w}) \cdot \vc{v}}_{\text{标量}}\bigr)\vc{v}. \\
\end{gather}
|
(3.13)
|
请注意,在最后一步,有三个标量,它们都乘以 $\vc{v}$。
因此,可以去掉向量 $\vc{v}$,只保留标量,得到:
$\vc{u}\cdot\vc{v} + \vc{w}\cdot\vc{v} =$ $(\vc{u}+\vc{w})\cdot\vc{v}$。
这又可以使用规则 $(i)$ 重写为 $\vc{v}\cdot\vc{u} + \vc{v}\cdot\vc{w} =$ $\vc{v}\cdot(\vc{u}+\vc{w})$,
这就共同证明了规则 $(iii)$。
$(iv)$ 根据
定义 3.1,$\vc{v}\cdot\vc{v}=\ln{\vc{v}}\,\ln{\vc{v}}\cos[\vc{v},\vc{v}]=\ln{\vc{v}}^2$,
因为 $\cos[\vc{v},\vc{v}]=\cos 0 = 1$。
证明完毕。
$\square$
定理 3.1 中的规则是直观的,因为它们与标量加法和标量乘法的规则相同。
在
第 3.5 节中,将介绍几个如何使用这些规则的例子。
例 3.2:
余弦定理
$a$
$b$
$c$
$\theta$
$\vc{u}$
$\vc{v}$
$\vc{w}=\vc{u}-\vc{v}$
$[\vc{u},\vc{v}]$
有时,余弦定理可能有点难以记忆,但实际上借助来推导这个公式非常简单。几何情况如
右侧的
图 3.6 所示,其中两个向量
$\vc{u}$ 和 $\vc{v}$ 从同一点出发,
而它们的差 $\vc{u} - \vc{v}$ 是从 $\vc{v}$ 的端点到 $\vc{u}$ 的端点的向量,
即 $\vc{w} = \vc{u} - \vc{v}$。
需要记住的一点是,余弦定理从 $\vc{w}$ 的平方开始,然后
用的规则展开表达式,其中我们首先使用规则 $(iv)$ 得到
|
\begin{equation}
\ln{\vc{w}}^2 = \vc{w} \cdot \vc{w}.
\end{equation}
|
(3.14)
|
由于 $\vc{w} = (\vc{u} - \vc{v})$,这可以重写为
|
\begin{equation}
\ln{\vc{w}}^2 = (\vc{u} - \vc{v}) \cdot (\vc{u} - \vc{v}).
\end{equation}
|
(3.15)
|
这个表达式可以使用上述规则 $(i)$ 和 $(iii)$ 展开,得到
|
\begin{equation}
\ln{\vc{w}}^2 = \vc{u} \cdot \vc{u} - \vc{u} \cdot \vc{v} - \vc{v} \cdot \vc{u} + \vc{v} \cdot \vc{v}.
\end{equation}
|
(3.16)
|
然而,规则 $(i)$ 说明 $\vc{u} \cdot \vc{v} = \vc{v} \cdot \vc{u}$,而规则 $(iv)$ 说明 $\vc{u} \cdot \vc{u} = \ln{\vc{u}}^2$,这给出
|
\begin{equation}
\ln{\vc{w}}^2 = \ln{\vc{u}}^2 + \ln{\vc{v}}^2 - 2\vc{u} \cdot \vc{v}.
\end{equation}
|
(3.17)
|
最后,应用的定义,得到最终表达式
|
\begin{equation}
\ln{\vc{w}}^2 = \ln{\vc{u}}^2 + \ln{\vc{v}}^2 - 2\ \ln{\vc{u}}\ \ln{\vc{v}}\cos[\vc{u},\vc{v}].
\end{equation}
|
(3.18)
|
使用图上部分更熟悉的记号,显然有
|
\begin{equation}
c^2 = a^2 + b^2 - 2ab \cos \theta,
\end{equation}
|
(3.19)
|
这就是余弦定理,与
公式 (1.5) 中的类似。
本节将介绍一种计算点积的简单方法。假设我们有两个三维向量 $\vc{u} = (u_1, u_2, u_3)$ 和 $\vc{v} = (v_1, v_2, v_3)$,它们在同一个下表示
|
\begin{align}
\vc{u} & = u_1 \vc{e}_1 + u_2 \vc{e}_2 + u_3 \vc{e}_3,\\
\vc{v} & = v_1 \vc{e}_1 + v_2 \vc{e}_2 + v_3 \vc{e}_3.
\end{align}
|
(3.20)
|
$\vc{u} \cdot \vc{v}$ 现在可以写为
|
\begin{align}
\vc{u} \cdot \vc{v} & = (u_1 \vc{e}_1 + u_2 \vc{e}_2 + u_3 \vc{e}_3) \cdot (v_1 \vc{e}_1 + v_2 \vc{e}_2 + v_3 \vc{e}_3),\\
\end{align}
|
(3.21)
|
它可以展开为
|
\begin{align}
\vc{u} \cdot \vc{v} & = u_1 v_1 \vc{e}_1 \cdot \vc{e}_1 + u_1 v_2 \vc{e}_1 \cdot \vc{e}_2 + u_1 v_3 \vc{e}_1 \cdot \vc{e}_3 \\
& + u_2 v_1 \vc{e}_2 \cdot \vc{e}_1 + u_2 v_2 \vc{e}_2 \cdot \vc{e}_2 + u_2 v_3 \vc{e}_2 \cdot \vc{e}_3 \\
& + u_3 v_1 \vc{e}_3 \cdot \vc{e}_1 + u_3 v_2 \vc{e}_3 \cdot \vc{e}_2 + u_3 v_3 \vc{e}_3 \cdot \vc{e}_3.
\end{align}
|
(3.22)
|
这看起来又长又复杂。然而,假设当 $i \neq j$ 时 $\vc{e}_i \cdot \vc{e}_j$ 为
$0$。这等价于说
每个轴与其他每个轴都。那么除了
三项以外的所有项都会消失。
进一步假设对所有 $i$ 都有
$\vc{e}_i \cdot \vc{e}_i = 1$。这等价于
说每个向量的应该为1。
剩下的项也可以简化,得到
|
\begin{equation}
\vc{u} \cdot \vc{v} = u_1 v_1 + u_2 v_2 + u_3 v_3.
\end{equation}
|
(3.23)
|
现在我们准备在任意维度下定义。
定义 3.3:
正交规范基
对于一个 $n$ 维,由向量集合 $\{\vc{e}_1, \dots, \vc{e}_n\}$ 组成,
满足以下条件
|
\begin{equation}
\vc{e}_i \cdot \vc{e}_j =
\begin{cases}
1 & \text{if } i=j, \\
0 & \text{if } i\neq j. \\
\end{cases}
\end{equation}
|
(3.24)
|
这简单地意味着向量具有单位,即它们是,并且它们两两。
我们还将简化的推广到任意维度的向量:
定义 3.4:
正交规范基中的点积计算
在任何中,两个 $n$ 维向量 $\vc{u}$ 和 $\vc{v}$ 之间的可以计算为
|
\begin{equation}
\vc{u}\cdot\vc{v} = \sum_{i=1}^{n} u_i v_i,
\end{equation}
|
(3.25)
|
这是分量逐个相乘后求和。二维和三维点积的计算公式为
|
\begin{align}
\mathrm{二维\ } &:\ \ \vc{u}\cdot\vc{v} = u_xv_x + u_yv_y, \\
\mathrm{三维\ } &:\ \ \vc{u}\cdot\vc{v} = u_xv_x + u_yv_y +u_zv_z. \\
\end{align}
|
(3.26)
|
请注意,上面使用了两种不同的向量分量索引方式,例如,回顾一下
$\vc{v}=(v_1, v_2, v_3) = (v_x, v_y, v_z)$。
对于 $\R^1$、$\R^2$ 和 $\R^3$ 中的向量,角度的概念是自然的。我们使用这个概念根据(
定义 3.1)来定义。如果是,我们可以得到上述简单公式
$\vc{u} \cdot \vc{v} = u_1 v_1 + u_2 v_2 + u_3 v_3 $
来计算。对于更高维度的向量,不存在角度的概念。在的情况下,解决方案是使用
定义 3.4 中的简单公式,然后从中
推导角度的概念。两个非 $\vc{u}$ 和 $\vc{v}$ 之间的角度如下所示。
定义 3.5:
高维空间中的角度
在 $\R^n$ 中,两个非 $\vc{u} = (u_1, u_2, \ldots, u_n)$ 和 $\vc{v} = (v_1, v_2, \ldots, v_n)$ 之间的角度 $[\vc{u}, \vc{v}]$ 定义为
|
\begin{equation}
[\vc{u}, \vc{v}] = \arccos \frac{\vc{u} \cdot \vc{v}}{\ln{\vc{u}}\ \ln{\vc{v}}}
\end{equation}
|
(3.27)
|
现在,让我们通过一个简单的例子来说明简单的计算(
定义 3.4)是如何工作的:
例 3.3:
简单计算
在下图所示的中,$\vc{u} = (1,2)$ 和 $\vc{v} = (3,1.5)$。
任务是计算 $\ln{\vc{u}}\ \ln{\vc{v}}\cos[\vc{u}, \vc{v}]$。
我们知道 $\ln{\vc{u}}\ \ln{\vc{v}}\cos[\vc{u}, \vc{v}]$
等于 $\vc{u} \cdot \vc{v}$。我们还
利用是这一事实,这意味着我们
可以使用简化公式(
定义 3.4)来计算
$\vc{u} \cdot \vc{v}$,即
|
\begin{align}
\ln{\vc{u}}\ \ln{\vc{v}}\cos[\vc{u}, \vc{v}] & = \vc{u} \cdot \vc{v}\\
& = u_1 v_1 + u_2 v_2 \\
& = 1 \cdot 3 + 2 \cdot 1.5 \\
& =3 + 3 = 6.
\end{align}
|
(3.28)
|
例 3.4:
角度计算
在中,$\vc{u} = (1,2)$ 和 $\vc{v} = (3,1)$。计算 $\vc{u}$ 和 $\vc{v}$ 之间的最小角度。
最小角度 $[\vc{u}, \vc{v}]$ 是 $\ln{\vc{u}}\ \ln{\vc{v}}\cos[\vc{u}, \vc{v}]$ 的一部分。
因此,如果我们计算并除以 $\vc{u}$ 和 $\vc{v}$ 的,就可以得到 $\vc{u}$ 和 $\vc{v}$ 之间最小角度的余弦值。
由于是,我们可以使用简单的方法来计算所需的各种点积
|
\begin{align}
\ln{\vc{u}}\ \ln{\vc{v}}\cos[\vc{u}, \vc{v}] &= \vc{u} \cdot \vc{v} = u_1 v_1 + u_2 v_2 = 1 \cdot 3 + 2 \cdot 1 = 3 + 2 = 5,\\
\ln{\vc{u}}^2 & = \vc{u} \cdot \vc{u} = u_1 u_1 + u_2 u_2 = 1^2 + 2^2 = 5, \\
\ln{\vc{v}}^2 & = \vc{v} \cdot \vc{v} = v_1 v_1 + v_2 v_2 = 3^2 + 1^2 = 10.\\
\end{align}
|
(3.29)
|
从中我们得到 $\ln{\vc{u}} = \sqrt{5}$ 和 $\ln{\vc{v}} = \sqrt{10} = \sqrt{5}\sqrt{2}$,我们可以写出
|
\begin{equation}
\cos [\vc{u}, \vc{v}] =\frac{\vc{u} \cdot \vc{v}}{\ln{\vc{u}}\ \ln{\vc{v}}}
=\frac{5}{\sqrt{5}\sqrt{5}\sqrt{2}} = \frac{1}{\sqrt{2}},
\end{equation}
|
(3.30)
|
最后,结果角度为
|
\begin{equation}
[\vc{u}, \vc{v}] = \arccos\Big(\frac{1}{\sqrt{2}}\Big) = \frac{\pi}{4}.
\end{equation}
|
(3.31)
|
为了更直观地感受提供的信息,鼓励读者尝试
下面的
交互插图 3.8。
3.3.1 正交规范基中的向量长度
正如我们已经看到的,将向量表示在中可以简化它们的计算。
在本节中,将明确地看到
它也简化了向量的计算,长度记为 $\ln{\vc{v}}$。
这也称为和范数。
$a$
$b$
$c$
$v_x$
$v_y$
$\vc{v}$
$\ln{\vc{v}}$
回顾
定理 3.1 中的规则 $(iv)$,它说 $\vc{v}\cdot\vc{v} = \ln{\vc{v}}^2$。
如果向量在中的坐标为 $(v_x, v_y)$,我们可以使用简单公式(
定义 3.4)
来计算,我们有 $\ln{\vc{v}}^2 = v_x^2 + v_y^2$。在右侧的上图中,我们
画出了向量 $\vc{v}$。由于值 $v_x$ 和 $v_y$ 是 $\vc{v}$ 的坐标,它们也等于
虚的长度。请注意这张图如何与下面的三角形相类似,其中 $c = \ln{\vc{v}}$,
$a = v_x$ 和 $b = v_y$。因此表达式 $\ln{\vc{v}}^2 = v_x^2 + v_y^2$ 是勾股定理的证明,该定理表述为 $c^2 = a^2 + b^2$。
因此,在中,向量的可以计算为
|
\begin{equation}
\ln{\vc{v}} = \sqrt{v_x^2 + v_y^2}.
\end{equation}
|
(3.32)
|
同样,对于在中的三维向量 $\vc{v} = (v_x, v_y, v_z)$,
$\vc{v} \cdot \vc{v} = \ln{\vc{v}}^2$ 可以计算为 $v_x^2 + v_y^2 + v_z^2$,
因此向量计算为
|
\begin{equation}
\ln{\vc{v}} = \sqrt{v_x^2 + v_y^2 + v_z^2}.
\end{equation}
|
(3.33)
|
在这种情况下,也可以使用勾股定理来从几何上解释为什么这个公式是正确的,如
交互插图 3.10 所示。
注意,通常了解当向量被因子 $k$ 缩放时,其 会发生什么变化是很方便的。
使用 的定义,我们可以得到
|
\begin{equation}
(k\vc{v})\cdot(k\vc{v}) = \ln{k\vc{v}}\,\ln{k\vc{v}}\cos[k\vc{v},k\vc{v}] = \ln{k\vc{v}}^2.
\end{equation}
|
(3.34)
|
也可以使用规则 $(ii)$ 两次以得到
|
\begin{equation}
(k\vc{v})\cdot(k\vc{v}) = k ( \vc{v}\cdot(k\vc{v})) = k(k(\vc{v}\cdot\vc{v})) = k^2 \ln{\vc{v}}^2.
\end{equation}
|
(3.35)
|
因此,我们有
|
\begin{equation}
\ln{k\vc{v}}^2 = k^2 \ln{\vc{v}}^2,
\end{equation}
|
(3.36)
|
这给出
|
\begin{equation}
\ln{k\vc{v}} = \abs{k}\, \ln{\vc{v}}.
\end{equation}
|
(3.37)
|
请注意,只有的
为零,即 $\ln{\vc{0}} = 0$,并且如果 $\vc{v}\neq\vc{0}$ 则 $\ln{\vc{v}}>0$。
以下是数学中一些非常有用的不等式。它们是章节的一部分,
因为它们很容易使用的定义来证明。
定理 3.2:
柯西-施瓦茨不等式
如果 $\vc{u}$ 和 $\vc{v}$ 是 $\R^n$ 中的向量,则以下不等式成立
|
\begin{equation}
(\vc{u} \cdot \vc{v})^2 \leq \ln{\vc{u}}^2\,\ln{\vc{v}}^2,
\end{equation}
|
(3.38)
|
这也可以表达为
|
\begin{equation}
\abs{\vc{u} \cdot \vc{v}} \leq \ln{\vc{u}}\,\ln{\vc{v}}.
\end{equation}
|
(3.39)
|
对于几何向量,的绝对值(
定义 3.1)给出
$\abs{\vc{u} \cdot \vc{v}} = \ln{\vc{u}}\ \ln{\vc{v}}\, \abs{\cos[\vc{u},\vc{v}]}$,
这证明了定理,因为 $\abs{\cos[\vc{u},\vc{v}]} \leq 1$。
对于高维向量,在中的定义是
$\vc{u}\cdot \vc{v} = \sum_i u_i v_i$(
定义 3.4)。要在这种情况下证明,我们需要证明
|
\begin{equation}
( \sum_{i=1}^n u_i v_i )^2 \leq ( \sum_{i=1}^n u_i^2 )( \sum_{i=1}^n v_i^2 ) .
\end{equation}
|
(3.40)
|
这里我们从以下多项式开始
|
\begin{equation}
p(z) = \sum_{i=1}^n (u_i z + v_i )^2 ,
\end{equation}
|
(3.41)
|
它显然对每个 $z$ 都大于或等于零,因为它是平方和。
我们知道多项式 $p(z) = az^2 + bz + c$
有两个解
|
\begin{equation}
z = \frac{-b \pm \sqrt{b^2-4ac}}{2a} .
\end{equation}
|
(3.42)
|
如果所谓的
判别式 $b^2-4ac$ 是正的,那么有两个不同的实根,多项式会取正值和负值。由于 $p(z)$ 是非负的,我们必须有 $b^2-4ac \leq 0$。
现在
|
\begin{equation}
p(z) = \sum_{i=1}^n (u_i z + v_i )^2 = \sum_{i=1}^n u_i^2 z^2 + 2u_i v_i z + v_i^2 =
(\sum_{i=1}^n u_i^2) z^2 + 2 (\sum_{i=1}^n u_i v_i) z + \sum_{i=1}^n (v_i^2 )
\end{equation}
|
(3.43)
|
所以我们有
|
\begin{equation}
\begin{cases}
\begin{array}{ll}
a &= \sum_{i=1}^n u_i^2 \\
b &= 2 \sum_{i=1}^n u_i v_i \\
c &= \sum_{i=1}^n v_i^2
\end{array}
\end{cases},
\end{equation}
|
(3.44)
|
由于 $b^2/4-ac \leq 0$,我们得到 $b^2/4 \leq ac$,即
|
\begin{equation}
(\sum_{i=1}^n u_i v_i)^2 \leq (\sum_{i=1}^n u_i^2) \sum_{i=1}^n (v_i^2 )
\end{equation}
|
(3.45)
|
或
|
\begin{equation}
(\vc{u} \cdot \vc{v})^2 \leq \ln{\vc{u}}^2\,\ln{\vc{v}}^2.
\end{equation}
|
(3.46)
|
$\square$
另一个相关的不等式是下面显示的。
定理 3.3:
三角不等式
如果 $\vc{u}$ 和 $\vc{v}$ 是 $\R^3$ 中的向量,则以下不等式成立
|
\begin{equation}
\ln{\vc{u} + \vc{v}} \leq \ln{\vc{u}} + \ln{\vc{v}}.
\end{equation}
|
(3.47)
|
通过对两边平方并展开表达式,左边变为
$\ln{\vc{u} + \vc{v}}^2 = $
$(\vc{u} + \vc{v})\cdot (\vc{u} + \vc{v}) = $
$\vc{u} \cdot \vc{u} + \vc{v} \cdot \vc{v} + 2\vc{u}\cdot \vc{v} = $
$\ln{\vc{u}}^2 + \ln{\vc{v}}^2 + 2\ln{\vc{u}}\,\ln{\vc{v}} \cos [\vc{u},\vc{v}]$。
平方后的右边变为
$(\ln{\vc{u}} + \ln{\vc{v}})^2 = $
$\ln{\vc{u}}^2 + \ln{\vc{v}}^2 +2 \ln{\vc{u}}\,\ln{\vc{v}}$,
这证明了定理,因为 $\cos [\vc{u},\vc{v}] \leq 1$。
$\square$
$\ln{\vc{u}}$
$\ln{\vc{v}}$
$\ln{\vc{u} + \vc{v}}$
$\ln{\vc{u}}$
$\ln{\vc{v}}$
$\ln{\vc{u} + \vc{v}}$
$\ln{\vc{u}} + \ln{\vc{v}}$
请注意,的几何意义很容易理解,如右图所示。
从图中可以清楚地看到,$\vc{u}$ 和 $\vc{v}$ 的长度之和必定大于或等于
$\vc{u}+\vc{v}$ 的。实际上,只有当
$\vc{u}$ 和 $\vc{v}$ 平行且方向相同时,等号才能成立。
建议读者移动 $\vc{u}$ 向量来验证这一点。
在本节中,我们将展示一些有用的例子,
并指出使用了哪些规则来
得到结果。规则会标注在等号上方,例如,
|
\begin{equation}
\vc{a} \cdot (\vc{a}+\vc{b}) \overset{(iii)}{=}
\vc{a} \cdot \vc{a} + \vc{a} \cdot \vc{b},
\end{equation}
|
(3.48)
|
表示使用了规则 $(iii)$ (
定理 3.1) 来
得到等号右边的结果。
接下来的例子推导平行四边形法则。
例 3.5:
平行四边形法则
$\vc{u}$
$\vc{v}$
$\vc{u} + \vc{v}$
$\vc{u} - \vc{v}$
假设我们有两个向量 $\vc{u}$ 和 $\vc{v}$,它们从同一点出发。在进行
(
第 2.2 节)时,我们已经知道可以构造一个
来表示。这个
的两条对角线是:$\vc{u}-\vc{v}$ 和 $\vc{u}+\vc{v}$,如右侧的
图 3.12 所示。
现在,长度平方和为
|
\begin{align}
\ln{ \vc{u} + \vc{v} }^2 + \ln{ \vc{u} - \vc{v} }^2
\overset{(iv)}{=}&
(\vc{u} + \vc{v})\cdot (\vc{u} + \vc{v}) + (\vc{u} - \vc{v})\cdot (\vc{u} - \vc{v})\\
\overset{(iii)}{=}&
(\vc{u} + \vc{v})\cdot\vc{u} +(\vc{u} + \vc{v})\cdot\vc{v} +\\
& (\vc{u} - \vc{v})\cdot \vc{u} -(\vc{u} - \vc{v})\cdot \vc{v} \\
\overset{(i)}{=}&
\vc{u}\cdot(\vc{u} + \vc{v}) + \vc{v}\cdot(\vc{u} + \vc{v}) +\\
& \vc{u}\cdot(\vc{u} - \vc{v}) - \vc{v}\cdot(\vc{u} - \vc{v}) \\
\overset{(iii)}{=}&
\vc{u} \cdot \vc{u} + \vc{u} \cdot \vc{v} + \vc{v} \cdot \vc{u} +\vc{v} \cdot \vc{v}+ \\
&\vc{u} \cdot \vc{u} - \vc{u} \cdot \vc{v} - \vc{v} \cdot \vc{u} +\vc{v} \cdot \vc{v} \\
=&
2\vc{u} \cdot \vc{u} + 2\vc{v} \cdot \vc{v} \\
\overset{(iv)}{=}&
2\ln{\vc{u}}^2 + 2\ln{\vc{v}}^2.
\end{align}
|
(3.49)
|
这是一个非常神奇的结果。
例 3.6:
极化恒等式
以下内容与
例 3.5 密切相关。
在那个例子中,我们展示了所有步骤及其相应的规则,但
规则的便利之处在于它们的行为符合预期。因此,我们在
本例中将更加简洁。注意,与
例 3.5 起始方程的唯一区别是加号变成了减号,即
|
\begin{align}
\ln{ \vc{u} + \vc{v} }^2 - \ln{ \vc{u} - \vc{v} }^2 &=
(\vc{u} + \vc{v}) \cdot (\vc{u} + \vc{v}) - (\vc{u} - \vc{v}) \cdot (\vc{u} - \vc{v}) \\
&= \vc{u}\cdot \vc{u} + 2\vc{u}\cdot \vc{v} +\vc{v}\cdot \vc{v} -
\bigl( \vc{u}\cdot \vc{u} - 2\vc{u}\cdot \vc{v} +\vc{v}\cdot \vc{v} \bigr) \\
&= 4\vc{u}\cdot \vc{v},
\end{align}
|
(3.50)
|
这意味着 $\vc{u}\cdot \vc{v} = \frac{1}{4}\bigl( \ln{ \vc{u} + \vc{v} }^2 - \ln{ \vc{u} - \vc{v} }^2 \bigr)$。
这也是一个非常神奇的结果。
例 3.7:
使用点积计算三角形面积
$A$
$B$
$C$
$\vc{u}$
$\vc{v}$
$h$
$[\vc{u},\vc{v}]$
在本例中,我们将推导由三个点 $A$、$B$ 和 $C$ 定义的三角形的面积,
如右图所示。最终的面积公式将
用点积来表示。
在下面的推导中,我们将使用边向量 $\vc{u} = B-A$ 和 $\vc{v} = C-A$。
回顾一下,三角形
面积通常计算为 $bh/2$,其中 $b$ 是底边的,
$h$ 是三角形的高。在右图中,我们
有 $b=\ln{\vc{u}}$,根据三角学,高必定是
|
\begin{equation}
h = \ln{\vc{v}} \sin [\vc{u},\vc{v}].
\end{equation}
|
(3.51)
|
那么三角形面积 a 为
|
\begin{equation}
a = \frac{bh}{2} =\frac{1}{2} \underbrace{\ln{\vc{u}}}_{b} \,\underbrace{\ln{\vc{v}} \sin [\vc{u},\vc{v}]}_{h}.
\end{equation}
|
(3.52)
|
由于三角形面积总是正的,我们将其平方,并使用一些三角学知识
($\sin^2 \phi + \cos^2 \phi =1$) 将表达式展开为使用点积的形式:
|
\begin{align}
a^2 &= \frac{1}{4} \ln{\vc{u}}^2 \, \ln{\vc{v}}^2 \sin^2 [\vc{u},\vc{v}] \\
&= \frac{1}{4} \ln{\vc{u}}^2 \, \ln{\vc{v}}^2 (1-\cos^2 [\vc{u},\vc{v}]) \\
&= \frac{1}{4} \bigl(\ln{\vc{u}}^2 \, \ln{\vc{v}}^2 - \ln{\vc{u}}^2 \, \ln{\vc{v}}^2 \cos^2 [\vc{u},\vc{v}]\bigr) \\
&=
\frac{1}{4} \bigl( (\vc{u} \cdot \vc{u})(\vc{v} \cdot \vc{v}) - (\vc{u} \cdot \vc{v})^2 \bigr), \\
\end{align}
|
(3.53)
|
其中我们在最后一步使用了
定理 3.1 的规则 $(iv)$。
因此,向量形式的三角形面积为
|
\begin{equation}
a =
\frac{1}{2} \sqrt{\bigl( (\vc{u} \cdot \vc{u})(\vc{v} \cdot \vc{v}) - (\vc{u} \cdot \vc{v})^2 \bigr)}.
\end{equation}
|
(3.54)
|
和是非常常见且重要的几何实体,在许多情况下都很有用,例如当确定来自虚拟眼睛的光线(即直线)穿过像素中心是否击中球体等几何对象时。更广泛地说,和在计算几何、计算机视觉、计算机图形学、计算机辅助设计(CAD)等领域中经常使用。
3.6.1 直线
在本书中,主要使用
直,因此经常使用更简短的术语。
一条直可以用一个起点 $S$ 和一个方向 $\vc{d}$ 来描述,
如右图所示。
要描述一条,使用能够找到所有可能点的表示方法可能会很方便。
首先,从右侧的点 $P$ 开始,创建一个从 $S$ 到 $P$ 的向量,
即 $\overrightarrow{SP}$。如果 $P$ 位于由 $S$ 和 $\vc{d}$ 描述的上,那么
$\overrightarrow{SP}$ 必定平行于 $\vc{d}$。实际上,必定存在一个标量 $t_1$,使得
$t_1\vc{d}$ 的长度恰好等于 $\overrightarrow{SP}$,表示为
|
\begin{equation}
\overrightarrow{SP} = t_1 \vc{d}.
\end{equation}
|
(3.55)
|
由于 $P$ 位于 $\vc{d}$ 的方向上,我们也知道 $t_1>0$。对于同样
位于上的 $Q$,存在另一个标量 $t_2$,满足:$\overrightarrow{SQ} = t_2 \vc{d}$。
由于 $Q$ 位于 $\vc{d}$ 的相反方向上,显然 $t_2<0$。
另一方面,对于 $R$,不存在标量 $t_3$ 满足类似的关系。也就是说,
对于所有 $t_3$ 的值,$\overrightarrow{SR} \neq t_3 \vc{d}$。
$P$ 和 $Q$ 之间的唯一区别是它们使用了不同的标量 $t_1$ 和 $t_2$。
因此,上的任何点都可以用一个特定的标量 $t$ 来描述。
因此,我们使用 $P(t)$ 来表示标量 $t$ 的函数,它返回一个点 $P$。也就是说,
对于不同的 $t$ 值,将生成不同的点 $P$。这个表达式可以改写为
|
\begin{gather}
\overrightarrow{SP(t)} = t\vc{d} \\
\Longleftrightarrow \\
P(t) - S = t\vc{d} \\
\Longleftrightarrow \\
P(t) = S + t\vc{d}.
\end{gather}
|
(3.56)
|
注意,上的所有点 $P(t)$ 都可以通过从 $S$ 开始,然后加上一个缩放的方向向量 $t\vc{d}$
来描述,从而到达 $P(t)$。一些例子:$P(0) = S$,$P(1) = S + \vc{d}$,以及 $P(-2.5) = S -2.5\vc{d}$。
这种参数化的在下面的定义中总结。
定义 3.6:
参数化直线
由 $t\in \R$ 参数化的可以用一个起点 $S$ 和一个方向向量 $\vc{d}$ 来描述。
上的所有点 $P(t)$ 可以描述为
|
\begin{equation}
P(t) = S + t\vc{d}.
\end{equation}
|
(3.57)
|
注意 $\vc{d}\neq \vc{0}$,否则只会生成一个点 $S$(即不是)。
通常称上述为显式形式,这仅仅意味着上的点 $P(t)$
可以直接从表达式生成。一维、二维和三维的
显式形式可以在下面的
交互插图 3.15 中找到。
注意,对 $P(t)-S = t\vc{d}$ 两边取,得到 $\ln{P(t)-S} = \ln{t\vc{d}}$。
当方向被,即 $\ln{\vc{d}}=1$ 时,则 $\abs{t} = \ln{P(t)-S}$。这在计算
例如与球体之间的交点时非常有用,这将在
第 3.7 节中看到。
回顾一下,二维点 $S$ 有两个标量分量 $(s_x, s_y)$,类似地,
二维向量 $\vc{d}$ 有两个标量分量 $(d_x,d_y)$。现在,注意
二维 $P(t)=S + t\vc{d}$ 可以用向量和点的标量分量表示为
|
\begin{equation}
P(t) = S + t\vc{d} \ \ \ \Longleftrightarrow
\begin{cases}
p_x(t) = s_x + td_x,\\
p_y(t) = s_y + td_y.
\end{cases}
\end{equation}
|
(3.58)
|
以下内容可以让我们初步了解
第5章关于的内容。将上面的第一行乘以
$d_y$,将第二行乘以 $d_x$。这导致以下结果,其中为了清晰起见,从
$p_x$ 和 $p_y$ 中省略了参数 $t$:
|
\begin{equation}
\begin{cases}
p_x d_y = s_x d_y + d_x d_y t,\\
p_y d_x = s_y d_x + d_x d_y t.
\end{cases}
\end{equation}
|
(3.59)
|
从代数中我们知道,
只要在两边减去相同的项,就可以从表达式中减去一个项。
因此,从第一行减去第二行是合法的,这导致
|
\begin{equation}
p_x d_y - p_y d_x = s_x d_y - s_y d_x + d_x d_y t - d_x d_y t = s_x d_y - s_y d_x \\
\Longleftrightarrow \\
d_yp_x - d_x p_y + s_y d_x - s_x d_y =0,
\end{equation}
|
(3.60)
|
如所见,$t$ 项从表达式中消失了。
这可以进一步改写为
|
\begin{equation}
d_y p_x - d_x p_y + s_y d_x - s_x d_y =0 \\
\Longleftrightarrow \\
a p_x + b p_y + c = 0,
\end{equation}
|
(3.61)
|
其中 $a=d_y$,$b=-d_x$,$c=s_y d_x - s_x d_y$。
这个方程可能对某些人来说很熟悉,特别是如果我们使用
$x=p_x$ 和 $y=p_y$,这给出
|
\begin{equation}
a x + b y + c = 0.
\end{equation}
|
(3.62)
|
对于 $b\neq 0$,可以进一步将上面的表达式改写为
$y =(-ax -c)/b=$
$kx+m$,其中 $k=-a/b$ 和 $m=-c/b$。这种的表达式对大多数人来说肯定很熟悉,
其中 $k$ 描述了当 $x$ 增加 1 时 $y$ 的变化量,
$m$ 是 $x=0$ 时的 $y$ 值。
但是请注意,$a x + b y + c = 0$ 是二维
更一般的描述,因为它可以描述垂直,
而 $y=kx+m$ 无法做到这一点。
重要的是要注意,的隐式形式 $a p_x + b p_y + c = 0$ 和
的显式形式 $P(t) = S + t\vc{d}$ 精确地描述了同一条,
因为前者是从后者推导出来的。
接下来,我们将展示如果是,显式形式可以
使用点积来改写。
为此,
我们引入 $\vc{n} = (n_x,n_y) = (a,b) = (d_y,-d_x)$,这导致
|
\begin{equation}
d_y p_x - d_x p_y + s_y d_x - s_x d_y =0 \\
\Longleftrightarrow \\
\vc{n} \cdot (P - S) = 0,
\end{equation}
|
(3.63)
|
其中 $P=(p_x, p_y)$ 和 $S=(s_x, s_y)$。这里我们使用了以下事实:
当向量在中描述时,$(d_y, -d_x) \cdot (p_x, p_y) = d_y p_x + (-d_x) p_y$,如
定理 3.4 中所述。
如所见,如果我们取从 $S$ 到上任意点 $P$ 的向量,那么
如果 $P$ 在上,它与 $\vc{n}$ 的必须为零。
有趣的是,我们看到
$\vc{n}\cdot\vc{d} =$
$(d_y,-d_x)\cdot (d_x,d_y) = $
$d_y d_x - d_x d_y = $
$0$,
即 $\vc{n}$ 与方向 $\vc{d}$ 。
因此,$\vc{n}$ 通常被称为的。另外请注意,
$\vc{n} \cdot (P - S) = 0$ 被称为隐式形式,因为它不能
轻易地生成上的点。但是,测试
一个点 $P$ 是否在上是很简单的。
这导致了二维隐式形式的以下定义。
定义 3.7:
二维隐式直线
可以用隐式形式表示,使用一个起点 $S$ 和一个 $\vc{n}$。
上的所有点 $P$ 可以描述为
|
\begin{equation}
\vc{n} \cdot (P - S) = 0.
\end{equation}
|
(3.64)
|
注意 $\vc{n}\neq \vc{0}$,否则所有点 $P$ 都在上。
应该注意的是,
定义 3.7 在非的情况下仍然成立。也就是说,仍然可以
写成 $\vc{n} \cdot (P-S) = 0$,其中 $\vc{n}$ 是的。
但是,计算 $\vc{n}$ 的坐标不再那么简单,
因为一般来说,它不再等于 $\vc{n} = (d_y, -d_x)$。
如上所述,二维有两种不同类型的数学表示。
一维或三维则不能这样做。然而,正如将在
第 3.6.2 节中看到的,三维方程也有两种类似的表示,
即隐式和显式。
回到形如 $\vc{n} \cdot (P - S) = 0$ 的二维,这
表示所有在由 $S$ 和 $\vc{d}$ 表示的上的点 $P$
都满足上述表达式,即等于零。
如果 $P$ 不在上会发生什么?当然,将不为零,
但能从该结果中读出其他信息吗?事实证明这可能非常有用。
为了演示这一点,创建了 $P$ 的标量函数 $e$:
|
\begin{equation}
e(P) = \vc{n} \cdot (P - S).
\end{equation}
|
(3.65)
|
这个函数有时被称为边方程(在计算机图形学中)或有向距离
函数(稍后将在本节中解释)。
由于 $e(P)$ 是用定义的,从第 3.4 节可知,当角度 $[\vc{n}, P-S] < \pi/2$ 时 $e(P)$ 为正,
当 $[\vc{n}, P-S] > \pi/2$ 时 $e(P)$ 为负,
只有当 $[\vc{n}, P-S] = \pi/2$ 时 $e(P)=0$。然而,$e(P)=0$ 也意味着
$P$ 位于由 $S$ 和 $\vc{d}$ 定义的上。因此,当 $e(P)>0$ 时,我们说 $P$
在的正半空间中,当 $e(P)<0$ 时,$P$ 在负半空间中,
即将整个二维分成两个半空间。
这在
交互插图 3.16 中展示。
借助于
定义 3.1 (),
公式 (3.65) 可以重写为
|
\begin{equation}
e(P) = \vc{n} \cdot (P - S) = \ln{\vc{n}}\, \ln{P - S} \cos [\vc{n}, P-S].
\end{equation}
|
(3.66)
|
注意,$\ln{P - S} \cos [\vc{n}, P-S]$ 实际上是从 $P$ 到的距离,
但需要注意的是,这个"距离"是有向的。这意味着如果 $P$ 在正半空间中,
有向距离为正;如果 $P$ 在负半空间中,有向距离为负。
另外请注意,如果 $\vc{n}$ 是的,那么 $e(P)$ 恰好就是有向距离函数,
即 $e(P) = \ln{P - S} \cos [\vc{n}, P-S]$。
例 3.8:
研究通过点 $S = (2,1)$ 并且为 $\vc{n} = (3,4)$ 的。从点 $P=(x,y)$ 到该的距离是多少?从 $P = (1,1)$ 到该的距离是多少?
在前面的段落中,我们看到距离可以使用有向距离函数 $e(P) = \vc{n} \cdot (P - S)$ 来计算。在讨论中我们还看到
有向距离函数可以写成所谓的仿射形式
|
\begin{equation}
e(P) = \vc{n} \cdot (P - S) = ax + by + c .
\end{equation}
|
(3.67)
|
|
\begin{equation}
d = | \frac{\vc{n}}{|\vc{n}|} \cdot (P - S) |
\end{equation}
|
(3.68)
|
在这个特定例子中,我们得到
|
\begin{equation}
d = | \frac{\vc{n}}{|\vc{n}|} \cdot (P - S) | = |(3/5, 4/5) \cdot (x-2,y-1) |=
| \frac{3(x-2)+4 (y-1)}{5} |= | \frac{3}{5}x+\frac{4}{5}y-2 | .
\end{equation}
|
(3.69)
|
例 3.9:
游戏渲染
玩电脑游戏时,通常有一个图形处理器负责绘制所有
图形,这个图形处理器高度优化用于绘制三角形。三角形内部每个像素
的颜色可以使用一个简短的程序(称为着色器)来计算。这使得
视觉体验非常丰富,如
图 3.17 所示。
图形处理器中
测试像素是否在三角形内部的硬件部件使用边方程。由于三角形
由三条边(或)组成,所以创建三个边方程 $e_i(P)$,$i\in\{1,2,3\}$。
如果 $e_1(P) \geq 0$ 且 $e_2(P) \geq 0$ 且 $e_3(P) \geq 0$,那么中心位置在 $P$ 的像素
就被认为在三角形内部。
这类图形处理器的硬件设计师和游戏开发者在日常工作中使用大量代数。
3.6.2 平面
三维(及更高维)中的类似于二维中的,它们都将
其分成两个半空间。在
第 3.6.1 节中,我们看到二维
将 $xy$-分成正半空间和负半空间。
对于,也有两种表示方式(一种隐式,一种显式),类似于
二维中的。
要定义显式形式的,即类似于的 $P(t) = S + t\vc{d}$,
需要一个起点 $S$ 和两个方向向量 $\vc{d}_1$ 和 $\vc{d}_2$。
这些方向向量不能共,即对于所有 $k$ 值都有 $\vc{d}_1 \neq k \vc{d}_2$。
换句话说,方向向量不能平行,即使反向平行也不行。
这些方向向量都位于内。因此,如果一个点 $P$
要位于该中,必须满足
|
\begin{equation}
\overrightarrow{SP} = t_1 \vc{d}_1 + t_2\vc{d}_2,
\end{equation}
|
(3.70)
|
$S$
$P$
$\vc{d}_1$
$\vc{d}_2$
对于标量 $t_1$ 和 $t_2$ 的某些值。
类似于,这个表达式可以改写如下,其中两个
标量 $t_1$ 和 $t_2$ 被设置为 $P$ 的参数,即
|
\begin{gather}
\overrightarrow{SP(t_1,t_2)} = t_1 \vc{d}_1 + t_2\vc{d}_2 \\
\Longleftrightarrow \\
P(t_1, t_2) - S = t_1 \vc{d}_1 + t_2\vc{d}_2 \\
\Longleftrightarrow \\
P(t_1, t_2) = S + t_1 \vc{d}_1 + t_2\vc{d}_2. \\
\end{gather}
|
(3.71)
|
这种形式也在右侧进行了说明。
如图所示,这与非常相似。方向向量 $\vc{d}_1$ 和 $\vc{d}_2$
分别被 $t_1$ 和 $t_2$ 缩放。得到的向量与起点
$S$ 相加。这导致以下定义。
定义 3.8:
参数化平面
由 $t_1\in\R$ 和 $t_2\in\R$ 参数化的,可以由一个起点 $S$ 和两个
方向向量 $\vc{d}_1$ 和 $\vc{d}_2$ 来描述。
该上的所有点 $P(t_1,t_2)$ 可以描述为
|
\begin{equation}
P(t_1, t_2) = S + t_1 \vc{d}_1 + t_2\vc{d}_2.
\end{equation}
|
(3.72)
|
如果 $\vc{d}_1$ 或 $\vc{d}_2$ 中有一个是 $\vc{0}$,或者 $\vc{d}_1$ 和 $\vc{d}_2$ 平行(无论是
同向还是反向),那么这会退化为参数化方程。
有趣的是,方程也有隐式形式。首先,让我们以分量形式写出
方程,如下所示,其中 $d_{1,y}$ 表示 $\vc{d}_1$ 的 $y$ 分量,依此类推。
|
\begin{equation}
P(t_1, t_2) = S + t_1 \vc{d}_1 + t_2\vc{d}_2
\ \ \ \Longleftrightarrow \ \ \
\begin{cases}
p_x(t_1,t_2) = s_x + t_1 d_{1,x} + t_2 d_{2,x},\\
p_y(t_1,t_2) = s_y + t_1 d_{1,y} + t_2 d_{2,y},\\
p_z(t_1,t_2) = s_z + t_1 d_{1,z} + t_2 d_{2,z}.
\end{cases}
\end{equation}
|
(3.73)
|
回忆一下,对于二维,参数化 $P(t)=S+t\vc{d}$ 可以转换成
隐式形式的:$\vc{n}\cdot (P-S)$。这是通过消去 $t$ 完成的,同样的方法
可以应用于上面的
方程 (3.73),其中 $t_1$ 和 $t_2$ 都可以被消去。这可以使用
完成,在
第 5 章中有一个相关例子。
这里,我们只是说明上面的
方程 (3.73) 可以转换成
|
\begin{equation}
\vc{n} \cdot (P - S) = 0,
\end{equation}
|
(3.74)
|
并参考
第 5 章以了解更多关于如何消去 $t_1$ 和 $t_2$ 的细节。
请注意,$\vc{n}$ 是该的,即它垂直于任何
位于该内的向量。在法向量 $\vc{n}$ 和方向向量 $\vc{d}_1$ 与 $\vc{d}_2$ 之间也存在关系
。这就是,这是
第 4 章的主题。
定义 3.9:
隐式平面方程
可以使用起点 $S$ 和 $\vc{n}$ 以隐式形式表示。
该中的所有点 $P$ 可以描述为
|
\begin{equation}
\vc{n} \cdot (P - S) = 0.
\end{equation}
|
(3.75)
|
注意 $\vc{d}\neq \vc{0}$,否则该表达式总是为零。
与完全相同,我们也可以创建一个有向距离函数为
|
\begin{equation}
e(P) = \vc{n} \cdot (P - S),
\end{equation}
|
(3.76)
|
其中当 $P$ 位于内时 $e(P)=0$。
另外,当 $P$ 与点 $S+\vc{n}$ 位于的同一侧时,$e(P)>0$,
这称为正半空间。
类似地,如果 $e(P)<0$,那么 $P$ 与点 $S-\vc{n}$ 位于的同一侧。
空间的另一部分称为负半空间。
例 3.10:
点在平面上的正交投影
在本例中,我们将展示如何将点 $P$ 正交投影到由
$\vc{n}$ 和起点 $S$ 定义的上。首先,这个过程在
交互插图 3.19 中展示。
投影点 $Q$ 的表达式很简单
|
\begin{equation}
Q = P - \proj{\vc{n}}{\vc{v}},
\end{equation}
|
(3.77)
|
其中 $\vc{v}=P-S$。
由于公式是 $\proj{\vc{n}}{\vc{v}} = \bigl( (\vc{v} \cdot \vc{n})/(\ln{\vc{n}}^2) \bigr)\vc{n}$,
即一个标量乘以 $\vc{n}$,我们知道 $\vc{n}$ 是创建 $Q$ 时使用的唯一向量(除了
用于计算标量值的向量)。因此,我们知道 $Q$ 将沿着于该的方向投影。
事实上,由于使用了 $\vc{v}$ 在 $\vc{n}$ 上的来移动点 $P$,点 $Q$
也必定位于该内。然而,我们也可以通过将 $Q$ 代入方程来证明这一点,
即测试 $\vc{n} \cdot (Q-S)=0$ 是否成立。这在下面完成。
|
\begin{align}
\vc{n} \cdot (Q-S)
=& \vc{n} \cdot (P - \proj{\vc{n}}{\vc{v}} - S) \\
=& \vc{n} \cdot (\underbrace{P-S}_{\vc{v}} - \proj{\vc{n}}{\vc{v}}) \\
=& \vc{n} \cdot (\vc{v} - \proj{\vc{n}}{\vc{v}}) \\
=& \vc{n} \cdot \vc{v} - \vc{n} \cdot \underbrace{ \Biggl(\frac{\vc{v} \cdot \vc{n}}{\ln{\vc{n}}^2}\vc{n}\Biggr) }_{ \proj{\vc{n}}{\vc{v}} }\\
=& \vc{n} \cdot \vc{v} - \vc{n} \cdot \Biggl(\frac{\vc{v} \cdot \vc{n}}{\ln{\vc{n}}^2}\vc{n}\Biggr)\\
=& \vc{n} \cdot \vc{v} - \frac{\vc{v} \cdot \vc{n}}{\ln{\vc{n}}^2} (\vc{n} \cdot \vc{n})\\
=& \vc{n} \cdot \vc{v} - \frac{\vc{n} \cdot \vc{v}}{\ln{\vc{n}}^2} \ln{\vc{n}}^2 = 0\\
\end{align}
|
(3.78)
|
注意,将点(或向量)投影到上也类似于计算反射向量,
这是下面
例 3.13 的主题。
接下来是一个同时使用方程和方程的例子。
例 3.11:
平面上的阴影投影
在本例中,我们将假设有一个位于 $L$ 的光源,
还有一个具有三个顶点位置 $V_i$,$i\in \{1,2,3\}$ 的三角形。
该三角形将在由起点 $S$ 和
$\vc{n}$ 定义的上投射阴影,即方程是:对于所有位于该
内的点 $P$,有 $\vc{n} \cdot (P-S)=0$。
整个过程在
交互插图 3.20 中说明,在读者探索它之后,
将推导数学公式。
要计算阴影在上的"着陆"位置,我们需要为每个顶点创建一条射线。
所有三条射线都将从光源位置 $L$ 开始,每个顶点的方向
将是:$\vc{d}_i = V_i - L$,即射线方向由从
$L$ 到 $V_i$ 创建的段形成。因此,这些射线的方程将是
|
\begin{equation}
R_i(t) = L + t \vc{d}_i, \text{ where } \vc{d}_i = V_i - L, \text{ for } i\in \{1,2,3\}.
\end{equation}
|
(3.79)
|
现在,我们真正要找的是这些射线何时"击中",即我们需要建立一个
同时使用方程 $R_i(t)$ 和方程 $\vc{n}\cdot(P-S)=0$ 的表达式。
由于只有满足 $\vc{n}\cdot(P-S)=0$ 的点 $P$ 才位于内,
并且因为我们也希望这些点 $P$ 位于方程上,我们可以简单地在
方程中用 $R_i(t)$ 替换 $P$ 并简化表达式。这在下面完成。
|
\begin{equation}
\begin{array}{c}
\left.
\begin{array}{l}
R_i(t) = L + t \vc{d}_i \\
\vc{n}\cdot(P-S)=0
\end{array}
\right\} \Longrightarrow \vc{n}\cdot(R_i(t)-S) =0 \\
\Longleftrightarrow \\
\vc{n}\cdot(L + t \vc{d}_i-S) = 0 \\
\Longleftrightarrow \\
\vc{n}\cdot (L-S) + t (\vc{n}\cdot\vc{d}_i) = 0
\end{array}
\end{equation}
|
(3.80)
|
如图所示,这是一个关于 $t$ 的一次多项式,它有以下解(其中
我们现在给 $t$ 添加了下标 $i$,以清楚地表明每个三角形顶点有一个解),即
|
\begin{equation}
t_i = \frac{-\vc{n}\cdot (L-S)}{\vc{n}\cdot\vc{d}_i} = \frac{\vc{n}\cdot (S-L)}{\vc{n}\cdot\vc{d}_i}.
\end{equation}
|
(3.81)
|
必须避免除以零,所以让我们仔细看看分母 $\vc{n}\cdot\vc{d}_i$,
它只在 $\vc{n} \perp \vc{d}_i$ 时为零,这是合理的,因为如果射线方向
平行于,射线根本无法击中。或者,射线可能
恰好位于内,在这种情况下有无穷多个解。
然而,这意味着光源将位于(地面)内,
三角形顶点也是如此,这在现实中不太可能发生。
无论如何,交点计算为 $R_i(t_i) = L + t_i\vc{d}_i$。阴影三角形
然后由 $R_1$、$R_2$ 和 $R_3$ 形成,这正是为了创建
交互插图 3.20 所做的。
在本章引言(
第 3.1 节)中,
在
交互插图 3.1 中展示了一个称为光线追踪器的图形程序。
一旦获得了一些代数的知识,编写这样的程序就相当直接了。
光线追踪器的核心是一个可见性函数,用于确定一条射线可以"看到"哪个物体。
右侧显示了一个例子。在光线追踪器中,创建一个虚拟观察者,它有一个位置,并且
朝某个方向观看。然后光线追踪器从该位置沿该方向计算一幅图像。
视点位置是右侧蓝色射线的起点。然后创建一组射线。在最简单的
情况下,为图像中的每个像素创建一条射线。然后由光线追踪程序检查
场景中的相关物体,并计算通过像素的射线是否击中物体,同时找到最近的物体。
对于
图 3.21 中的射线,我们可以看到该射线击中了三个圆中的两个。然而,由于
黄色圆更近,该像素被着色为黄色。但是,对于上面的像素,通过该像素的相应射线
将击中绿色圆,因此该像素被着色为绿色。
为了生成带有阴影、反射和折射的图像,可能会从黄色圆和射线的第一个交点
射出更多射线。
在本节中,将展示两个与光线追踪相关的例子。第一个展示如何计算
三维射线与三维球体之间的交点。
第二个例子展示如何在已知的表面中反射向量。
这两个例子都使用作为主要工具。
例 3.12:
射线-球体交点
球体可以由半径 $r$ 和中心点 $C$ 定义。球面则描述为
所有与中心 $C$ 的距离等于半径 $r$ 的点 $P$。这可以表示为
|
\begin{equation}
\ln{P - C} = r.
\end{equation}
|
(3.82)
|
如
第 3.6.1 节所见,三维(在这里我们也称为射线)通常由
参数 $t$ 参数化,它有一个原点或起点 $S$ 和一个方向 $\vc{d}$。
显式形式的射线为(见
定义 3.6)
|
\begin{equation}
R(t) = S + t\vc{d}.
\end{equation}
|
(3.83)
|
现在,如果 $R(t)$ 和 $P$ 相同,那么射线在该点击中球体。
因此,我们用射线方程 $R(t)$ 替换 $P$,并简化得到
|
\begin{gather}
\ln{P - C} = r \\
\Longleftrightarrow \\
\ln{S + t\vc{d} - C} = r \\
\Longleftrightarrow \\
(S + t\vc{d} - C) \cdot (S + t\vc{d} - C)= r^2 \\
\Longleftrightarrow \\
t^2(\vc{d}\cdot\vc{d}) + 2t(\vc{d}\cdot(S-C)) + (S-C)\cdot(S-C)-r^2 = 0 \\
\Longleftrightarrow \\
at^2 + 2bt +c =0,
\end{gather}
|
(3.84)
|
其中 $a=\vc{d}\cdot\vc{d}$,$b=\vc{d}\cdot(S-C)$,以及 $c=(S-C)\cdot(S-C)-r^2$。
如图所示,这变成了一个二次多项式,可以解析求解,即
|
\begin{equation}
t = \frac{-b \pm \sqrt{b^2 -ac}}{a}.
\end{equation}
|
(3.85)
|
注意,如果 $\vc{d}$ 是的,即 $\ln{\vc{d}}=1$,那么 $t$ 是从原点 $S$
沿射线到球体与段之间交点的距离。然而,
还必须满足 $b^2 -ac \geq 0$,否则 $t$ 将变成复数,而对于
沿射线的虚数距离 $t$ 没有直接的解释。因此,当 $b^2 -ac < 0$ 时,射线
不与球体相交。如图所示,可能有两个解 $t_1$ 和 $t_2$,
它们对应于入射点和出射点,即射线首先在入射点与球体相交,
射线可以在另一个点离开球体。这些点计算为
$R(t_1)$ 和 $R(t_2)$。如果 $t_1=t_2$,射线仅在单个点接触球体。
这一切都在下面的
交互插图 3.22 中展示。
例 3.13:
反射定律
如本章引言(
第 3.1 节)中的图像所示,
可以计算球体中的反射图像。为了能够做到这一点,需要能够计算反射向量,这
可以使用点积来计算。我们还需要反射定律,它说
入射角等于反射角。
这在
交互插图 3.23 中针对三维向量进行了展示。
现在我们已经看到了反射向量(
交互插图 3.23)
是如何几何构造的,
让我们看看反射向量是如何用数学表达的,即
|
\begin{align}
\vc{r} =& \vc{i} - \proj{\vc{n}}{\vc{i}} - \proj{\vc{n}}{\vc{i}} \\
=& \vc{i} - 2\proj{\vc{n}}{\vc{i}} \\
=& \vc{i} - 2\frac{\vc{i} \cdot \vc{n}}{\ln{\vc{n}}^2}\vc{n}.
\end{align}
|
(3.86)
|
如果 $\vc{n}$ 是的,即 $\ln{\vc{n}}=1$,那么上式简化为
|
\begin{equation}
\vc{r} = \vc{i} - 2(\vc{i} \cdot \vc{n})\vc{n}.
\end{equation}
|
(3.87)
|
注意 $\vc{r}$ 必须位于由 $\vc{i}$ 和 $\vc{n}$ 张成的同一内,
因为 $2(\vc{i}\cdot\vc{n})$ 是一个标量,因此只是将 $\vc{n}$ 的缩放版本加到了 $\vc{i}$ 上。
让我们也证明入射角等于反射角,即
$[-\vc{i},\vc{n}] = [\vc{r},\vc{n}]$(注意 $\vc{i}$ 上的负号,这是必需的,因为 $\vc{i}$
指向点,而 $\vc{r}$ 指向外)。
为简单起见,假设 $\vc{i}$ 和 $\vc{n}$ 是的。
这意味着 $\cos [-\vc{i},\vc{n}] = -\vc{i} \cdot \vc{n}$。反射
向量 $\vc{r}$ 与 $\vc{n}$ 之间的可以表达并简化如下。
|
\begin{align}
\cos [\vc{r},\vc{n}]
=& \vc{r} \cdot \vc{n} \\
=& (\vc{i} - 2(\vc{i} \cdot \vc{n})\vc{n})\cdot \vc{n} \\
=& \vc{i}\cdot \vc{n} - 2(\vc{i} \cdot \vc{n}) \underbrace{(\vc{n}\cdot \vc{n})}_{=1} \\
=& \vc{i}\cdot \vc{n} - 2(\vc{i} \cdot \vc{n}) \\
=& - (\vc{i} \cdot \vc{n})
\end{align}
|
(3.88)
|
如图所示,入射角和反射角的余弦值相同,
由于使用点积计算的只是向量之间最小的(和正的)角度,
并且因为 $0$ 和 $\pi$ 之间的余弦是唯一的,所以这些角度也必定相同。
对于任意长度的入射和,这也可以证明。然而,这
留作练习。
弹出帮助:
映射 $F$ 是一个写作 $F: N \rightarrow M$ 的规则,
其中对于一个集合 $N$ 中的每个项,函数 $F$
在另一个集合 $M$ 中提供一个项。这里 $N$ 是定义域。