亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > JS > 正文

基于js Canvas實現二次貝塞爾曲線

2024-05-06 16:47:17
字體:
來源:轉載
供稿:網友

本文實例為大家分享了js Canvas實現二次貝塞爾曲線的具體代碼,供大家參考,具體內容如下

先上效果圖:

js,Canvas,貝塞爾曲線

實現代碼:

<!DOCTYPE html><html><head><meta charset="utf-8"><title>二次貝塞爾曲線</title><meta name="Keywords" content=""><meta name="Description" content=""><style type="text/css"> body, h1{margin:0;} canvas{margin: 20px; }</style></head><body> <h1>二次貝塞爾曲線</h1> <canvas id="canvas" width=600 height=600 style="border: 1px solid #ccc;"></canvas><script> /** * @param sx 起始點x坐標 * @param sy 起始點y坐標 * @param ex 結束點x坐標 * @param ey 結束點y坐標 * @param cx 控制點x坐標 * @param cy 控制點y坐標 * @param part 將起始點到控制點的線段分成的份數,數值越高,計算出的曲線越精確 */ function draw(sx, sy, ex, ey, cx, cy, part) { var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d');  //繪制起始點、控制點、終點  ctx.beginPath(); ctx.moveTo(sx, sy); ctx.lineTo(cx, cy); ctx.lineTo(ex, ey); ctx.stroke();  // 繪制二次貝塞爾曲線 ctx.beginPath(); ctx.moveTo(sx, sy); // 起始點到控制點的x和y每次的增量 var changeX1 = (cx - sx) / part; var changeY1 = (cy - sy) / part; // 控制點到結束點的x和y每次的增量 var changeX2 = (ex - cx) / part; var changeY2 = (ey - cy) / part;  for(var i = 0; i < part; i++) { // 計算兩個動點的坐標 var qx1 = sx + changeX1 * i; var qy1 = sy + changeY1 * i; var qx2 = cx + changeX2 * i; var qy2 = cy + changeY2 * i; // 計算得到此時的一個貝塞爾曲線上的點坐標 var bx = qx1 + (qx2 - qx1) * i / part; var by = qy1 + (qy2 - qy1) * i / part;  ctx.lineTo(bx, by); } ctx.stroke(); }  window.onload = function () { draw(0, 0, 600, 0, 150, 450, 100); };</script></body></html>

上面的是靜態的,來個動態的看一看:

<!DOCTYPE html><html><head><meta charset="utf-8"><title>二次貝塞爾曲線</title><meta name="Keywords" content=""><meta name="Description" content=""><style type="text/css"> body, h1{margin:0;} canvas{margin: 20px; }</style></head><body> <h1>二次貝塞爾曲線</h1> <canvas id="canvas" width=600 height=600 style="border: 1px solid #ccc;"></canvas><script> /** * @param sx 起始點x坐標 * @param sy 起始點y坐標 * @param ex 結束點x坐標 * @param ey 結束點y坐標 * @param cx 控制點x坐標 * @param cy 控制點y坐標 * @param part 將起始點到控制點的線段分成的份數,數值越高,計算出的曲線越精確 * @param interval 畫圖的間隔 * @return function 調用一次就向后畫一段曲線 */ function draw(sx, sy, ex, ey, cx, cy, part, interval) { var canvas = document.getElementById('canvas'); var ctx = canvas.getContext('2d');  //繪制起始點、控制點、終點  ctx.beginPath(); ctx.moveTo(sx, sy); ctx.lineTo(cx, cy); ctx.lineTo(ex, ey); ctx.stroke();  // 繪制二次貝塞爾曲線 ctx.beginPath(); ctx.moveTo(sx, sy); // 起始點到控制點的x和y每次的增量 var changeX1 = (cx - sx) / part; var changeY1 = (cy - sy) / part; // 控制點到結束點的x和y每次的增量 var changeX2 = (ex - cx) / part; var changeY2 = (ey - cy) / part; // 上次的點坐標 var lastX = sx; var lastY = sy;  var i = 0;  return function () { // 計算兩個動點的坐標 var qx1 = sx + changeX1 * i; var qy1 = sy + changeY1 * i; var qx2 = cx + changeX2 * i; var qy2 = cy + changeY2 * i; // 計算得到此時的一個貝塞爾曲線上的點 var bx = qx1 + (qx2 - qx1) * i / part; var by = qy1 + (qy2 - qy1) * i / part; // 從上次的點繼續畫 ctx.beginPath(); ctx.moveTo(lastX, lastY); ctx.lineTo(bx, by); ctx.stroke(); // 保存點坐標 lastX = bx; lastY = by;  i += 1;  if (i < part) { setTimeout(arguments.callee, interval); } } }  window.onload = function () { var display = draw(0, 0, 600, 0, 150, 450, 200, 50); display(); };</script></body></html>

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


注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情精品久久久| 亚洲国产成人爱av在线播放| 97国产精品视频| 在线播放国产一区中文字幕剧情欧美| 91综合免费在线| 亚洲色图18p| 久久久中精品2020中文| 狠狠躁天天躁日日躁欧美| 欧美成人精品影院| 亚洲成人激情视频| 亚洲精品在线视频| 久久精品99国产精品酒店日本| 91亚洲精品久久久久久久久久久久| 亚洲免费视频在线观看| 日韩中文字幕久久| 亚洲男人天堂2019| 国产成人aa精品一区在线播放| 亚洲视频精品在线| 亚洲视频欧美视频| 久久伊人免费视频| 日本一区二区在线免费播放| 欧美激情性做爰免费视频| 中文字幕欧美精品日韩中文字幕| 亚洲精品第一国产综合精品| 国产丝袜精品视频| **欧美日韩vr在线| 久久人人爽人人爽人人片亚洲| 国内免费精品永久在线视频| 欧美激情视频一区二区| 日韩人体视频一二区| 欧美性猛交xxxx黑人猛交| 中文字幕国产亚洲2019| 中文字幕精品av| 日韩电影中文字幕av| 日韩av综合中文字幕| 亚洲综合精品一区二区| 一区二区三区天堂av| 福利一区视频在线观看| 2020欧美日韩在线视频| 在线看国产精品| 91av在线精品| wwwwwwww亚洲| 欧洲成人在线视频| 欧美成人性色生活仑片| 尤物精品国产第一福利三区| 亚洲国产精品一区二区久| 欧美成人中文字幕| 国产成人精品午夜| 日韩精品视频中文在线观看| 久久韩国免费视频| 国产日本欧美一区二区三区在线| 久久久久久有精品国产| 欧美电影在线免费观看网站| 成人黄色激情网| 久久久噜噜噜久噜久久| 精品久久久久久久久久国产| 6080yy精品一区二区三区| 亚洲人午夜精品| 国产成人av在线播放| 日本免费久久高清视频| 亚洲国产精品大全| 亚洲免费视频观看| 日韩综合中文字幕| 久久99精品久久久久久青青91| 国产精品亚洲аv天堂网| 992tv在线成人免费观看| 操人视频在线观看欧美| 亚洲欧美国产精品专区久久| 国产在线98福利播放视频| 自拍偷拍亚洲一区| 91人成网站www| 高跟丝袜一区二区三区| 免费av一区二区| 久久国产精品久久久久久| 一区二区三区日韩在线| 亚洲精品电影网在线观看| 欧美在线激情视频| 日韩大胆人体377p| 欧美国产激情18| 91欧美精品成人综合在线观看| 久久99精品久久久久久青青91| 色偷偷噜噜噜亚洲男人的天堂| 久久久久久久999精品视频| 国产精品网红福利| 一区二区在线免费视频| 亚洲全黄一级网站| 97精品国产aⅴ7777| 欧美丝袜一区二区| 亚洲自拍偷拍福利| 久久久国产影院| 97精品久久久中文字幕免费| 欧美电影免费观看大全| 国产成一区二区| 国产精品入口免费视频一| 欧美日韩在线另类| 亚洲成av人乱码色午夜| 午夜欧美不卡精品aaaaa| 精品无人区太爽高潮在线播放| 日韩视频中文字幕| 国产精品久久久久久久久久东京| 日韩福利在线播放| 国产精品人成电影在线观看| 亚洲精品国产精品乱码不99按摩| 欧美国产日韩一区| 这里只有精品在线播放| 欧美日韩一区二区三区| 国自产精品手机在线观看视频| 成人两性免费视频| 成人激情视频免费在线| 国产欧美日韩中文字幕在线| 黄网动漫久久久| 国产精品午夜视频| 亚洲人a成www在线影院| 久久天天躁狠狠躁夜夜av| 92版电视剧仙鹤神针在线观看| 国产精品高清免费在线观看| 国产精品久久久久久婷婷天堂| 91亚洲va在线va天堂va国| 91产国在线观看动作片喷水| 91在线观看免费高清| 91高清视频免费| 午夜精品一区二区三区视频免费看| 亚洲精品一区二区三区婷婷月| 国内精品久久影院| 日韩精品中文字幕在线播放| 久久久亚洲国产天美传媒修理工| 欧美黑人性猛交| 亚洲国产精品大全| 欧美野外wwwxxx| 亚洲天天在线日亚洲洲精| 中文字幕欧美日韩在线| 欧美在线中文字幕| 国产精品一二区| 97视频在线观看网址| 亚洲电影免费观看高清完整版在线| 中文字幕免费精品一区高清| 在线电影欧美日韩一区二区私密| 精品久久在线播放| 欧美激情中文字幕在线| www国产亚洲精品久久网站| 久久精品电影一区二区| 欧美日韩精品在线视频| 亚洲japanese制服美女| 欧美高清电影在线看| 国产精品美女视频网站| 91在线视频导航| 精品日本高清在线播放| 中文字幕亚洲综合久久| 亚洲区免费影片| 国产成人久久久精品一区| 91av国产在线| 久久免费视频在线| 日韩欧美在线视频| 亚洲福利视频免费观看| 欧美激情videos| 精品久久久久久国产91| 精品五月天久久| 亚洲福利小视频| 色吧影院999| 97久久精品人搡人人玩| 久久久噜噜噜久噜久久| 国产v综合ⅴ日韩v欧美大片| 91精品视频专区| 国内精品视频在线|