青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

貝塞爾曲線

LINK: http://zh.wikipedia.org/wiki/%E8%B2%9D%E8%8C%B2%E6%9B%B2%E7%B7%9A#.E9.9B.BB.E8.85.A6.E7.B9.AA.E5.9C.96

數學數值分析領域中,貝茲曲線Bézier curve)是電腦圖形學中相當重要的參數曲線。更高維度的廣泛化貝茲曲線就稱作貝茲曲面,其中貝茲三角是一種特殊的實例。

貝茲曲線於1962年,由法國工程師皮埃爾·貝茲Pierre Bézier)所廣泛發表,他運用貝茲曲線來為汽車的主體進行設計。貝茲曲線最初由 Paul de Casteljau1959年運用 de Casteljau 演算法開發,以穩定數值的方法求出貝茲曲線。

目錄

[隱藏]

[編輯] 實例說明

[編輯] 線性貝茲曲線

給定點 P0P1,線性貝茲曲線只是一條兩點之間的直線。這條線由下式給出:

\mathbf{B}(t)=\mathbf{P}_0 + (\mathbf{P}_1-\mathbf{P}_0)t=(1-t)\mathbf{P}_0 + t\mathbf{P}_1 \mbox{ , } t \in [0,1]

且其等同於線性插值

[編輯] 二次方貝茲曲線

二次方貝茲曲線的路徑由給定點 P0P1P2 的函數 B(t) 追蹤:

\mathbf{B}(t) = (1 - t)^{2}\mathbf{P}_0 + 2t(1 - t)\mathbf{P}_1 + t^{2}\mathbf{P}_2 \mbox{ , } t \in [0,1]

TrueType 字型就運用了以貝茲樣條組成的二次貝茲曲線。

[編輯] 三次方貝茲曲線

P0P1P2P3 四個點在平面或在三維空間中定義了三次方貝茲曲線。曲線起始於 P0 走向 P1,並從 P2 的方向來到 P3。一般不會經過 P1P2;這兩個點只是在那裡提供方向資訊。 P0P1 之間的間距,決定了曲線在轉而趨進 P3 之前,走向 P2 方向的「長度有多長」。

曲線的參數形式為:

\mathbf{B}(t)=\mathbf{P}_0(1-t)^3+3\mathbf{P}_1t(1-t)^2+3\mathbf{P}_2t^2(1-t)+\mathbf{P}_3t^3 \mbox{ , } t \in [0,1]

現代的成象系統,如 PostScriptAsymptoteMetafont,運用了以貝茲樣條組成的三次貝茲曲線,用來描繪曲線輪廓。

[編輯] 一般化

n 階貝茲曲線可如下推斷。給定點 P0P1、…、Pn,其貝茲曲線即

\mathbf{B}(t)=\sum_{i=0}^n {n\choose i}\mathbf{P}_i(1-t)^{n-i}t^i =\mathbf{P}_0(1-t)^n+{n\choose 1}\mathbf{P}_1(1-t)^{n-1}t+\cdots+\mathbf{P}_nt^n \mbox{ , } t \in [0,1]

例如 n = 5

\mathbf{B}(t)=\mathbf{P}_0(1-t)^5+5\mathbf{P}_1t(1-t)^4+10\mathbf{P}_2t^2(1-t)^3+10\mathbf{P}_3t^3(1-t)^2+5\mathbf{P}_4t^4(1-t)+\mathbf{P}_5t^5 \mbox{ , } t \in [0,1]

如上公式可如下遞歸表達: 用 \mathbf{B}_{\mathbf{P}_0\mathbf{P}_1\ldots\mathbf{P}_n} 表示由點 P0P1、…、Pn 所決定的貝茲曲線。則

