日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 編程 > HTML > 正文

canvas實現高階貝塞爾曲線(N階貝塞爾曲線生成器)

2024-08-26 00:20:18
字體:
來源:轉載
供稿:網友

寫在最前

由于原生的Canvas最高只支持到三階貝塞爾曲線,那么我想添加多個控制點怎么辦呢?(即便大部分復雜曲線都可以用3階貝塞爾來模擬)與此同時,關于貝塞爾控制點的位置我們很難非常直觀的清楚到底將控制點設置為多少可以形成我們想要的曲線。本著解決以上兩個痛點同時社區內好像并沒有N階的解決方案(js版)故這次作者非常認真的開源了bezierMaker.js!

bezierMaker.js理論上支持N階貝塞爾曲線的生成,同時提供了試驗場供開發者可以自行添加并拖拽控制點最終生成一組繪制動畫。非常直觀的讓開發者知道不同位置的控制點所對應的不同生成曲線。

如果你喜歡這個作品歡迎Star,畢竟star來之不易。。

項目地址:這里???

為什么需要一個試驗場?

在繪制復雜的高階貝塞爾曲線時無法知道自己需要的曲線的控制點的精確位置。在試驗場中進行模擬,可以實時得到控制點的坐標值,將得到的點坐標變為對象數組傳遞進BezierMaker類就可以生成目標曲線

效果圖

貝塞爾曲線生成器,n階貝塞爾曲線,高階貝塞爾曲線 
 

貝塞爾曲線生成器,n階貝塞爾曲線,高階貝塞爾曲線

功能

  1. [x] 試驗場可添加任意數量控制點
  2. [x] 試驗場支持展示曲線繪制的形成動畫
  3. [x] 控制點可自由拖拽
  4. [x] 支持顯示貝塞爾曲線形成過程的切線
  5. [x] 3階及以下貝塞爾曲線的繪制采用原生API

引入

<script src="./bezierMaker.js"></script>

繪制

上面的效果圖為試驗場的使用,當你通過試驗場獲得控制點的準確坐標之后,就可以調用bezierMaker.js進行曲線的直接繪制。

/** * canvas canvas的dom對象 * bezierCtrlNodesArr 控制點數組,包含x,y坐標 * color 曲線顏色 */var canvas = document.getElementById('canvas')//3階之前采用原生方法實現var arr0 = [{x:70,y:25},{x:24,y:51}]var arr1 = [{x:233,y:225},{x:170,y:279},{x:240,y:51}]var arr2 = [{x:23,y:225},{x:70,y:79},{x:40,y:51},{x:300, y:44}]var arr3 = [{x:333,y:15},{x:70,y:79},{x:40,y:551},{x:170,y:279},{x:17,y:239}]var arr4 = [{x:53,y:85},{x:170,y:279},{x:240,y:551},{x:70,y:79},{x:40,y:551},{x:170,y:279}]var bezier0 = new BezierMaker(canvas, arr0, 'black')var bezier1 = new BezierMaker(canvas, arr1, 'red')var bezier2 = new BezierMaker(canvas, arr2, 'blue')var bezier3 = new BezierMaker(canvas, arr3, 'yellow')var bezier4 = new BezierMaker(canvas, arr4, 'green')bezier0.drawBezier()bezier1.drawBezier()bezier2.drawBezier()bezier3.drawBezier()bezier4.drawBezier()

繪制結果

貝塞爾曲線生成器,n階貝塞爾曲線,高階貝塞爾曲線

當控制點少于3個時,會適配使用原生的API接口。當控制點多于2個后,由我們自己實現的函數進行描點繪制。

核心原理

繪制貝塞爾曲線

繪制貝塞爾曲線的核心點在于貝塞爾公式的運用:
 

貝塞爾曲線生成器,n階貝塞爾曲線,高階貝塞爾曲線 
 

這個公式中的P0-Pn代表了從起點到各個控制點再到終點的各點與占比t的各種冪運算。

