国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

計(jì)算機(jī)圖形學(xué):三次Bezier曲線的繪制(算法原理及代碼實(shí)現(xiàn))

這篇具有很好參考價(jià)值的文章主要介紹了計(jì)算機(jī)圖形學(xué):三次Bezier曲線的繪制(算法原理及代碼實(shí)現(xiàn))。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、實(shí)現(xiàn)方案

? ? ? ?貝塞爾曲線原理:貝塞爾曲線是計(jì)算機(jī)圖形圖像造型的基本工具,是圖形造型運(yùn)用得最多的基本線條之一。它通過(guò)控制曲線上的四個(gè)點(diǎn)(起始點(diǎn)、終止點(diǎn)以及兩個(gè)相互分離的中間點(diǎn))來(lái)創(chuàng)造、編輯圖形。其中起重要作用的是位于曲線中央的控制線。這條線是虛擬的,中間與貝塞爾曲線交叉,兩端是控制端點(diǎn)。移動(dòng)兩端的端點(diǎn)時(shí)貝塞爾曲線改變曲線的曲率(彎曲的程度);移動(dòng)中間點(diǎn)(也就是移動(dòng)虛擬的控制線)時(shí),貝塞爾曲線在起始點(diǎn)和終止點(diǎn)鎖定的情況下做均勻移動(dòng)。注意,貝塞爾曲線上的所有控制點(diǎn)、節(jié)點(diǎn)均可編輯。

? ? ? ?具體實(shí)現(xiàn)通過(guò)貝塞爾公式推導(dǎo):

? ? ? ?定義:給定點(diǎn)Po,P..... Pn,則n次貝塞爾曲線由下式給出:

計(jì)算機(jī)圖形學(xué):三次Bezier曲線的繪制(算法原理及代碼實(shí)現(xiàn))

? ? ? ?n次貝塞爾曲線的公式可由如下遞歸表達(dá):

計(jì)算機(jī)圖形學(xué):三次Bezier曲線的繪制(算法原理及代碼實(shí)現(xiàn))

? ? ? ??進(jìn)一步可以得到貝塞爾曲線的遞推計(jì)算公式:

計(jì)算機(jī)圖形學(xué):三次Bezier曲線的繪制(算法原理及代碼實(shí)現(xiàn))

? ? ? ?所以,想要實(shí)現(xiàn)三次Bezier曲線的繪制,只需要令n=k,可得公式為:

計(jì)算機(jī)圖形學(xué):三次Bezier曲線的繪制(算法原理及代碼實(shí)現(xiàn))

? ? ? ?為了更好的通過(guò)計(jì)算機(jī)來(lái)實(shí)現(xiàn)此公式,通過(guò)相應(yīng)的轉(zhuǎn)換,可以得到三次Bezier曲線的矩陣,再通過(guò)此推導(dǎo)公式從t=0到t=1之間連續(xù)繪制100個(gè)點(diǎn)即可得到Bezier曲線。???

?計(jì)算機(jī)圖形學(xué):三次Bezier曲線的繪制(算法原理及代碼實(shí)現(xiàn))

二、代碼實(shí)現(xiàn)

?

//坐標(biāo)點(diǎn)
struct Point
{
	double x, y;
};

int fac(int n) {
	if (n == 1 || n == 0)
		return 1;
	else
		return n * fac(n - 1);
}

double powi(double base, int n) {
	double res = 1;
	for (int i = 1; i <= n; ++i)
		res *= base;
	return res;
}

void DrawBezierCurve(Point* p, int n, CDC* pDC,int color) {
	double a, b;
	double temp, temp1, temp2, bi;
	for (double t = 0.0; t <= 1; t += 0.01) {
		a = 0.0; b = 0.0;
		for (int i = 0; i <= n; ++i) {
			temp = double(fac(n) / fac(i) / fac(n - i));
			temp1 = powi(t, i);
			temp2 = powi(1 - t, n - i);
			bi = temp * temp1 * temp2;
			a = a + bi * p[i].x;
			b = b + bi * p[i].y;
		}
		CPen m_newPen, * m_oldPen;
		//創(chuàng)建新畫(huà)筆
		m_newPen.CreatePen(PS_SOLID, 2, color);
		//將新畫(huà)筆選入設(shè)備上下文,并且保存舊畫(huà)筆
		m_oldPen = pDC->SelectObject(&m_newPen);
		if (t == 0) {
           pDC->MoveTo(a, b);
		}
		else {
           pDC->LineTo(a, b);
		}
		pDC->SelectObject(m_oldPen);
	}
}

