使用貝塞爾曲線可以把原來存在角度的折線變成圓滑的曲線,被大量運(yùn)用在繪圖,圖表,動(dòng)畫等領(lǐng)域
從上圖可以看出一條三階貝塞爾曲線 由起始點(diǎn)p0,結(jié)束點(diǎn)p3, 和兩個(gè)控制點(diǎn) p1、p2 組成,通過改變控制點(diǎn),可以決定曲線的曲率
控制點(diǎn)計(jì)算代碼在實(shí)際項(xiàng)目中,我們往往能很容易獲得 起始點(diǎn)和結(jié)束點(diǎn),而控制點(diǎn)卻需要計(jì)算
////// 計(jì)算三階貝塞爾關(guān)鍵點(diǎn)
/// ///坐標(biāo) A///坐標(biāo) B///A的上一個(gè)點(diǎn)///B的下一個(gè)點(diǎn)////// Point[0] = 它表示曲線的起始點(diǎn)
/// Point[1] = 它表示曲線的第一個(gè)控制點(diǎn)
/// Point[2] = 它表示曲線的第二個(gè)控制點(diǎn)
/// Point[3] = 它表示曲線的結(jié)束點(diǎn)
/// private Point[] CalcControlPoints(Point p1, Point p2, Point last, Point next)
{
float scale = 0.16f;
float ctrl1_x = p1.X + scale * (p2.X - last.X);
float ctrl1_y = p1.Y + scale * (p2.Y - last.Y);
float ctrl2_x = p2.X - scale * (next.X - p1.X);
float ctrl2_y = p2.Y - scale * (next.Y - p1.Y);
var arr = new Point[4];
arr[0] = p1;
arr[3] = p2;
arr[1] = new Point(Convert.ToInt32(ctrl1_x), Convert.ToInt32(ctrl1_y));
arr[2] = new Point(Convert.ToInt32(ctrl2_x), Convert.ToInt32(ctrl2_y));
return arr;
}
實(shí)際效果圖
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
新聞名稱:繪制貝塞爾曲線-創(chuàng)新互聯(lián)
URL標(biāo)題:http://jinyejixie.com/article42/ccphhc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、網(wǎng)站營銷、網(wǎng)頁設(shè)計(jì)公司、用戶體驗(yàn)、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容