最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

OpenGL畫bezier曲線

 更新時(shí)間:2020年04月20日 15:18:57   作者:Arururururu  
這篇文章主要為大家詳細(xì)介紹了OpenGL畫bezier曲線,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

Bezier Curve算法是根據(jù)參數(shù)曲線方程來得到光滑曲線的一種算法,曲線方程的參數(shù)由控制點(diǎn)決定。
其本質(zhì)是由調(diào)和函數(shù)根據(jù)控制點(diǎn)插值而成,其參數(shù)方程如下:

其中Pi(i=0,1,…,n)為控制點(diǎn)的向量,

Bi,n(t)為伯恩斯坦Bernstein基函數(shù),其多項(xiàng)式表示為:

線性Bezier Curve由兩個(gè)控制點(diǎn)決定:

二次Bezier Curve由三個(gè)控制點(diǎn)決定:

三次Bezier Curve由四個(gè)控制點(diǎn)決定:

如下圖,t = AE:AB = BF:BC = CG:CD = EH:EF = FI:FG = HJ:HI,J即為Bezier曲線上的點(diǎn)

 

t取0到1的過程就把bezier曲線畫出來了。

Bezier Curve的特點(diǎn):

1、端點(diǎn)性質(zhì):通過起點(diǎn)和終點(diǎn);
2、對(duì)稱性:保持頂點(diǎn)位置不變,順序顛倒,新曲線的形狀不變,只是參數(shù)變化的方向相反;
3、凸包性:由二項(xiàng)式定理得知Bi,n(t)求和為1,即Bi,n(t)構(gòu)成了Bezier曲線的一組權(quán)函數(shù),因此Bezier曲線一定落在其控制多邊形的凸包之中。
4、幾何不變性:Bezier曲線的形狀只與其控制點(diǎn)的相對(duì)位置有關(guān),與坐標(biāo)變化無關(guān)。

實(shí)現(xiàn)三次Bezier曲線函數(shù)的代碼如下:vector用于儲(chǔ)存構(gòu)成曲線的點(diǎn)坐標(biāo),若每次都重新分配會(huì)導(dǎo)致堆溢出,因此每次都用同一內(nèi)存空間

//用于存儲(chǔ)畫曲線的點(diǎn)坐標(biāo)
float* vector = new float[2000];
float* bezierCurve(float step, float* points) {
 //一共有幾個(gè)點(diǎn)
 int size = 1.0 / step;

 float t = 0.0f;
 //參考公式 Q(t)=(1-t)^3*P0 + 3t(1-t)^2*P1 + 3t^2(1-t)*P2 + t^3*P3
 for (int index = 0; index < size; index++, t += step) {
 vector[index * 3] = (1 - t)*(1 - t)*(1 - t)*points[0] + 3 * t*(1 - t)*(1 - t)*points[3]
    + 3 * t*t*(1 - t)*points[6] + t*t*t*points[9];
 vector[index * 3 + 1] = (1 - t)*(1 - t)*(1 - t)*points[1] + 3 * t*(1 - t)*(1 - t)*points[4]
    + 3 * t*t*(1 - t)*points[7] + t*t*t*points[10];
 vector[index * 3 + 2] = 0.0f;
 }

 return vector;
}

【部分運(yùn)行效果】

用鼠標(biāo)左鍵點(diǎn)擊四個(gè)點(diǎn),根據(jù)點(diǎn)的順序畫出三次Bezier曲線