Ondraw代碼:

Point p[4] = { {28,5},{30,20},{35.25},{40,5}};
	DrawBezierCurve(p,3, pDC,RGB(10,222,55));
	Line(pDC, p[0], p[1]);
	Line(pDC, p[1], p[2]);
	Line(pDC, p[2], p[3]);

三、代碼結(jié)果

計(jì)算機(jī)圖形學(xué):三次Bezier曲線的繪制(算法原理及代碼實(shí)現(xiàn))?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-504464.html

到了這里,關(guān)于計(jì)算機(jī)圖形學(xué):三次Bezier曲線的繪制(算法原理及代碼實(shí)現(xiàn))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 計(jì)算機(jī)圖形學(xué):繪制一個(gè)3d交互場(chǎng)景(1)

    計(jì)算機(jī)圖形學(xué):繪制一個(gè)3d交互場(chǎng)景(1)

    OpenGL作為一種圖形與硬件的接口,與其他圖形程序開(kāi)發(fā)工具相比較,它提供了眾多圖形函數(shù),直觀的編程環(huán)境簡(jiǎn)化了三維圖形的繪制過(guò)程,使用OpenGL搭建一個(gè)三維場(chǎng)景,能夠通過(guò)輸入設(shè)備與場(chǎng)景內(nèi)物體交互。 豪華單間 配置環(huán)境:vs22+freeglut庫(kù) 1.繪制墻體使其成為封閉空間,在

    2024年02月11日
    瀏覽(78)
  • 【計(jì)算機(jī)圖形學(xué)】作業(yè):Bresenham 法繪制圓

    請(qǐng)采用 Bresenham 法繪制圓(共 30 分)。要求: (1) 給出算法的文字描述(共 15 分)。 (2) 編寫函數(shù),在給定圓心坐標(biāo)和半徑的情況下,計(jì)算出圓 上所有的點(diǎn),并將這些點(diǎn)存儲(chǔ)在數(shù)組中(共 15 分)。 輸入圓的圓心(xc,yc),半徑r。數(shù)組circlepoints為輸出,保存圓上所有點(diǎn)。 初

    2024年01月24日
    瀏覽(27)
  • 計(jì)算機(jī)圖形學(xué)實(shí)驗(yàn)四 OpenGL的鼠標(biāo)交互繪制

    一、實(shí)驗(yàn)?zāi)康?1.掌握OpenGL的鼠標(biāo)按鈕響應(yīng)函數(shù)。 2.掌握OpenGL的鼠標(biāo)移動(dòng)響應(yīng)函數(shù)。 3.進(jìn)一步鞏固OpenGL的基本圖元繪制基礎(chǔ)。 二、實(shí)驗(yàn)內(nèi)容 1.鼠標(biāo)畫(huà)草圖——實(shí)現(xiàn)鼠標(biāo)點(diǎn)到哪,線就畫(huà)到哪。 思路: 1)在主程序注冊(cè)鼠標(biāo)響應(yīng)和鼠標(biāo)移動(dòng)子函數(shù): glutMouseFunc(mymouse); glutMotionFunc(mym

    2023年04月20日
    瀏覽(103)
  • 【計(jì)算機(jī)圖形學(xué)】二維圖形裁剪算法

    【計(jì)算機(jī)圖形學(xué)】二維圖形裁剪算法

    Cohen-Sutherland算法 Cohen-Sutherland是最早最流行的算法。 核心思想:通過(guò) 編碼測(cè)試 來(lái)減少計(jì)算交點(diǎn)的次數(shù)。(編碼算法) 1. 區(qū)域碼: 線段端點(diǎn)以區(qū)域賦值以四位二進(jìn)制碼。 編碼順序:四位從右到左分別為:左邊界、右邊界、下邊界、上邊界。 編碼值:落在相應(yīng)位置為1,否則

    2024年02月02日
    瀏覽(20)
  • 計(jì)算機(jī)圖形學(xué)頭歌實(shí)訓(xùn)平臺(tái)答案——CG1-v2.0-直線繪制

    計(jì)算機(jī)圖形學(xué)頭歌實(shí)訓(xùn)平臺(tái)答案——CG1-v2.0-直線繪制

    1.本關(guān)任務(wù) (1)根據(jù)直線DDA算法補(bǔ)全line函數(shù),其中直線斜率0k1; (2)當(dāng)直線方程恰好經(jīng)過(guò)P(x,y)和T(x,y+1)的中點(diǎn)M時(shí),統(tǒng)一選取直線上方的T點(diǎn)為顯示的像素點(diǎn)。 2.輸入 (1)直線兩端點(diǎn)坐標(biāo):(13, 20)和(180,140); (2)直線顏色為白色。 3.輸出 程序運(yùn)行結(jié)果為一條直線,具體結(jié)果如下圖所示:

    2024年02月06日
    瀏覽(91)
  • 計(jì)算機(jī)圖形學(xué):二維圖形的幾何變換(算法原理及代碼實(shí)現(xiàn))

    計(jì)算機(jī)圖形學(xué):二維圖形的幾何變換(算法原理及代碼實(shí)現(xiàn))

    對(duì)于一個(gè)二維圖形作平移、旋轉(zhuǎn)、放縮變換,可以轉(zhuǎn)換為在二維坐標(biāo)系中圖形的所有點(diǎn)分別可以對(duì)應(yīng)到在x,y軸方向分別平移tx,ty(平移)、繞一點(diǎn)旋轉(zhuǎn)固定的角(旋轉(zhuǎn))、在x,y軸方向分別放縮sx,sy倍。 對(duì)于變換的原理,只需要將原圖形的點(diǎn)通過(guò)極坐標(biāo)或者相加、相乘,再

    2024年02月11日
    瀏覽(91)
  • 計(jì)算機(jī)圖形學(xué)03:改進(jìn)的中點(diǎn)BH算法

    計(jì)算機(jī)圖形學(xué)03:改進(jìn)的中點(diǎn)BH算法

    作者 :非妃是公主 專欄 :《計(jì)算機(jī)圖形學(xué)》 博客地址 :https://blog.csdn.net/myf_666 個(gè)性簽:順境不惰,逆境不餒,以心制境,萬(wàn)事可成?!鴩?guó)藩 專欄名稱 專欄地址 軟件工程 專欄——軟件工程 計(jì)算機(jī)圖形學(xué) 專欄——計(jì)算機(jī)圖形學(xué) 操作系統(tǒng) 專欄——操作系統(tǒng) 軟件測(cè)試 專

    2024年01月17日
    瀏覽(25)
  • 【計(jì)算機(jī)圖形學(xué)|直線生成算法】Bresenham畫(huà)法詳解

    【計(jì)算機(jī)圖形學(xué)|直線生成算法】Bresenham畫(huà)法詳解

    Bresenham畫(huà)法是一種用于計(jì)算計(jì)算機(jī)圖形中線條的算法,其原理是沿著所需繪制的線段中的像素點(diǎn)進(jìn)行遞增或遞減,來(lái)進(jìn)行準(zhǔn)確的點(diǎn)陣?yán)L制。 實(shí)現(xiàn)該算法的關(guān)鍵在于確定像素在基準(zhǔn)線上的位置,以及在每次迭代時(shí)進(jìn)行相應(yīng)的調(diào)整。該算法比傳統(tǒng)的直線算法更快且更準(zhǔn)確,在低速

    2024年02月07日
    瀏覽(29)
  • 【計(jì)算機(jī)圖形學(xué)|直線生成算法】中點(diǎn)畫(huà)線法

    【計(jì)算機(jī)圖形學(xué)|直線生成算法】中點(diǎn)畫(huà)線法

    中點(diǎn)畫(huà)線法(Midpoint Line Algorithm)是一種畫(huà)線(Line Drawing)算法,用來(lái)在計(jì)算機(jī)屏幕上繪制線條。 它的基本思想是從線段的起點(diǎn)和終點(diǎn)出發(fā),按照一定的規(guī)則向終點(diǎn)逐步逼近,并在途中以控制變量的方式得出每個(gè)像素點(diǎn)的坐標(biāo),從而繪制出所需的線條。 具體實(shí)現(xiàn)中,中點(diǎn)畫(huà)線

    2024年02月04日
    瀏覽(28)
  • 【W(wǎng)eiler-Atherton算法】 計(jì)算機(jī)圖形學(xué)多邊形裁剪算法

    【W(wǎng)eiler-Atherton算法】 計(jì)算機(jī)圖形學(xué)多邊形裁剪算法

    源代碼: https://github.com/ricar0/Weiler-Atherton-Alogrithm/tree/master 通常來(lái)說(shuō)就是利用多邊形來(lái)裁剪多邊形的一種方法,一般情況下是利用矩形來(lái)裁剪凹凸多邊形 凸多邊形 凹多邊形 上面紅色劃線部分就是裁剪出的部分 OPENGL基礎(chǔ)語(yǔ)法 基本上就是一些畫(huà)線和畫(huà)多邊形的操作,難度較低

    2023年04月09日
    瀏覽(88)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包