\mathbf{B}(t) = \mathbf{B}_{\mathbf{P}_0\mathbf{P}_1\ldots\mathbf{P}_n}(t) = (1-t)\mathbf{B}_{\mathbf{P}_0\mathbf{P}_1\ldots\mathbf{P}_{n-1}}(t) + t\mathbf{B}_{\mathbf{P}_1\mathbf{P}_2\ldots\mathbf{P}_n}(t)

用平常話來說,n 階的貝茲曲線,即雙 n - 1 階貝茲曲線之間的插值。

[編輯] 術語

一些關於參數曲線的術語,有

\mathbf{B}(t) = \sum_{i=0}^n \mathbf{P}_i\mathbf{b}_{i,n}(t),\quad t\in[0,1]

即多項式

\mathbf{b}_{i,n}(t) = {n\choose i} t^i (1-t)^{n-i},\quad i=0,\ldots n

又稱作 n 階的伯恩斯坦基底多項式,定義 00 = 1。

Pi 稱作貝茲曲線的控制點多邊形以帶有的貝茲點連接而成,起始於 P0 並以 Pn 終止,稱作貝茲多邊形(或控制多邊形)。貝茲多邊形的凸包(convex hull)包含有貝茲曲線。

[編輯] 註解

  • 開始於 P0 並結束於 Pn 的曲線,即所謂的端點插值法屬性。
  • 曲線是直線的充分必要條件是所有的控制點都位在曲線上。同樣的,貝茲曲線是直線的充分必要條件是控制點共線
  • 曲線的起始點(結束點)相切於貝茲多邊形的第一節(最後一節)。
  • 一條曲線可在任意點切割成兩條或任意多條子曲線,每一條子曲線仍是貝茲曲線。
  • 一些看似簡單的曲線(如)無法以貝茲曲線精確的描述,或分段成貝茲曲線(雖然當每個內部控制點對單位圓上的外部控制點水平或垂直的的距離為 4\left(\sqrt{2} -1\right)/3 時,分成四段的貝茲曲線,可以小於千分之一的最大半徑誤差近似於圓)。
  • 位於固定偏移量的曲線(來自給定的貝茲曲線),又稱作偏移曲線(假平行於原來的曲線,如兩條鐵軌之間的偏移)無法以貝茲曲線精確的形成(某些瑣屑實例除外)。無論如何,現存的啟發法通常可為實際用途中給出近似值。

[編輯] 建構貝茲曲線

[編輯] 線性曲線

線性貝茲曲線演示動畫,t in [0,1]
線性貝茲曲線演示動畫,t in [0,1]

線性貝茲曲線函數中的 t 會經過由 P0P1B(t) 所描述的曲線。例如當 t=0.25 時,B(t) 即一條由點 P0P1 路徑的四分之一處。就像由 0 至 1 的連續 tB(t) 描述一條由 P0P1 的直線。

[編輯] 二次曲線

為建構二次貝茲曲線,可以中介點 Q0Q1 作為由 0 至 1 的 t

  • P0P1 的連續點 Q0,描述一條線性貝茲曲線。
  • P1P2 的連續點 Q1,描述一條線性貝茲曲線。
  • Q0Q1 的連續點 B(t),描述一條二次貝茲曲線。
二次貝茲曲線的結構 二次貝茲曲線演示動畫,t in [0,1]
二次貝茲曲線的結構 二次貝茲曲線演示動畫,t in [0,1]

[編輯] 高階曲線

為建構高階曲線,便需要相應更多的中介點。對於三次曲線,可由線性貝茲曲線描述的中介點 Q0Q1Q2,和由二次曲線描述的點 R0R1 所建構:

三次貝茲曲線的結構 三次貝茲曲線演示動畫,t in [0,1]
三次貝茲曲線的結構 三次貝茲曲線演示動畫,t in [0,1]

對於四次曲線,可由線性貝茲曲線描述的中介點 Q0Q1Q2Q3,由二次貝茲曲線描述的點 R0R1R2,和由三次貝茲曲線描述的點 S0S1 所建構:

四次貝茲曲線的結構 四次貝茲曲線演示動畫,t in [0,1]
四次貝茲曲線的結構 四次貝茲曲線演示動畫,t in [0,1]


(還可參閱五階貝茲曲線的構成。)

[編輯] 應用

[編輯] 電腦繪圖

貝塞爾曲線被廣泛地在計算機圖形中用來為平滑曲線建立模型。

二次和三次貝塞爾曲線最為常見

[編輯] 程式範例

下列程式碼為一簡單的實際運用範例,展示如何使用 C 標出三次方貝茲曲線。注意,此處僅簡單的計算多項式係數,並讀盡一系列由 0 至 1 的 t 值;實踐中一般不會這麼做,遞歸求解通常會更快速——以更多的記憶體為代價,花費較少的處理器時間。不過直接的方法較易於理解並產生相同結果。以下程式碼已使運算更為清晰。實踐中的最佳化會先計算係數一次,並在實際計算曲線點的迴圈中反複使用。此處每次都會重新計算,損失了效率,但程式碼更清楚易讀。

曲線的計算可在曲線陣列上將相連點畫上直線——點越多,曲線越平滑。

在部分架構中,下以程式碼也可由動態程式設計進行最佳化。舉例來說,dt 是一個常數,cx * t 則等同於每次反覆就修改一次常數。經反覆應用這種最佳化後,迴圈可被重寫為沒有任何乘法(雖然這個過程不是穩定數值的)。

/*
產生三次方貝茲曲線的程式碼
*/
typedef struct
{
float x;
float y;
}
Point2D;
/*
cp 在此是四個元素的陣列:
cp[0] 為起始點,或上圖中的 P0
cp[1] 為第一個控制點,或上圖中的 P1
cp[2] 為第二個控制點,或上圖中的 P2
cp[3] 為結束點,或上圖中的 P3
t 為參數值,0 <= t <= 1
*/
Point2D PointOnCubicBezier( Point2D* cp, float t )
{
float   ax, bx, cx;
float   ay, by, cy;
float   tSquared, tCubed;
Point2D result;
/* 計算多項式係數 */
cx = 3.0 * (cp[1].x - cp[0].x);
bx = 3.0 * (cp[2].x - cp[1].x) - cx;
ax = cp[3].x - cp[0].x - cx - bx;
cy = 3.0 * (cp[1].y - cp[0].y);
by = 3.0 * (cp[2].y - cp[1].y) - cy;
ay = cp[3].y - cp[0].y - cy - by;
/* 計算位於參數值 t 的曲線點 */
tSquared = t * t;
tCubed = tSquared * t;
result.x = (ax * tCubed) + (bx * tSquared) + (cx * t) + cp[0].x;
result.y = (ay * tCubed) + (by * tSquared) + (cy * t) + cp[0].y;
return result;
}
/*
ComputeBezier 以控制點 cp 所產生的曲線點,填入 Point2D 結構的陣列。
呼叫者必須分配足夠的記憶體以供輸出結果,其為 <sizeof(Point2D) numberOfPoints>
*/
void ComputeBezier( Point2D* cp, int numberOfPoints, Point2D* curve )
{
float   dt;
int	    i;
dt = 1.0 / ( numberOfPoints - 1 );
for( i = 0; i < numberOfPoints; i++)
curve[i] = PointOnCubicBezier( cp, i*dt );
}

另一種貝茲曲線的應用是在動畫中,描述物件的運動路徑等等。此處,曲線的 x、y 位置不用來標示曲線,但用來表示圖形位置。當用在這種形式時,連續點之間的距離會變的更為重要,且大多不是平均比例。點將會串的更緊密,控制點更接近每一個點,而更為稀疏的控制點會散的更開。如果需要線性運動速度,進一步處理時就需要循所需路徑將點平均分散。

[編輯] 有理貝茲曲線