BezierMaker.prototype.bezier = function(t) { //貝塞爾公式調用    var x = 0,        y = 0,        bezierCtrlNodesArr = this.bezierCtrlNodesArr,        //控制點數組        n = bezierCtrlNodesArr.length - 1,        self = this    bezierCtrlNodesArr.forEach(function(item, index) {        if(!index) {            x += item.x * Math.pow(( 1 - t ), n - index) * Math.pow(t, index)             y += item.y * Math.pow(( 1 - t ), n - index) * Math.pow(t, index)         } else {        //factorial為階乘函數            x += self.factorial(n) / self.factorial(index) / self.factorial(n - index) * item.x * Math.pow(( 1 - t ), n - index) * Math.pow(t, index)             y += self.factorial(n) / self.factorial(index) / self.factorial(n - index) * item.y * Math.pow(( 1 - t ), n - index) * Math.pow(t, index)         }    })    return {        x: x,        y: y    }}

對所有點進行遍歷同時根據當前占比t的值(0<=t<=1),計算出當前在貝塞爾曲線上的點坐標x,y。t的取值作者分成了1000份,即每次運算t+=0.01。此時算出的x,y即所求的貝塞爾曲線分成了1000份之后的某一點。當t值從0~1遍歷1000次后生成1000個x,y對應坐標,依次描點畫線即可模擬出高階貝塞爾曲線。

對于貝塞爾公式的推導作者會在之后的文章中專門說明,現在你只需要知道我們通過貝塞爾公式計算出實際貝塞爾曲線被等分成了1000份的各點,用直線連接各點后即可模擬出類曲線。

對于模擬場貝塞爾曲線生成動畫的實現

這個部分相關代碼可以參考這里

整體思路是用遞歸的方式來將每個一層控制點當做1階貝塞爾函數來計算下一層控制點并對應連線。具體邏輯作者會留到深入講解貝塞爾曲線公式原理的時候一起梳理一下試驗場的動畫生成原理~

小結

作者一直想開源一些東西(但是菜,也沒啥能寫的),然而平時會用到的都被人寫了,再造輪子也沒別人寫得好。這次也算是發現了一個貌似空白一些的區域。所以非常鄭重的決定開源。貝塞爾的高級運用在gayhub中大多是安卓的實現,前端領域中還有很多地方可以更多的展開,歡迎討論~ 多多批評!

最后

項目地址:這里??

試驗場地址:一定進來玩???

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到HTML教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
在线国产日本| 欧美日韩午夜精品| 日韩精品在线视频观看| 日韩三级视频在线播放| 中文字幕无线码一区| 精品国产欧美成人夜夜嗨| 久久久精品欧美| 91精品国产综合久久久蜜臀粉嫩| 日韩欧美视频一区二区三区四区| 99精品视频99| 亚洲福利视频专区| 久久人人精品| 久久99精品久久久| 色综合婷婷久久| 中文字幕久久av| 蜜桃精品视频| 久久99久久久久久久噜噜| 精品日韩欧美在线| 91久久精品国产91久久| 中文字幕99| 国产福利精品导航| 欧美日韩在线视频首页| 精品在线网站观看| 在线一区二区三区精品| 欧美日韩在线视频首页| 欧美日韩一二| 精品1区2区3区| 国产成人精品综合网站| 日韩精品视频在线观看网址| 日韩欧美专区在线| 日韩专区视频网站| 国产成人综合精品| 国产亚洲人成a一在线v站| 欧美日韩视频不卡| 日韩欧美中文字幕在线播放| 欧美日韩在线看| 在线亚洲人成| 中文字幕亚洲字幕| 日本不卡视频一区| 国产欧美三级| 欧美日韩高清一区二区不卡| 一二三区精品福利视频| 一区二区日韩视频| 在线视频你懂得一区| 国产香蕉免费精品视频| 午夜一区二区三区| 欧美一级欧美三级在线观看| 中文字幕欧美日韩精品| 天堂在线中文| 免费精品国产自产拍在| 日韩精品福利视频| 中文字幕日韩在线观看| 亚洲黄色一区二区| 中文字幕欧美人妻精品一区蜜臀| 国产最顶级的黄色片在线免费观看| 亚洲一区在线观看免费| av免费在线播放| 日韩欧美在线中字| 欧美日韩亚洲91| 日韩一级免费视频| 国产在线不卡一区| 欧美日韩一级视频| 国产乱国产乱老熟300部视频| 日韩欧美一二三区| 欧美日韩综合高清一区二区| 欧美成人vr18sexvr| 人妻一区二区三区免费| 伊人网站在线| 久久视频免费看| 亚洲成av人片| 日本黄色一区二区| 欧美日韩在线三级| 中文天堂资源在线| 国产美女主播视频一区| 国产欧美日韩中文字幕在线| 国产在线精品日韩| 国产欧美久久久精品影院| 欧美一级搡bbbb搡bbbb| 在线视频色在线| 亚洲最新永久观看在线| 久久久久久91| 国产三级在线播放| 欧美日韩中文另类| 美女尤物久久精品| 日韩一级网站| 亚洲三级av| 欧美日韩国产首页在线观看| 91精品久久久久久久久| 国产性一级片| 久久精品久久精品国产大片| 婷婷久久综合网| 欧美日韩国产综合久久| 欧洲精品二区| 免费在线播放av| www.av中文字幕| 久久精品网站免费观看| 欧美 日韩 中文字幕| 久久永久免费视频| 黄色片免费看| 在线国产1区| 日韩中文字幕视频在线观看| 91精品国产综合久久久蜜臀粉嫩| 日韩中文字幕视频在线观看| 国产成人日日夜夜| 国产日韩精品电影| 一区二区三区在线免费| 一区二区日韩视频| 欧美三级在线看| 日韩久久在线| 在线观看免费国产成人软件| 中文字幕一区免费| 日韩欧美在线精品| 日韩在线视频免费观看高清中文| 国产欧美综合在线| 日韩一级二级三级精品视频| 国产日韩av一区| 欧美,日韩,国产在线| a视频免费在线观看| 在线国产三级| 欧美三级免费观看| 午夜伊人狠狠久久| 国产在线黄色片| 在线亚洲免费| 国产日韩精品久久久| 国产日韩亚洲欧美| www.三级.com| 欧美日韩亚洲系列| 久久精品国产视频| 中文字幕在线观看国产| 在线一区二区不卡| 亚洲影视资源网| 亚洲第一视频| 中文字幕五月天| 欧美日韩精品不卡| 日韩欧美三级在线| 国产日韩成人精品| 国产一区不卡在线| 国产在线导航| 综合图区亚洲白拍在线| 日韩欧美中文在线视频| 中文字幕无线码一区| 欧美日韩精品欧美日韩精品 | 国产成人中文字幕| 国产欧美日韩不卡| 亚洲成人7777| 欧美中文字幕精品| 在线国产三级| 欧美日韩国产第一页| 亚洲欧美中文字幕在线一区| 91麻豆精品国产91久久久使用方法 | 久久福利视频一区二区| 日韩免费电影网站| 日韩av不卡在线观看| 久久99精品久久久久久青青日本| av免费在线网站| 精品久久在线| 日韩精品中文字幕第1页| 国产一二三精品| 综合激情一区| 午夜少妇久久久久久久久| 精品国产网站在线观看| 国产 中文 字幕 日韩 在线| 中文字幕在线视频网| 国产欧美日韩在线播放| 中文字幕国产视频| 中文字幕欧美日韩| 国产美女主播视频一区| 伊人亚洲视频| 国产视频一二区| 一级日本免费的| 1024国产在线| 欧美在线视频一区二区| 视频一区二区国产| 日韩一二三四区| 精品日韩av一区二区| 日韩三区免费| 国产一区精品在线| 欧美乱大交xxxxx另类| 精品在线91| 中文字幕日韩精品在线| 亚洲综合在线中文字幕| 1区2区3区在线视频| 国产95在线|亚洲| 日韩欧美中文字幕在线观看| 91精品网站| 国产一区久久| 精品综合久久久久| 韩日中文字幕第一页| 精品国产91乱高清在线观看| 亚洲а∨精品天堂在线| 欧美黄页在线免费观看| 亚洲国产一区自拍| 国产欧美三级| 国产三级视频在线播放线观看| 精品日韩视频在线观看| 91精品久久久久久久久久入口| 中文字幕在线播放一区| 精品国产欧美日韩不卡在线观看| 999视频精品| 国产午夜精品视频免费不卡69堂| 国产高清精品二区| 欧美日韩在线中文字幕| 精品一区二区在线观看视频| 亚洲欧美日本另类| www在线播放| 美女免费视频一区| 日韩不卡一二区| 99国产成 人 综合 亚洲欧美| 日韩国产欧美| 91麻豆精品国产91久久久使用方法 | 国产 日韩 欧美 综合| 久艹在线视频| 国产黄在线观看| 国产区日韩欧美| 91精品国产全国免费观看| 一区二区视频在线| 精品久久久三级| 欧美日韩久久不卡| 欧美成人vr18sexvr| 一区二区不卡在线播放| 在线不卡日本| 午夜精品一区二区三区免费视频| 精品久久久精品| 国产欧美中文字幕| 免费看ww视频网站入口| 欧美激情一区二区在线| 精品在线网站观看| 色综合久久88色综合天天免费| 精品视频在线视频| 91精品国产色综合久久不卡蜜臀| 亚洲欧洲日韩精品在线| 1区不卡电影| 日韩欧美在线精品| 日韩亚洲欧美中文在线| 国产99在线|亚洲| 欧美 日韩 国产 在线观看| 日韩一级中文字幕| 亚洲一区在线观看视频| 久久夜色精品国产欧美乱极品| 国产福利三区| 久久精品网站免费观看| 亚洲综合三区| 91精品国产综合久久久久久漫画| 综合图区亚洲白拍在线 | 日韩欧美亚洲日产国| 91精品国产综合久久久久久 | 国产午夜精品视频免费不卡69堂| 在线一区av| 亚洲人线精品午夜| 天天综合日日夜夜精品| 欧美日韩中文字幕精品| 中文字幕在线高清| 亚洲一级特黄| 日韩欧美一二三| 亚洲欧美中文在线视频| 国产欧美久久久| 国内精品露脸在线视频播放| 日韩国产专区| 日韩在线中文视频| 日本xxxwww免费视频| 日韩中文字幕视频在线观看| 欧美日韩成人一区| 精品调教chinesegay| 午夜影院在线观看欧美| 在线视频不卡国产V| 精品视频在线视频| 91精品国产91久久久久青草| 一本大道一区二区三区| www日韩欧美| 欧美人妻一区二区三区| 91久久精品国产91久久| 精品一二三四区| 日韩欧美在线综合网| 国产在线导航| 日韩一级精品| 国产网站av| 亚洲福利在线观看| 一级日韩一级欧美| 欧美日韩在线视频一区| 久久riav| 日韩欧美中文字幕在线观看| a视频免费在线观看| 精品日韩av| 久久视频免费看| 91精品国产综合久久香蕉最新版| 日韩免费不卡avV| 久久久99免费| 91精品国产91久久| 91精品观看| 不卡在线视频| 精品国产99久久久久久| 日韩精品在线视频| 中文字幕日韩精品在线| 中文字幕在线播放一区| 精品不卡一区二区| 日韩精品在线免费观看| 亚洲第一精品在线| 亚洲视频色图| 国产日韩在线亚洲字幕中文| 国产农村妇女精品一二区| 欧美日韩中文字幕在线视频| 国产超级va在线视频| 久艹在线视频| 日韩在线视频观看正片免费网站| 黄色资源在线观看| 91精品在线国产| 国产一区 二区 三区一级| 日韩欧美在线综合网| 亚洲日本欧美日韩高观看| 在线免费视频一区二区| 欧美一级日韩一级| 亚洲免费精品| 日韩精品在线播放| 欧美 日韩 国产 高清| 亚洲欧美伊人| 日韩欧美在线网址| 日韩免费电影网站| 中文字幕国产视频| 91 中文字幕| 日韩欧美一级视频| 92久久精品| 欧美日韩一区二区在线视频| 久久91精品久久久久久秒播| 91精品视频免费在线观看| 午夜亚洲福利| 日韩中文字幕在线视频播放| 1024国产在线| www.精品av.com| 日韩欧美久久| 伊人精品视频| 国产丝袜欧美中文另类| 国产日韩中文在线| 国产视频2区| 77777_亚洲午夜久久多人| 久精品在线观看| 日韩精品乱码av一区二区| 欧美日韩激情一区二区三区| 国产精久久久久| 欧美日韩精品区| 精品一二线国产| 99久久www免费| 日韩欧美成人一区二区三区| 国产主播中文字幕| 亚洲黄页一区| 成片免费观看| 亚洲 欧美综合在线网络| 日韩av中文字幕一区| 日韩专区视频网站| 精品国产乱码久久久久久牛牛| 日韩三级视频中文字幕| 国产午夜在线观看| 精品视频www| 欧美国产日韩综合| av免费观看国产| 91精品国产自产| 欧美亚洲另类制服自拍| 色偷偷一区二区三区| 精品国产网站在线观看| 亚洲三级欧美| 欧美天堂一区二区| 日本a口亚洲| 日韩欧美国产1| 日韩精品视频中文在线观看| 国产第一页在线播放| 91精品国产手机| 日韩欧美亚洲日产国| www.中文字幕在线| 国产 欧美 日韩 在线| 国产黄在线看| www.狠狠| 精品视频123区在线观看| 欧美日韩精品在线观看| 欧美日韩国产大片| 91精品视频国产| 国产一卡2卡3卡免费网站| 精品不卡一区二区| 国产小视频免费在线观看| 伊人国产视频| 欧美成人vr18sexvr| 一区二区三区精品在线观看| 日本精品二区| 成人无遮挡免费网站视频在线观看 | 中文字幕在线看精品乱码| 日韩一级免费视频| 天堂√8在线中文| 欧美日韩久久久| 一区二区不卡久久精品| 久久久久久久久99精品| 一区二区三区在线播放视频| 国产最新在线| 日韩欧美国产1| av免费网站在线| 日韩精品 欧美| 亚洲黄页一区| 欧美日韩在线国产| 伊人www22综合色| 欧美日韩三级在线| av首页在线| 日韩在线不卡一区| 99精品人妻国产毛片|