《Fundamentals of Computer Graphics》翻译(二):曲线,梯度

本文是《Fundamentals of Computer Graphics》第二章2.5节的部分翻译。

2D隐式曲线

从直观上,一条曲线可以看做是用笔在纸上连续画出来的一系列点的集合。描述曲线一种普遍的方式是隐式方程。二维隐式方程的形式是:
f(x,y) = 0.

函数f (x, y)返回一个实数值。使这个值为0的点 (x, y)在曲线上,不为0的点则不在曲线上。

成为“隐式”方程的原因是,点 (x, y)的值不能立即从该方程中计算出来,而必须对方程进行求解。

我们可以把f想象成一个地势,在海平面的地方,f=0(如图2.22)。海岸线就是隐式曲线。f的值是海拔。另一个值得注意的地方是,该曲线将空间切成三部分: f > 0, f < 0, and f = 0. 注意f(x,y) = c中的c取任意的常量,都是一条曲线,c=0只是为了方便。例如,如果f (x, y) = x2 + y2 − 1,改变c的值相当于中心在原点的不同半径的圆(如图2.23)

2D梯度

如果我们把函数 f(x,y)当做高度为f(x,y)的高度图,梯度向量指向坡度最大的方向。例如,指向上坡方向。梯度向量如下:

5994163-3d73ba81f52b1bbc.png

在曲线f(x,y) = 0上的某一点的梯度向量垂直于该点的切线方向。这个垂直向量通常称为该曲线的法向量。另外,因为梯度向量指向上坡方向,它表示指向f (x, y) > 0区域的方向。

5994163-7c47082eab5b8d1c.png

在高度图中,用几何来表示偏导数和梯度更直观。假设在点(a, b)附近, f (x, y)是一个平面(如图2.24).有特定的上坡和下坡方向。与这个方向垂直的方向是该平面的水平方向。该平面和f(x,y) = 0平面的任何相交线都在这个水平方向上。因此上坡和下坡方向都垂直于该平面与f (x, y) = 0平面的交线。为了说明偏导数与梯度的关系,我们需要几何图直观解释。回忆常见的一维函数y = g(x)的导数:


5994163-4a1fe798d5aaa924.png

它衡量g的切线的斜率。(如图2.25)。

偏导数是一维导数的推广。对于2D函数f(x,y),我们不能像2.10式那样限制x,因为对于某个的x的变化,f还有许多变化。然而,如果我们保持y为常数,我们可以模拟导数,称为偏导数(如图2.26):


5994163-2862b6683a611001.png

为何基于x和y的偏导数组成了梯度向量?用几何方式比代数更能说明内在本质。如图2.27,我们看见沿着向量a的方向,f一直不变。注意在高度 (x, y) = f (x, y)周围足够小的区域内,可以认为f是平坦的。从图中我们看到a = (Δx, Δy)。


5994163-58b819bce5be1964.png

因为上坡方向正交于a,从点积中我们知道:


5994163-e41be1b645f39943.png

我们也知道,f在 (xa, ya)方向的变化为零:


5994163-61a19ac01478c962.png

给定任意两个相互垂直的(x,y)和(x′,y′)向量,他们的夹角是90度,因此他们的点积为0.因此,我们有 xx′ + yy′ = 0。给定(x, y),很容易构造与它叉积为0的向量,最明显的两个向量是(y,−x) and (−y,x)。从这个观察中做推广,向量(x, y)垂于与向量k(y, −x),其中k是任意一个非零常数。如下:


5994163-6cd5c599c000b81c.png

合并2.11和2.12, 有


5994163-01e2350905c9e7b3.png

k′是非零常数。默认情况下,“上坡”意味着f的正向改变,因此通常我们让 k′ > 0,为了方便最好设k′ = 1。

猜你喜欢

转载自blog.csdn.net/weixin_33951761/article/details/87427908