有理貝茲增加可調節的權重,以提供更近似於隨意的形狀。分子是加權的伯恩斯坦形式貝茲曲線,而分母是加權的伯恩斯坦多項式的總和。

給定 n + 1 控制點 Pi,有理貝茲曲線可如下描述:

 
\mathbf{B}(t) =
\frac{
\sum_{i=0}^n b_{i,n}(t) \mathbf{P}_{i}w_i 
}
{
\sum_{i=0}^n b_{i,n}(t) w_i 
}

或簡單的

 
\mathbf{B}(t) =
\frac{
\sum_{i=0}^n {n \choose i} t^i (1-t)^{n-i}\mathbf{P}_{i}w_i 
}
{
\sum_{i=0}^n {n \choose i} t^i (1-t)^{n-i}w_i 
}

[編輯] 參閱

[編輯] 參考文獻

posted on 2009-10-22 17:05 zmj 閱讀(5053) 評論(3)  編輯 收藏 引用

評論

# re: 貝塞爾曲線 2014-02-13 11:00 xuthus

有沒有研究過,對一系列點進行曲線擬合,點很密集。擬合時,用盡量少的點表示輪廓線。  回復  更多評論   

# re: 貝塞爾曲線 2014-02-13 11:00 xuthus

郵箱:xuthus@sina.com  回復  更多評論   


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美性色综合| 国产欧美高清| 欧美激情精品久久久久久蜜臀 | 欧美电影免费观看网站| 国产精品视频区| 一区二区三区**美女毛片| 美女久久一区| 欧美一级久久久久久久大片| 欧美日韩综合久久| 91久久精品国产91久久性色| 久久青青草综合| 亚洲精品久久久久中文字幕欢迎你| 香蕉成人伊视频在线观看| 亚洲精品国精品久久99热| 欧美在线观看一区| 国产精品欧美一区二区三区奶水| 一区二区精品| 日韩一级裸体免费视频| 欧美日韩国产麻豆| 一区二区成人精品| 亚洲精美视频| 欧美屁股在线| 宅男精品导航| 亚洲无线视频| 国产精品区免费视频| 午夜精品久久久久99热蜜桃导演| 日韩一区二区免费高清| 欧美日韩一区不卡| 亚洲一级免费视频| 国产精品99久久99久久久二8 | 欧美一区二区三区免费看| 欧美视频专区一二在线观看| 91久久精品www人人做人人爽| 老司机精品导航| 日韩一区二区高清| 亚洲日本aⅴ片在线观看香蕉| 久久婷婷av| aa级大片欧美三级| 久久亚洲午夜电影| 欧美午夜精品久久久久久久| 有坂深雪在线一区| 亚洲欧美精品在线观看| 亚洲激情一区二区| 久久9热精品视频| 国产精品porn| 一本色道久久综合亚洲二区三区| 久久久av网站| 亚洲永久在线观看| 欧美日韩精品在线视频| 亚洲国产成人精品久久久国产成人一区| 亚洲少妇自拍| 亚洲国产精品女人久久久| 香蕉久久久久久久av网站| 欧美日韩一区视频| 亚洲人体一区| 农村妇女精品| 久久精品亚洲乱码伦伦中文| 国产日韩精品一区| 午夜精品成人在线视频| 日韩午夜中文字幕| 欧美韩日一区| 亚洲日韩欧美一区二区在线| 久久在线播放| 久久精品国产一区二区三区免费看 | 91久久久亚洲精品| 美女图片一区二区| 久久精品成人一区二区三区蜜臀 | 久久国产精品亚洲va麻豆| 99国内精品| 欧美日韩午夜| 亚洲尤物在线| 亚洲免费影视| 国产欧美精品在线| 欧美一级专区免费大片| 亚洲一区在线免费| 国产丝袜一区二区三区| 久久精品视频免费播放| 欧美一区视频| 亚洲国产高清一区二区三区| 美女网站久久| 欧美成人午夜激情在线| 一区二区三区四区精品| 亚洲天堂激情| 国模吧视频一区| 亚洲精品视频中文字幕| 麻豆成人综合网| 久热精品视频在线观看一区| 亚洲人体偷拍| 亚洲视频一区在线| 国产日韩精品电影| 欧美成人一区二区三区片免费| 久久亚洲精品欧美| 亚洲精品永久免费| 亚洲一区免费观看| 在线播放日韩| 日韩视频久久| 国产一区二区三区精品欧美日韩一区二区三区 | 一区二区亚洲欧洲国产日韩| 欧美国产精品人人做人人爱| 欧美日韩国产色综合一二三四| 亚洲欧美自拍偷拍| 久久精品人人| 亚洲一区二区精品| 久久精视频免费在线久久完整在线看| 亚洲国产va精品久久久不卡综合| a91a精品视频在线观看| 一区国产精品| 中文欧美字幕免费| 在线免费观看日本一区| 99精品视频免费观看| 一区二区三区自拍| 亚洲午夜精品久久| 亚洲级视频在线观看免费1级| 一区二区日韩| 亚洲精品久久嫩草网站秘色| 午夜在线一区| 亚洲亚洲精品在线观看 | 亚洲成色777777在线观看影院| 欧美三级第一页| 欧美激情一区二区三级高清视频| 国产精品自拍三区| 亚洲精品在线视频| 亚洲第一天堂av| 先锋亚洲精品| 亚洲欧美电影院| 欧美片网站免费| 亚洲国产日韩欧美综合久久| 国产真实乱偷精品视频免| 中文久久精品| 亚洲一区二区三区在线看| 欧美激情亚洲自拍| 欧美国产日韩免费| 亚洲电影观看| 久久久久久97三级| 久久久久久久久一区二区| 国产精品影片在线观看| 一区二区三区三区在线| 一区二区三区导航| 欧美日韩国产美| 亚洲看片免费| 亚洲无人区一区| 欧美日韩免费观看一区三区 | 狠狠色狠狠色综合| 在线一区免费观看| 亚洲主播在线| 国产精品成人一区二区三区夜夜夜| 日韩视频精品| 欧美成人在线影院| 亚洲电影视频在线| 亚洲人妖在线| 另类天堂视频在线观看| 裸体一区二区| 亚洲第一天堂av| 免费亚洲电影| 亚洲国产精品久久人人爱蜜臀| 亚洲免费观看高清完整版在线观看| 久热国产精品视频| 亚洲国产精品欧美一二99| 亚洲精品国产精品久久清纯直播| 免费影视亚洲| 亚洲精品乱码久久久久久日本蜜臀 | 裸体一区二区三区| 亚洲人午夜精品免费| 欧美激情一区二区久久久| 亚洲精品乱码| 亚洲一区综合| 国产精品日韩在线播放| 欧美在线观看一区二区| 蜜臀久久久99精品久久久久久| 黄色工厂这里只有精品| 玖玖综合伊人| 亚洲精品久久久久久久久久久 | 国产精品久久久久婷婷| 亚洲欧美日本精品| 久久亚洲高清| 亚洲精品在线观看免费| 欧美视频一区二区在线观看| 欧美一区二区三区四区在线观看地址 | 亚洲视频一区在线观看| 久久色在线播放| 亚洲美女av电影| 国产精品久久久久久亚洲毛片| 欧美亚洲在线| 欧美激情第1页| 欧美在现视频| 亚洲精品一区二区在线| 国产精品久久看| 久热国产精品| 亚洲免费一级电影| 亚洲三级免费电影| 久久人人看视频| 亚洲一区二区三区四区在线观看 | 亚洲欧美日韩在线综合| 精品不卡视频| 欧美三级在线播放| 久久综合色婷婷| 亚洲宅男天堂在线观看无病毒| 欧美福利视频在线观看| 销魂美女一区二区三区视频在线| 亚洲国产综合在线看不卡|