📜  计算机图形曲线

📅  最后修改于: 2021-01-13 09:39:00             🧑  作者: Mango


在计算机图形学中,我们经常需要在屏幕上绘制不同类型的对象。对象并非一直都是平坦的,我们需要多次绘制曲线才能绘制对象。

曲线类型

曲线是一个无限大的点集。除端点外,每个点都有两个邻居。曲线可大致分为三类-显式,隐式参数曲线

隐式曲线

隐式曲线表示法通过采用可以测试以查看曲线上是否有点的过程来定义曲线上的点集。通常,隐式曲线由以下形式的隐式函数定义:

f(x,y)= 0

它可以表示多值曲线(x值有多个y值)。一个常见的例子是圆,其隐式表示为

x 2 + y 2 -R 2 = 0

显式曲线

可以将数学函数y = f(x)绘制为曲线。这样的函数是曲线的明确表示。显式表示不是一般性的,因为它不能表示垂直线,并且也是单值的。对于x的每个值,该函数通常仅计算y的单个值。

参数曲线

具有参数形式的曲线称为参数曲线。仅当函数已知时,才可以使用显式和隐式曲线表示。实际上,使用参数曲线。二维参数曲线具有以下形式-

P(t)= f(t),g(t)或P(t)= x(t),y(t)

函数f和g变为曲线上任何点的(x,y)坐标,并且当参数t在特定时间间隔[a,b](通常为[0,1])内变化时,将获得这些点。

贝塞尔曲线

贝塞尔曲线是由法国工程师皮埃尔·贝济耶(PierreBézier)发现的。这些曲线可以在其他点的控制下生成。使用控制点的近似切线可生成曲线。贝塞尔曲线可以用数学表示为-

$$ \ sum_ {k = 0} ^ {n} P_ {i} {B_ {i} ^ {n}}(t)$$

其中$ p_ {i} $是点集,而$ {B_ {i} ^ {n}}(t)$表示伯恩斯坦多项式,由-

$$ {B_ {i} ^ {n}}(t)= \ binom {n} {i}(1-t)^ {ni} t ^ {i} $$

其中n是多项式, i是指数, t是变量。

最简单的贝塞尔曲线是从点$ P_ {0} $到$ P_ {1} $的直线。二次贝塞尔曲线由三个控制点确定。三次贝塞尔曲线由四个控制点确定。

贝塞尔曲线

贝塞尔曲线的性质

贝塞尔曲线具有以下属性-

  • 它们通常遵循控制多边形的形状,该控制多边形由连接控制点的线段组成。

  • 它们始终通过第一个和最后一个控制点。

  • 它们包含在其定义控制点的凸包中。

  • 定义曲线段的多项式的度数比定义多边形点的数目小一。因此,对于4个控制点,多项式的阶数为3,即三次多项式。

  • 贝塞尔曲线通常遵循定义的多边形的形状。

  • 端点处的切向量的方向与由第一段和最后一段确定的向量的方向相同。

  • 贝塞尔曲线的凸包属性可确保多项式平滑地遵循控制点。

  • 与Bezier曲线相交的直线比与控制多边形相交的直线要多。

  • 在仿射变换下它们是不变的。

  • 贝塞尔曲线具有全局控制功能,移动控制点会改变整个曲线的形状。

  • 给定的Bezier曲线可以在点t = t0处细分为两个Bezier段,它们在与参数值t = t0对应的点处连接在一起。

B样条曲线

Bernstein基函数生成的Bezier曲线的灵活性有限。

  • 首先,指定多边形顶点的数量确定了定义曲线的多项式的顺序。

  • 第二个限制特征是,对于整个曲线上的所有参数值,混合函数的值都不为零。

B样条基础包含Bernstein基础作为特例。 B样条曲线是非全局的。

B样条曲线定义为控制点Pi和B样条基础函数$ N_ {i,} $ k(t)的线性组合

$ C(t)= \ sum_ {i = 0} ^ {n} P_ {i} N_ {i,k}(t),$ $ n \ geq k-1,$ $ t \:\ epsilon \:[ tk-1,tn + 1] $

哪里,

  • {$ p_ {i} $:i = 0、1、2….n}是控制点

  • k是B样条曲线的多项式分段的顺序。 k阶表示曲线由度为k-1的分段多项式段组成

  • $ N_ {i,k}(t)$是“归一化B样条混合函数”。它们由k阶和实数的非递减序列(通常称为“结序列”)描述。

$$ {t_ {i}:i = 0,… n + K} $$

N i ,k函数描述如下-

$$ N_ {i,1}(t)= \ left \ {\ begin {matrix} 1,&if \:u \:\ epsilon \:[t_ {i,} t_ {i + 1})\\ 0 ,否则为\ end {matrix} \ right。$$

如果k> 1,

$$ N_ {i,k}(t)= \ frac {t-t_ {i}} {t_ {i + k-1}} N_ {i,k-1}(t)+ \ frac {t_ {i + k} -t} {t_ {i + k}-t_ {i + 1}} N_ {i + 1,k-1}(t)$$

$$ t \:\ epsilon \:[t_ {k-1},t_ {n + 1})$$

B样条曲线的性质

B样条曲线具有以下属性-

  • 任何参数值的B样条基函数之和为1。

  • 对于所有参数值,每个基函数为正或为零。

  • 除k = 1外,每个基函数都有一个最大值。

  • 曲线的最大阶数等于定义多边形的顶点数。

  • B样条多项式的次数与定义多边形的顶点数无关。

  • B样条允许对曲线表面进行局部控制,因为每个顶点仅在与其关联的基函数为非零的参数值范围内影响曲线的形状。

  • 该曲线表现出变化减小的特性。

  • 曲线通常遵循定义多边形的形状。

  • 通过将仿射变换应用于定义多边形的顶点,可以将其应用于该曲线。

  • 其定义多边形的凸包内的曲线。