许多曲线函数在对象建模、动画轨迹的描述、数据和函数的图形化以及其他图形应用中是十分有用的。常见的曲线包括圆锥曲线、三角和指数函数、概率分布、通用多项式和样条函数。这些曲线的显示可采用类似于前面讨论的圆和椭圆函数来生成。沿曲线轨迹的位置可直接从表达式y =f (x)或参数方程中得到。此外,还可以使用增量中点算法绘制用隐式函数f(x,y) = 0描述的曲线。


    显示一指定的曲线函数的简单方法是使用直线段来逼近曲线。这时,对于要得到沿曲线轨迹的等距线段的端点位置,则可以使用参数表达式。也可以按曲线的斜率选择独立变量,而从显式表达式中生成等距位置。假如y = f(x)斜率的绝对值小于1,就选择x作为自变量并对相等的x增量计算y值;当斜率绝对值大于1时,要使用反函数x = f-1(Y)并在相同的y步长中计算x的值。


    使用直线或曲线逼近法可以图示离散坐标点的数据集,我们可以使用直线段来将离散点连结在一起,或采用线性回归(最小二乘法),从而通过单个直线来拟合数据集。非线性最小二乘法用来显示具有某些拟合函数(通常是多项式)的数据组。


    像圆和椭圆一样,许多函数具有对称性,从而可以减少曲线轨迹上坐标位置的计算量。例如,正态分布函数关于中心位置(均值)是对称的,沿正弦曲线一个循环的所有点可以从90°区间内的点生成。


圆锥曲线


通常,我们可以使用二次方程来描述圆锥曲线(conic section):


 20160505163606949.png


其中,参数A, B, C, D, E和F的值决定所要显示的曲线类型。给定这组系数,就可以通过对判别式B2 = -4AC求值来确定所要生成的特定圆锥曲线:


 20160505163618746.png


例如,当A = B = 1, C=0, D = -2xc , E=-2yc和F=x2c+y2c-r2时,就得到圆方程(3.26 )方程(3.52)也能描述退化的圆锥曲线:点和直线。


       在有些应用中,圆弧和椭圆弧可以方便地用起始角和终止角表示,如图3.29所示。这些弧有时也用它们的端点坐标位置来定义。两种情况下我们都可以使用修改的中点方法来生成弧,或显示一组逼近直线段。


 20160505163706482.png


    椭圆、双曲线和抛物线在某些动画应用中有独特的用处。这些曲线可以描述受到地球引力、电磁场和原子力作用的物体的运行轨道和其他运动。例如:太阳系的平面轨迹是椭圆,进入均匀地球引力场的物体沿抛物线轨迹运动。对于负y方向作用的引力场,图3.30给出了标准位置上的抛物线轨迹。显示物体的抛物线轨迹方程可以写为:


20160505163804739.png


常数a和b由物体的初始速度v0和均匀引力引起的加速度g决定。我们也可利用以秒计量的时间参数t.根据初始发射点的参数方程来描述这种抛物线轨迹:


 20160505163819489.png


其中,vx0和vy0是初始速度分量,g的值在地球表面约为980 cm/s2。沿抛物线轨迹的物体位置就可以按照选定的时间步长计算出来。


 20160505163835926.png


    双曲线运动(参见图3.31 )发生在有关带电粒子碰撞的问题以及某些引力问题中。例如,彗星或陨星绕太阳的运动是沿双曲线轨迹,并且向外层空间逃逸而从不返回。描述物体运动的特定分支(图3.31中的左边或右边曲线)取决于问题中涉及的力。我们可以将图3.31中双曲线(中心位于原点)的标准方程写为


 20160505163923829.png


对于左分支,x =< -rx;对于右分支,x>=rx。由于这个方程与标准椭圆方程(3.39)之间的不同仅在于x2和y2项的符号,因此只需对椭圆算法进行细小的改动就可以产生双曲线轨迹上的点。


 20160505163951427.png


抛物线和双曲线具有对徐轴。例如,由方程( 3.55)描述的抛物线关于下列轴是对称的:


 20160505164003052.png


中点椭圆算法中的方法可直接用于在下面的两个区域内获得抛物线和双曲线轨迹上对称轴一侧的点:


(1)曲线斜率的绝对值小于1; 


(2)曲线斜率的绝对值大于1。为此,首先选择方程(3.52)的合适形式,然后利用所选的函数来建立两个区域内决策参数的表达式。


 


多项式和样条曲线


x的n次多边形函数可以定义为


 20160505164133317.png


其中,n为非负整数,ak是常数且an != 0,当n = 2时得到二次曲线,n = 3时为三次多项式,n = 4时为四次曲线,等等;当n = 1时得到直线。多项式用于包括对象形状设计、动画轨迹的确定以及在离散数据点集合中数据趋向的图形化等许多图形应用中。


 20160505164211490.png


    对象形状或运动轨迹的设计中一般先通过指定少量的点来定义一个大概的曲线轮廓,然后利用多项式来拟合选定的点。曲线拟合的一种方法是在每对指定点之间构造三次多项式曲线段,每个曲线段可以通过参数形式描述:


 20160505164219506.png


     其中,参数u在0和1.0之间变化。参数方程中u的系数值根据曲线段的边界条件确定。边界条件之一是两个相邻曲线段具有公共端点,另一个条件是在边界上匹配两条曲线的斜率,以便得到连续的平滑曲线(参见图3.32)。利用多项式曲线段形成的这种连续曲线称为样条曲线(spline curve ),简称为样条。还有许多其他的建立样条曲线的方法,我们将在第8章研究各种样条的生成方法。