改變點(diǎn)的順序,得到新的Bezier曲線

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++ Dijkstra算法之求圖中任意兩頂點(diǎn)的最短路徑

    C++ Dijkstra算法之求圖中任意兩頂點(diǎn)的最短路徑

    這篇文章主要為大家詳細(xì)介紹了用C++經(jīng)典算法-Dijkstra算法求任意兩頂點(diǎn)之間的最短路徑,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C語言中bool和float的用法實(shí)例解析

    C語言中bool和float的用法實(shí)例解析

    這篇文章主要介紹了C語言中bool類型和float類型的相關(guān)資料,bool類型用于聲明布爾變量,只有true和false兩種值,float類型用于存儲(chǔ)單精度浮點(diǎn)數(shù),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-11-11
  • 用C語言實(shí)現(xiàn)貪吃蛇小游戲

    用C語言實(shí)現(xiàn)貪吃蛇小游戲

    這篇文章主要為大家詳細(xì)介紹了用C語言實(shí)現(xiàn)貪吃蛇小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-05-05
  • C++ 中滾動(dòng)條的滾動(dòng)問題

    C++ 中滾動(dòng)條的滾動(dòng)問題

    本文主要通過一個(gè)示例,給大家介紹了C++中滾動(dòng)條的滾動(dòng)問題,以及相關(guān)參數(shù)的解釋,非常的詳細(xì),有需要的小伙伴可以參考下。
    2015-06-06
  • C語言詳解熱門考點(diǎn)結(jié)構(gòu)體內(nèi)存對(duì)齊

    C語言詳解熱門考點(diǎn)結(jié)構(gòu)體內(nèi)存對(duì)齊

    C?數(shù)組允許定義可存儲(chǔ)相同類型數(shù)據(jù)項(xiàng)的變量,結(jié)構(gòu)是?C?編程中另一種用戶自定義的可用的數(shù)據(jù)類型,它允許你存儲(chǔ)不同類型的數(shù)據(jù)項(xiàng),本篇讓我們來了解C?的結(jié)構(gòu)體內(nèi)存對(duì)齊
    2022-04-04
  • C語言實(shí)現(xiàn)超市信息管理系統(tǒng)

    C語言實(shí)現(xiàn)超市信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)超市信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • c語言中exit和return的區(qū)別點(diǎn)總結(jié)

    c語言中exit和return的區(qū)別點(diǎn)總結(jié)

    小編今天給大家整理了關(guān)于c語言中exit和return的不同點(diǎn)及相關(guān)基礎(chǔ)知識(shí)點(diǎn),有興趣的朋友們可以跟著學(xué)習(xí)下。
    2021-10-10
  • 嵌入式C程序優(yōu)質(zhì)編寫全面教程規(guī)范

    嵌入式C程序優(yōu)質(zhì)編寫全面教程規(guī)范

    這是一年前我為公司內(nèi)部寫的一個(gè)文檔,旨在向年輕的嵌入式軟件工程師們介紹如何在裸機(jī)環(huán)境下編寫優(yōu)質(zhì)嵌入式C程序。感覺是有一定的參考價(jià)值,所以拿出來分享,拋磚引玉
    2022-04-04
  • 深入學(xué)習(xí)C語言中memset()函數(shù)的用法

    深入學(xué)習(xí)C語言中memset()函數(shù)的用法

    這篇文章主要介紹了深入學(xué)習(xí)C語言中memset()函數(shù)的用法,是C語言入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-08-08
  • C++11 寫一個(gè)只觸發(fā)一次槽函數(shù)的Qt connect函數(shù)

    C++11 寫一個(gè)只觸發(fā)一次槽函數(shù)的Qt connect函數(shù)

    這篇文章主要為大家介紹了C++11 寫一個(gè)只觸發(fā)一次槽函數(shù)的Qt connect函數(shù)實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09

最新評(píng)論

社旗县| 义马市| 红河县| 辽阳市| 化州市| 彭州市| 栾城县| 邯郸市| 隆化县| 铜梁县| 二手房| 内江市| 望奎县| 富川| 威海市| 黄骅市| 九江县| 高碑店市| 元朗区| 河曲县| 焦作市| 双鸭山市| 陆川县| 阳山县| 林周县| 小金县| 平塘县| 元阳县| 德江县| 东港市| 白沙| 黑水县| 台安县| 宝兴县| 如皋市| 乌恰县| 彭泽县| 梨树县| 普定县| 津市市| 洱源县|