標籤:
其他曲線
許多曲線函數在對象建模、動畫軌跡的描述、資料和函數的圖形化以及其他圖形應用中是十分有用的。常見的曲線包括圓錐曲線、三角和指數函數、機率分布、通用多項式和樣條函數。這些曲線的顯示可採用類似於前面討論的圓和橢圓函數來產生。沿曲線軌跡的位置可直接從運算式y =f (x)或參數方程中得到。此外,還可以使用增量中點演算法繪製用隱式函數f(x,y) = 0描述的曲線。
顯示一指定的曲線函數的簡單方法是使用直線段來逼近曲線。這時,對於要得到沿曲線軌跡的等距線段的端點位置,則可以使用參數運算式。也可以按曲線的斜率選擇獨立變數,而從顯式運算式中產生等距位置。假如y = f(x)斜率的絕對值小於1,就選擇x作為自變數並對相等的x增量計算y值;當斜率絕對值大於1時,要使用反函數x = f-1(Y)並在相同的y步長中計算x的值。
使用直線或曲線逼近法可以圖示離散座標點的資料集,我們可以使用直線段來將離散點連結在一起,或採用線性迴歸(最小二乘法),從而通過單個直線來擬合資料集。非線性最小二乘法用來顯示具有某些擬合函數(通常是多項式)的資料群組。
像圓和橢圓一樣,許多函數具有對稱性,從而可以減少曲線軌跡上座標位置的計算量。例如,常態分佈函數關於中心位置(均值)是對稱的,沿正弦曲線一個迴圈的所有點可以從90°區間內的點產生。
圓錐曲線
通常,我們可以使用二次方程來描述圓錐曲線(conic section):
其中,參數A, B, C, D, E和F的值決定所要顯示的曲線類型。給定這組係數,就可以通過對判別式B2 = -4AC求值來確定所要產生的特定圓錐曲線:
例如,當A = B = 1, C=0, D = -2xc , E=-2yc和F=x2c+y2c-r2時,就得到圓方程(3.26 )方程(3.52)也能描述退化的圓錐曲線:點和直線。
在有些應用中,圓弧和橢圓弧可以方便地用起始角和終止角表示,3.29所示。這些弧有時也用它們的端點座標位置來定義。兩種情況下我們都可以使用修改的中點方法來產生弧,或顯示一組逼近直線段。
橢圓、雙曲線和拋物線在某些動畫應用中有獨特的用處。這些曲線可以描述受到地球引力、電磁場和原子力作用的物體的運行軌道和其他運動。例如:太陽系的平面軌跡是橢圓,進入均勻地球引力場的物體沿拋物線軌跡運動。對於負y方向作用的引力場,圖3.30給出了標準位置上的拋物線軌跡。顯示物體的拋物線軌跡方程可以寫為:
常數a和b由物體的初始速度v0和均勻引力引起的加速度g決定。我們也可利用以秒計量的時間參數t.根據初始發射點的參數方程來描述這種拋物線軌跡:
其中,vx0和vy0是初始速度分量,g的值在地球表面約為980 cm/s2。沿拋物線軌跡的物體位置就可以按照選定的時間步長計算出來。
雙曲線運動(參見圖3.31 )發生在有關帶電粒子碰撞的問題以及某些引力問題中。例如,彗星或隕星繞太陽的運動是沿雙曲線軌跡,並且向外層空間逃逸而從不返回。描述物體運動的特定分支(圖3.31中的左邊或右邊曲線)取決於問題中涉及的力。我們可以將圖3.31中雙曲線(中心位於原點)的標準方程寫為
對於左分支,x =< -rx;對於右分支,x>=rx。由於這個方程與標準橢圓方程(3.39)之間的不同僅在於x2和y2項的符號,因此只需對橢圓演算法進行細小的改動就可以產生雙曲線軌跡上的點。
拋物線和雙曲線具有對徐軸。例如,由方程( 3.55)描述的拋物線關於下列軸是對稱的:
中點橢圓演算法中的方法可直接用於在下面的兩個地區內獲得拋物線和雙曲線軌跡上對稱軸一側的點:
(1)曲線斜率的絕對值小於1;
(2)曲線斜率的絕對值大於1。為此,首先選擇方程(3.52)的合適形式,然後利用所選的函數來建立兩個地區內決策參數的運算式。
多項式和樣條曲線
x的n次多邊形函數可以定義為
其中,n為非負整數,ak是常數且an != 0,當n = 2時得到二次曲線,n = 3時為三次多項式,n = 4時為四次曲線,等等;當n = 1時得到直線。多項式用於包括對象形狀設計、動畫軌跡的確定以及在離散資料點集合中資料趨向的圖形化等許多圖形應用中。
對象形狀或運動軌跡的設計中一般先通過指定少量的點來定義一個大概的曲線輪廓,然後利用多項式來擬合選定的點。曲線擬合的一種方法是在每對指定點之間構造三次多項式曲線段,每個曲線段可以通過參數形式描述:
其中,參數u在0和1.0之間變化。參數方程中u的係數值根據曲線段的邊界條件確定。邊界條件之一是兩個相鄰曲線段具有公用端點,另一個條件是在邊界上匹配兩條曲線的斜率,以便得到連續的平滑曲線(參見圖3.32)。利用多項式曲線段形成的這種連續曲線稱為樣條曲線(spline curve ),簡稱為樣條。還有許多其他的建立樣條曲線的方法,我們將在第8章研究各種樣條的產生方法。
電腦圖形學(二)輸出圖元_6_OpenGL曲線函數_5_其他曲線