p5bezier 0.7.0 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/lib/p5.bezier.min.js +1 -1
- package/lib/p5.bezier.min.js.LICENSE.txt +1 -1
- package/lib/p5.bezier.min.js.map +1 -1
- package/lib/utils.d.ts +2 -0
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -138,7 +138,7 @@ The call of `p5bezier.new` will not draw the curve on canvas automatically. To d
|
|
|
138
138
|
|
|
139
139
|

|
|
140
140
|
|
|
141
|
-
Check out the examples page and their [source code](https://github.com/peilingjiang/p5.bezier/tree/main/examples/
|
|
141
|
+
Check out the [examples page](https://p5bezier.netlify.app) and their [source code](https://github.com/peilingjiang/p5.bezier/tree/main/examples/).
|
|
142
142
|
|
|
143
143
|
### Projects and Demos
|
|
144
144
|
|
package/lib/p5.bezier.min.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
/*! For license information please see p5.bezier.min.js.LICENSE.txt */
|
|
2
|
-
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.initBezier=e():t.initBezier=e()}(this,(()=>(()=>{"use strict";var t={d:(e,n)=>{for(var i in n)t.o(n,i)&&!t.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:n[i]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)},e={};t.d(e,{default:()=>
|
|
2
|
+
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.initBezier=e():t.initBezier=e()}(this,(()=>(()=>{"use strict";var t={d:(e,n)=>{for(var i in n)t.o(n,i)&&!t.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:n[i]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)},e={};t.d(e,{default:()=>P});var n={1:.1,2:.02,3:.001,4:5e-4,5:2e-4},i=[1],o={};function r(t){return i[t]}function s(t,e){return 0===e||e===t?1:o[t][e]}!function(t){for(var e=i.length;e<=t;e++)i[e]=e*i[e-1]}(161),function(t){for(var e=2;e<=t;e++){o[e]={};for(var n=1;n<e;n++)o[e][n]=r(e)/(r(n)*r(e-n))}}(161);var h=function(t,e,n){if(n||2===arguments.length)for(var i,o=0,r=e.length;o<r;o++)!i&&o in e||(i||(i=Array.prototype.slice.call(e,0,o)),i[o]=e[o]);return t.concat(i||Array.prototype.slice.call(e))};function a(t,e){return"WebGLRenderingContext"===t.constructor.name||e?3:2}function c(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=t.length;if(4===n){var i=t[0]-t[2],o=t[1]-t[3];return Math.sqrt(i*i+o*o)}if(6===n){i=t[0]-t[3],o=t[1]-t[4];var r=t[2]-t[5];return Math.sqrt(i*i+o*o+r*r)}return 0}function u(t){t.canvas._doFill&&t.ctx.fill(),t.canvas._doStroke&&t.ctx.stroke()}var l=!1;function p(t){return t<1||t>5||!Number.isInteger(t)?(l||(l=!0,window.console.warn("[p5.bezier] Smoothness should be an integer between 1 and 5")),Math.round(Math.max(1,Math.min(5,t)))):t}var f=function(){function t(t){this.m=Math.pow(2,31)-1,this.a=1103515245,this.c=12345,this.state=t}return t.prototype.r=function(){return this.state=(this.a*this.state+this.c)%this.m,this.state/this.m},t.prototype.next=function(t,e){return Math.floor(this.r()*(e-t+1))+t},t}();function v(t,e){void 0===e&&(e=!1);var n=160-(e?3:0);if(t.length<=n)return d(t);var i=t.length-n,o=new f(1234),r=new Set;return h([],new Array(i),!0).map((function(t,e){for(var i=o.next(5+e,n-5+e);r.has(i);)i=o.next(5+e,n-5+e);r.add(i)})),d(t.filter((function(t,e){return!r.has(e)})))}function d(t){return t.map((function(t){return t.slice()}))}function b(t){var e=t.length;if(0===e)return[];var n=t[0],i=t[e-1];if(1===e)return d([n]);var o=t[1],r=t[e-2];return d([[2*i[0]-r[0],2*i[1]-r[1]],[2*n[0]-o[0],2*n[1]-o[1]],n])}var x=function(t,e,n){if(n||2===arguments.length)for(var i,o=0,r=e.length;o<r;o++)!i&&o in e||(i||(i=Array.prototype.slice.call(e,0,o)),i[o]=e[o]);return t.concat(i||Array.prototype.slice.call(e))};function y(t,e,n,i){for(var o=new Array(i).fill(0),r=1-n,h=0;h<=e;h++)for(var a=s(e,h)*Math.pow(r,e-h)*Math.pow(n,h),c=0;c<i;c++)o[c]+=a*t[h][c];return o}window.console.log("[p5.bezier] ".concat("0.7.1"));var m=function(){function t(t){if(this.b={canvas:null,ctx:null,dimension:2,useP5:!0,beginPath:function(){},moveTo:function(){},lineTo:function(){},closePath:function(){}},this.b.canvas=t,this.b.ctx=this.b.canvas.drawingContext,"undefined"!=typeof p5&&t instanceof p5.Graphics)this.b.useP5=!0,this.b.dimension=a(this.b.ctx,!1);else{if(!("undefined"!=typeof p5&&t instanceof p5.Renderer||t.drawingContext))throw new Error("[p5.bezier] Canvas is not supported");this.b.useP5=!1,"undefined"!=typeof p5&&("undefined"==typeof p5||t instanceof p5.Renderer)||window.console.warn("[p5.bezier] Support beyond p5.js is not tested"),this.b.dimension=a(this.b.ctx,t.isP3D)}var e;(e=this.b).useP5?(e.beginPath=e.canvas.beginShape,e.moveTo=e.canvas.vertex,e.lineTo=e.canvas.vertex,e.closePath=e.canvas.endShape):e.ctx instanceof WebGLRenderingContext?(e.beginPath=function(){},e.moveTo=function(t,n,i){return void 0===i&&(i=0),e.ctx.vertexAttrib3f(0,t,n,i)},e.lineTo=function(t,n,i){return void 0===i&&(i=0),e.ctx.vertexAttrib3f(0,t,n,i)},e.closePath=function(){}):(e.beginPath=e.ctx.beginPath.bind(e.ctx),e.moveTo=e.ctx.moveTo.bind(e.ctx),e.lineTo=e.ctx.lineTo.bind(e.ctx),e.closePath=e.ctx.closePath.bind(e.ctx))}return t.prototype.draw=function(t,e,i){var o,r;if(void 0===e&&(e="OPEN"),void 0===i&&(i=3),t.length<2)throw new Error("[p5.bezier] At least 2 points are needed to draw a curve");var s="CLOSE"===e?x(x([],v(t,!0),!0),b(t),!0):v(t);return this.b.beginPath(),(o=this.b).moveTo.apply(o,s[0]),function(t,e,i){for(var o=e.length-1,r=n[p(i)],s=0;s<=1;s+=r){var h=y(e,o,s,t.dimension);t.lineTo.apply(t,h)}}(this.b,s,i),(r=this.b).lineTo.apply(r,s[s.length-1]),this.b.useP5?this.b.closePath(e):"CLOSE"===e&&this.b.closePath(),u(this.b),s},t.prototype.new=function(t,e,i){void 0===e&&(e="OPEN"),void 0===i&&(i=3);var o=n[p(i)];return new g(t,e,o,this.b)},t}();var g=function(){function t(t,e,n,i,o){var r;void 0===o&&(o=null),this.controlPoints=v(t,"CLOSE"===e),"CLOSE"===e?((r=this.controlPoints).push.apply(r,b(this.controlPoints)),this.closeType="CLOSE"):this.closeType="OPEN",this.dimension=i.dimension,this.increment=n,this.vertexList=[],this.p=this.controlPoints.length,this.n=this.p-1,this.b=i,null===o?this._buildVertexList():this.vertexList=x([],o,!0)}return t.prototype._buildVertexList=function(){this.vertexList=[];for(var t=0;t<=1;t+=this.increment){var e=y(this.controlPoints,this.n,t,this.dimension);this.vertexList.push(e)}return this._addVertex(this.controlPoints[this.controlPoints.length-1]),this.dimension=this.vertexList[0].length,this.vertexList},t.prototype._addVertex=function(t){var e;(e=this.b).lineTo.apply(e,t)},t.prototype._distVertex=function(t,e){return 3===this.dimension&&3===t.length&&3===e.length?c(t[0],t[1],t[2],e[0],e[1],e[2]):2===this.dimension?c(t[0],t[1],e[0],e[1]):0},t.prototype.draw=function(t){t?this._dashedCurve(t):this._solidCurve()},t.prototype._solidCurve=function(){var t=this;this.b.beginPath(),this.vertexList.map((function(e){return t._addVertex(e)})),"CLOSE"===this.closeType&&this.b.closePath(),this.b.useP5?this.b.closePath(this.closeType):"CLOSE"===this.closeType&&this.b.closePath(),u(this.b)},t.prototype._dashedCurve=function(t){var e,n,i,o,r;this.increment>.001&&(this.increment=.001,window.console.warn("[p5.bezier] Smoothness set to 3 for a dashed curve"));var s,h,a,c,l,p=t.map(Math.abs),f=p[0],v=p[1],d=!0,b=this.vertexList[0],x=1,y=b,m=0,g=f;for(this.b.ctx.save(),this.b.ctx.fillStyle="rgba(0, 0, 0, 0)",this.b.beginPath(),(e=this.b).moveTo.apply(e,b);x<this.vertexList.length;){var P=this.vertexList[x];for(m=this._distVertex(b,P);m>=g;)h=P,a=g/m,c=void 0,l=void 0,c=(s=y).length,l=h.length,y=2===c&&2===l?[s[0]+(h[0]-s[0])*a,s[1]+(h[1]-s[1])*a]:3===c&&3===l?[s[0]+(h[0]-s[0])*a,s[1]+(h[1]-s[1])*a,s[2]+(h[2]-s[2])*a]:h,d?(n=this.b).lineTo.apply(n,y):(i=this.b).moveTo.apply(i,y),m-=g,g=(d=!d)?f:v;d?(o=this.b).lineTo.apply(o,P):(r=this.b).moveTo.apply(r,P),g-=this._distVertex(y,P),y=b=P,x++}u(this.b),this.b.ctx.restore()},t.prototype.update=function(t){if(t.length!==this.controlPoints.length)throw new Error("[p5.bezier] The number of control points changed");this.controlPoints.every((function(e,n){return e===t[n]}))||(this.controlPoints=t,this._buildVertexList())},t.prototype.move=function(e,n,i,o,r){if(void 0===i&&(i=null),void 0===o&&(o=!0),null===i&&3===this.dimension)throw new Error("[p5.bezier] X, Y, and Z are needed to move a 3D curve");var s=[e,n];null!==i&&s.push(i);var h=this.vertexList.map((function(t){return t.slice()})),a=new t(this.controlPoints,this.closeType,this.increment,this.b,h);return a.vertexList=a.vertexList.map((function(t){return t.map((function(t,e){return t+s[e]}))})),o&&a.draw(r),a},t.prototype.shortest=function(t,e,n){var i=this;void 0===n&&(n=0);var o=[0,0,0],r=Number.POSITIVE_INFINITY;return this.vertexList.map((function(s){var h=i._distVertex(s,[t,e,n]);r>h&&(r=h,o=x([],s,!0))})),o},t}();const P=function(t){return new m(t)};return e=e.default})()));
|
|
3
3
|
//# sourceMappingURL=p5.bezier.min.js.map
|
package/lib/p5.bezier.min.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"p5.bezier.min.js","mappings":";CAAA,SAA2CA,EAAMC,GAC1B,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,IACQ,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,GACe,iBAAZC,QACdA,QAAoB,WAAID,IAExBD,EAAiB,WAAIC,GACtB,CATD,CASGK,MAAM,IACT,mBCTA,IAAIC,EAAsB,CCA1BA,EAAwB,CAACL,EAASM,KACjC,IAAI,IAAIC,KAAOD,EACXD,EAAoBG,EAAEF,EAAYC,KAASF,EAAoBG,EAAER,EAASO,IAC5EE,OAAOC,eAAeV,EAASO,EAAK,CAAEI,YAAY,EAAMC,IAAKN,EAAWC,IAE1E,ECNDF,EAAwB,CAACQ,EAAKC,IAAUL,OAAOM,UAAUC,eAAeC,KAAKJ,EAAKC,gCCA3E,IACII,EAAc,CACrB,EAAG,GACH,EAAG,IACH,EAAG,KACH,EAAG,KACH,EAAG,MAEHC,EAAwB,CAAC,GACzBC,EAAwB,CAAC,EAO7B,SAASC,EAAGC,GACR,OAAOH,EAAsBG,EACjC,CAUO,SAASC,EAAqBC,EAAGF,GACpC,OAAU,IAANA,GAAWA,IAAME,EACV,EACJJ,EAAsBI,GAAGF,EACpC,EArBA,SAAkCE,GAE9B,IADA,IACSF,EADKH,EAAsBM,OACdH,GAAKE,EAAGF,IAC1BH,EAAsBG,GAAKA,EAAIH,EAAsBG,EAAI,EACjE,CAmBAI,CAAyBC,KAdzB,SAA4CC,GACxC,IAAK,IAAIJ,EAAI,EAAGA,GAAKI,EAAIJ,IAAK,CAC1BJ,EAAsBI,GAAK,CAAC,EAC5B,IAAK,IAAIF,EAAI,EAAGA,EAAIE,EAAGF,IACnBF,EAAsBI,GAAGF,GAAKD,EAAGG,IAAMH,EAAGC,GAAKD,EAAGG,EAAIF,GAE9D,CACJ,CAQAO,CAAmCF,KCnCnC,IAAIG,EAAgD,SAAUC,EAAIC,EAAMC,GACpE,GAAIA,GAA6B,IAArBC,UAAUT,OAAc,IAAK,IAA4BU,EAAxBb,EAAI,EAAGc,EAAIJ,EAAKP,OAAYH,EAAIc,EAAGd,KACxEa,GAAQb,KAAKU,IACRG,IAAIA,EAAKE,MAAMtB,UAAUuB,MAAMrB,KAAKe,EAAM,EAAGV,IAClDa,EAAGb,GAAKU,EAAKV,IAGrB,OAAOS,EAAGQ,OAAOJ,GAAME,MAAMtB,UAAUuB,MAAMrB,KAAKe,GACtD,EAEO,SAASQ,EAEhBC,EAASC,GACL,MAAoC,0BAA7BD,EAAQE,YAAYC,MAAoCF,EAAQ,EAAI,CAC/E,CA6BO,SAASG,IAEZ,IADA,IAAIC,EAAO,GACFC,EAAK,EAAGA,EAAKb,UAAUT,OAAQsB,IACpCD,EAAKC,GAAMb,UAAUa,GAEzB,IAAIC,EAAMF,EAAKrB,OACf,GAAY,IAARuB,EAAW,CACX,IAAIC,EAAKH,EAAK,GAAKA,EAAK,GACpBI,EAAKJ,EAAK,GAAKA,EAAK,GACxB,OAAOK,KAAKC,KAAKH,EAAKA,EAAKC,EAAKA,EACpC,CACA,GAAY,IAARF,EAAW,CACPC,EAAKH,EAAK,GAAKA,EAAK,GACpBI,EAAKJ,EAAK,GAAKA,EAAK,GADxB,IAEIO,EAAKP,EAAK,GAAKA,EAAK,GACxB,OAAOK,KAAKC,KAAKH,EAAKA,EAAKC,EAAKA,EAAKG,EAAKA,EAC9C,CACA,OAAO,CACX,CACO,SAASC,EAAWC,GACnBA,EAAEC,OAAOC,SACTF,EAAEG,IAAIC,OACNJ,EAAEC,OAAOI,WACTL,EAAEG,IAAIG,QACd,CAEA,IAAIC,EAA4B,WAC5B,SAASA,EAAWC,GAChB3D,KAAK4D,EAAIb,KAAKc,IAAI,EAAG,IAAM,EAC3B7D,KAAK8D,EAAI,WACT9D,KAAK+D,EAAI,MACT/D,KAAKgE,MAAQL,CACjB,CAQA,OAPAD,EAAW/C,UAAUsD,EAAI,WAErB,OADAjE,KAAKgE,OAAShE,KAAK8D,EAAI9D,KAAKgE,MAAQhE,KAAK+D,GAAK/D,KAAK4D,EAC5C5D,KAAKgE,MAAQhE,KAAK4D,CAC7B,EACAF,EAAW/C,UAAUuD,KAAO,SAAUC,EAAKC,GACvC,OAAOrB,KAAKsB,MAAMrE,KAAKiE,KAAOG,EAAMD,EAAM,IAAMA,CACpD,EACOT,CACX,CAf+B,GAiBxB,SAASY,EAAaC,EAAWC,QACtB,IAAVA,IAAoBA,GAAQ,GAChC,IACIC,EDzFgB,KCwFTD,EAAQ,EAAI,GAEvB,GAAID,EAAUlD,QAAUoD,EACpB,OAAOC,EAAMH,GACjB,IAAII,EAAeJ,EAAUlD,OAASoD,EAClCG,EAAM,IAAIlB,EARP,MASHmB,EAAU,IAAIC,IAQlB,OAPApD,EAAc,GAAI,IAAIO,MAAM0C,IAAe,GAAMI,KAAI,SAAUC,EAAGC,GAE9D,IADA,IAAIhB,EAAIW,EAAIV,KAAK,EAAIe,EAAKR,EAAQ,EAAIQ,GAC/BJ,EAAQK,IAAIjB,IACfA,EAAIW,EAAIV,KAAK,EAAIe,EAAKR,EAAQ,EAAIQ,GAEtCJ,EAAQM,IAAIlB,EAChB,IACOS,EAAMH,EAAUa,QAAO,SAAUJ,EAAGK,GAAS,OAAQR,EAAQK,IAAIG,EAAQ,IACpF,CACA,SAASX,EAAMY,GACX,OAAOA,EAAIP,KAAI,SAAUQ,GAAK,OAAOA,EAAErD,OAAS,GACpD,CACO,SAASsD,EAAqBjB,GACjC,IAAI3B,EAAM2B,EAAUlD,OACpB,GAAY,IAARuB,EACA,MAAO,GACX,IAAI6C,EAAQlB,EAAU,GAClBmB,EAAOnB,EAAU3B,EAAM,GAC3B,GAAY,IAARA,EACA,OAAO8B,EAAM,CAACe,IAClB,IAAIE,EAASpB,EAAU,GACnBqB,EAAarB,EAAU3B,EAAM,GACjC,OAAO8B,EAAM,CACT,CAAC,EAAIgB,EAAK,GAAKE,EAAW,GAAI,EAAIF,EAAK,GAAKE,EAAW,IACvD,CAAC,EAAIH,EAAM,GAAKE,EAAO,GAAI,EAAIF,EAAM,GAAKE,EAAO,IACjDF,GAER,CCpHA,IAAI,EAAgD,SAAU9D,EAAIC,EAAMC,GACpE,GAAIA,GAA6B,IAArBC,UAAUT,OAAc,IAAK,IAA4BU,EAAxBb,EAAI,EAAGc,EAAIJ,EAAKP,OAAYH,EAAIc,EAAGd,KACxEa,GAAQb,KAAKU,IACRG,IAAIA,EAAKE,MAAMtB,UAAUuB,MAAMrB,KAAKe,EAAM,EAAGV,IAClDa,EAAGb,GAAKU,EAAKV,IAGrB,OAAOS,EAAGQ,OAAOJ,GAAME,MAAMtB,UAAUuB,MAAMrB,KAAKe,GACtD,EASA,SAASiE,EAActB,EAAWnD,EAAG0E,EAAGC,GAGpC,IAFA,IAAIC,EAAS,IAAI/D,MAAM8D,GAAWxC,KAAK,GACnC0C,EAAY,EAAIH,EACX5E,EAAI,EAAGA,GAAKE,EAAGF,IAEpB,IADA,IAAIgF,EAAc/E,EAAqBC,EAAGF,GAAK6B,KAAKc,IAAIoC,EAAY7E,EAAIF,GAAM6B,KAAKc,IAAIiC,EAAG5E,GACjFiF,EAAI,EAAGA,EAAIJ,EAAWI,IAC3BH,EAAOG,IAAMD,EAAc3B,EAAUrD,GAAGiF,GAEhD,OAAOH,CACX,CAdAI,OAAOC,QAAQC,IAAI,eAAenE,iBA0BlC,IAAIoE,EAA0B,WAE1B,SAASA,EAASnD,GAad,GAZApD,KAAKmD,EAAI,CACLC,OAAQ,KACRE,IAAK,KACLyC,UAAW,EACXS,OAAO,EACPC,UAAW,WAAc,EACzBC,OAAQ,WAAc,EACtBC,OAAQ,WAAc,EACtBC,UAAW,WAAc,GAE7B5G,KAAKmD,EAAEC,OAASA,EAChBpD,KAAKmD,EAAEG,IAAMtD,KAAKmD,EAAEC,OAAOyD,eACT,oBAAPC,IAAsB1D,aAAkB0D,GAAGC,SAClD/G,KAAKmD,EAAEqD,OAAQ,EACfxG,KAAKmD,EAAE4C,UAAY3D,EAAcpC,KAAKmD,EAAEG,KAAK,OAE5C,MAAmB,oBAAPwD,IAAsB1D,aAAkB0D,GAAGE,UACxD5D,EAAOyD,gBAQP,MAAM,IAAII,MAAM,uCAPhBjH,KAAKmD,EAAEqD,OAAQ,EACG,oBAAPM,KACQ,oBAAPA,IAAwB1D,aAAkB0D,GAAGE,WACrDZ,OAAOC,QAAQa,KAAK,kDACxBlH,KAAKmD,EAAE4C,UAAY3D,EAAcpC,KAAKmD,EAAEG,IAAKF,EAAOd,MAGE,CDzD3D,IAAyBa,KC0DRnD,KAAKmD,GDzDnBqD,OACFrD,EAAEsD,UAAYtD,EAAEC,OAAO+D,WACvBhE,EAAEuD,OAASvD,EAAEC,OAAO4C,OACpB7C,EAAEwD,OAASxD,EAAEC,OAAO4C,OACpB7C,EAAEyD,UAAYzD,EAAEC,OAAOgE,UAGnBjE,EAAEG,eAAe+D,uBACjBlE,EAAEsD,UAAY,WAAc,EAC5BtD,EAAEuD,OAAS,SAAUY,EAAGC,EAAGC,GAEvB,YADU,IAANA,IAAgBA,EAAI,GACjBrE,EAAEG,IAAImE,eAAe,EAAGH,EAAGC,EAAGC,EACzC,EACArE,EAAEwD,OAAS,SAAUW,EAAGC,EAAGC,GAEvB,YADU,IAANA,IAAgBA,EAAI,GACjBrE,EAAEG,IAAImE,eAAe,EAAGH,EAAGC,EAAGC,EACzC,EACArE,EAAEyD,UAAY,WAAc,IAG5BzD,EAAEsD,UAAYtD,EAAEG,IAAImD,UAAUiB,KAAKvE,EAAEG,KACrCH,EAAEuD,OAASvD,EAAEG,IAAIoD,OAAOgB,KAAKvE,EAAEG,KAC/BH,EAAEwD,OAASxD,EAAEG,IAAIqD,OAAOe,KAAKvE,EAAEG,KAC/BH,EAAEyD,UAAYzD,EAAEG,IAAIsD,UAAUc,KAAKvE,EAAEG,KCmC7C,CAwBA,OAvBAiD,EAAS5F,UAAUgH,KAAO,SAAUpD,EAAWqD,EAAWC,GACtD,IAAIC,EAAIC,OACU,IAAdH,IAAwBA,EAAY,aACrB,IAAfC,IAAyBA,EAAa,GAC1C,IAAIG,EAAoB,UAAdJ,EACJ,EAAc,EAAc,GAAItD,EAAaC,GAAW,IAAO,GAAOiB,EAAqBjB,IAAY,GAAQD,EAAaC,GAUlI,OATAvE,KAAKmD,EAAEsD,aACNqB,EAAK9H,KAAKmD,GAAGuD,OAAOuB,MAAMH,EAAIE,EAAI,IAjD3C,SAA0BE,EAAc3D,EAAWsD,GAG/C,IAFA,IAAIzG,EAAImD,EAAUlD,OAAS,EACvB8G,EAAYrH,EAAY+G,GACnB/B,EAAI,EAAGA,GAAK,EAAGA,GAAKqC,EAAW,CACpC,IAAI5C,EAAIM,EAActB,EAAWnD,EAAG0E,EAAGoC,EAAanC,WACpDmC,EAAavB,OAAOsB,MAAMC,EAAc3C,EAC5C,CACJ,CA2CQ6C,CAAiBpI,KAAKmD,EAAG6E,EAAKH,IAC7BE,EAAK/H,KAAKmD,GAAGwD,OAAOsB,MAAMF,EAAIC,EAAIA,EAAI3G,OAAS,IAC5CrB,KAAKmD,EAAEqD,MACPxG,KAAKmD,EAAEyD,UAAUgB,GACE,UAAdA,GACL5H,KAAKmD,EAAEyD,YACX1D,EAAWlD,KAAKmD,GACT6E,CACX,EACAzB,EAAS5F,UAAU0H,IAAM,SAAU9D,EAAWqD,EAAWC,GAIrD,YAHkB,IAAdD,IAAwBA,EAAY,aACrB,IAAfC,IAAyBA,EAAa,GAEnC,IAAIS,EAAY/D,EAAWqD,EADlB9G,EAAY+G,GAC4B7H,KAAKmD,EACjE,EACOoD,CACX,CAvD6B,GA6D7B,IAAI+B,EAA6B,WAC7B,SAASA,EAAYC,EAAQX,EAAWO,EAAWD,EAAcM,GAC7D,IAAIV,OACe,IAAfU,IAAyBA,EAAa,MAC1CxI,KAAKyI,cAAgBnE,EAAaiE,EAAsB,UAAdX,GACxB,UAAdA,IACCE,EAAK9H,KAAKyI,eAAeC,KAAKT,MAAMH,EAAItC,EAAqBxF,KAAKyI,gBACnEzI,KAAK4H,UAAY,SAGjB5H,KAAK4H,UAAY,OACrB5H,KAAK+F,UAAYmC,EAAanC,UAC9B/F,KAAKmI,UAAYA,EACjBnI,KAAKwI,WAAa,GAClBxI,KAAK2I,EAAI3I,KAAKyI,cAAcpH,OAC5BrB,KAAKoB,EAAIpB,KAAK2I,EAAI,EAClB3I,KAAKmD,EAAI+E,EACU,OAAfM,EACAxI,KAAK4I,mBAEL5I,KAAKwI,WAAa,EAAc,GAAIA,GAAY,EACxD,CAuHA,OAtHAF,EAAY3H,UAAUiI,iBAAmB,WACrC5I,KAAKwI,WAAa,GAClB,IAAK,IAAI1C,EAAI,EAAGA,GAAK,EAAGA,GAAK9F,KAAKmI,UAAW,CACzC,IAAI5C,EAAIM,EAAc7F,KAAKyI,cAAezI,KAAKoB,EAAG0E,EAAG9F,KAAK+F,WAC1D/F,KAAKwI,WAAWE,KAAKnD,EACzB,CAGA,OAFAvF,KAAK6I,WAAW7I,KAAKyI,cAAczI,KAAKyI,cAAcpH,OAAS,IAC/DrB,KAAK+F,UAAY/F,KAAKwI,WAAW,GAAGnH,OAC7BrB,KAAKwI,UAChB,EACAF,EAAY3H,UAAUkI,WAAa,SAAUC,GACzC,IAAIhB,GACHA,EAAK9H,KAAKmD,GAAGwD,OAAOsB,MAAMH,EAAIgB,EACnC,EACAR,EAAY3H,UAAUoI,YAAc,SAAUC,EAASC,GACnD,OAA0B,IAAnBjJ,KAAK+F,WAAsC,IAAnBiD,EAAQ3H,QAAmC,IAAnB4H,EAAQ5H,OACzDoB,EAAMuG,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIC,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,IACvD,IAAnBjJ,KAAK+F,UACDtD,EAAMuG,EAAQ,GAAIA,EAAQ,GAAIC,EAAQ,GAAIA,EAAQ,IAClD,CACd,EACAX,EAAY3H,UAAUgH,KAAO,SAAUuB,GAC9BA,EAIDlJ,KAAKmJ,aAAaD,GAHlBlJ,KAAKoJ,aAKb,EACAd,EAAY3H,UAAUyI,YAAc,WAChC,IAAIC,EAAQrJ,KACZA,KAAKmD,EAAEsD,YACPzG,KAAKwI,WAAWzD,KAAI,SAAUQ,GAAK,OAAO8D,EAAMR,WAAWtD,EAAI,IACxC,UAAnBvF,KAAK4H,WACL5H,KAAKmD,EAAEyD,YACP5G,KAAKmD,EAAEqD,MACPxG,KAAKmD,EAAEyD,UAAU5G,KAAK4H,WACE,UAAnB5H,KAAK4H,WACV5H,KAAKmD,EAAEyD,YACX1D,EAAWlD,KAAKmD,EACpB,EACAmF,EAAY3H,UAAUwI,aAAe,SAAUD,GAC3C,IAAIpB,EAAIC,EAAIuB,EAAIC,EAAIC,EAChBxJ,KAAKmI,UAAY,OACjBnI,KAAKmI,UAAY,KACjB/B,OAAOC,QAAQa,KAAK,uDAExB,IDnD2BuC,EAAIC,EAAI5D,EACnC6D,EACAC,ECiDI3I,EAAKiI,EAAKnE,IAAIhC,KAAK8G,KAAMC,EAAY7I,EAAG,GAAI8I,EAAU9I,EAAG,GACzD+I,GAAQ,EACRC,EAAajK,KAAKwI,WAAW,GAC7B0B,EAAiB,EACjBC,EAAuBF,EACvBG,EAAgB,EAChBC,EAAaP,EAKjB,IAJA9J,KAAKmD,EAAEG,IAAIgH,OACXtK,KAAKmD,EAAEG,IAAIiH,UAAY,mBACvBvK,KAAKmD,EAAEsD,aACNqB,EAAK9H,KAAKmD,GAAGuD,OAAOuB,MAAMH,EAAImC,GACxBC,EAAiBlK,KAAKwI,WAAWnH,QAAQ,CAC5C,IAAImJ,EAAcxK,KAAKwI,WAAW0B,GAElC,IADAE,EAAgBpK,KAAK+I,YAAYkB,EAAYO,GACtCJ,GAAiBC,GDjEGX,ECkEyCc,EDlErC1E,ECkEkDuE,EAAaD,EDjElGT,SACAC,SADAD,GAD2BF,ECkEuBU,GDjExC9I,OACVuI,EAAOF,EAAGrI,OCgEF8I,ED/DC,IAATR,GAAuB,IAATC,EACP,CAACH,EAAG,IAAMC,EAAG,GAAKD,EAAG,IAAM3D,EAAG2D,EAAG,IAAMC,EAAG,GAAKD,EAAG,IAAM3D,GAEtD,IAAT6D,GAAuB,IAATC,EACP,CACHH,EAAG,IAAMC,EAAG,GAAKD,EAAG,IAAM3D,EAC1B2D,EAAG,IAAMC,EAAG,GAAKD,EAAG,IAAM3D,EAC1B2D,EAAG,IAAMC,EAAG,GAAKD,EAAG,IAAM3D,GAG3B4D,ECsDKM,GACOjC,EAAK/H,KAAKmD,GAAGwD,OAAOsB,MAAMF,EAAIoC,IAAyBb,EAAKtJ,KAAKmD,GAAGuD,OAAOuB,MAAMqB,EAAIa,GAC5FC,GAAiBC,EAEjBA,GADAL,GAASA,GACYF,EAAYC,EAErCC,GAAST,EAAKvJ,KAAKmD,GAAGwD,OAAOsB,MAAMsB,EAAIiB,IAAgBhB,EAAKxJ,KAAKmD,GAAGuD,OAAOuB,MAAMuB,EAAIgB,GACrFH,GAAcrK,KAAK+I,YAAYoB,EAAsBK,GAErDL,EADAF,EAAaO,EAEbN,GACJ,CACAhH,EAAWlD,KAAKmD,GAChBnD,KAAKmD,EAAEG,IAAImH,SACf,EACAnC,EAAY3H,UAAU+J,OAAS,SAAUC,GACrC,GAAIA,EAAoBtJ,SAAWrB,KAAKyI,cAAcpH,OAClD,MAAM,IAAI4F,MAAM,oDAEhBjH,KAAKyI,cAAcmC,OAAM,SAAUrF,EAAGrE,GAAK,OAAOqE,IAAMoF,EAAoBzJ,EAAI,MAGpFlB,KAAKyI,cAAgBkC,EACrB3K,KAAK4I,mBACT,EACAN,EAAY3H,UAAUkK,KAAO,SAAUvD,EAAGC,EAAGC,EAAGsD,EAAQ5B,GAGpD,QAFU,IAAN1B,IAAgBA,EAAI,WACT,IAAXsD,IAAqBA,GAAS,GACxB,OAANtD,GAAiC,IAAnBxH,KAAK+F,UACnB,MAAM,IAAIkB,MAAM,yDAEpB,IAAI8D,EAAS,CAACzD,EAAGC,GACP,OAANC,GACAuD,EAAOrC,KAAKlB,GAChB,IAAIwD,EAAYhL,KAAKwI,WAAWzD,KAAI,SAAUQ,GAAK,OAAOA,EAAErD,OAAS,IACjE+I,EAAc,IAAI3C,EAAYtI,KAAKyI,cAAezI,KAAK4H,UAAW5H,KAAKmI,UAAWnI,KAAKmD,EAAG6H,GAI9F,OAHAC,EAAYzC,WAAayC,EAAYzC,WAAWzD,KAAI,SAAUQ,GAAK,OAAOA,EAAER,KAAI,SAAUmG,EAAKhK,GAAK,OAAOgK,EAAMH,EAAO7J,EAAI,GAAI,IAC5H4J,GACAG,EAAYtD,KAAKuB,GACd+B,CACX,EACA3C,EAAY3H,UAAUwK,SAAW,SAAUC,EAAIC,EAAIC,GAC/C,IAAIjC,EAAQrJ,UACD,IAAPsL,IAAiBA,EAAK,GAC1B,IAAIC,EAAY,CAAC,EAAG,EAAG,GACnBC,EAAOC,OAAOC,kBAQlB,OAPA1L,KAAKwI,WAAWzD,KAAI,SAAUQ,GAC1B,IAAIoG,EAAStC,EAAMN,YAAYxD,EAAG,CAAC6F,EAAIC,EAAIC,IACvCE,EAAOG,IACPH,EAAOG,EACPJ,EAAY,EAAc,GAAIhG,GAAG,GAEzC,IACOgG,CACX,EACOjD,CACX,CA7IgC,GA8IhC,QAlJA,SAAoBlF,GAChB,OAAO,IAAImD,EAASnD,EACxB,sBN7FA","sources":["webpack://initBezier/webpack/universalModuleDefinition","webpack://initBezier/webpack/bootstrap","webpack://initBezier/webpack/runtime/define property getters","webpack://initBezier/webpack/runtime/hasOwnProperty shorthand","webpack://initBezier/./src/coefficients.ts","webpack://initBezier/./src/utils.ts","webpack://initBezier/./src/p5.bezier.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"initBezier\"] = factory();\n\telse\n\t\troot[\"initBezier\"] = factory();\n})(this, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","export var MAX_DEGREE = 160;\nexport var _smoothness = {\n 1: 0.1,\n 2: 0.02,\n 3: 0.001,\n 4: 0.0005,\n 5: 0.0002,\n};\nvar _calculatedFactorials = [1];\nvar _binomialCoefficients = {};\n/* -------------------------------------------------------------------------- */\nfunction _helper_ensureFactorials(n) {\n var prevLen = _calculatedFactorials.length;\n for (var i = prevLen; i <= n; i++)\n _calculatedFactorials[i] = i * _calculatedFactorials[i - 1];\n}\nfunction _f(i) {\n return _calculatedFactorials[i];\n}\n/* -------------------------------------------------------------------------- */\nfunction _helper_ensureBinomialCoefficients(_n) {\n for (var n = 2; n <= _n; n++) {\n _binomialCoefficients[n] = {};\n for (var i = 1; i < n; i++) {\n _binomialCoefficients[n][i] = _f(n) / (_f(i) * _f(n - i));\n }\n }\n}\nexport function _binomialCoefficient(n, i) {\n if (i === 0 || i === n)\n return 1;\n return _binomialCoefficients[n][i];\n}\n/* -------------------------------------------------------------------------- */\n_helper_ensureFactorials(MAX_DEGREE + 1);\n_helper_ensureBinomialCoefficients(MAX_DEGREE + 1);\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { MAX_DEGREE } from './coefficients';\nexport function _getDimension(\n// biome-ignore lint/suspicious/noExplicitAny: p5 typing\ncontext, isP3D) {\n return context.constructor.name === 'WebGLRenderingContext' || isP3D ? 3 : 2;\n}\nexport function _getCanvasUtils(b) {\n if (b.useP5) {\n b.beginPath = b.canvas.beginShape;\n b.moveTo = b.canvas.vertex;\n b.lineTo = b.canvas.vertex;\n b.closePath = b.canvas.endShape;\n }\n else {\n if (b.ctx instanceof WebGLRenderingContext) {\n b.beginPath = function () { };\n b.moveTo = function (x, y, z) {\n if (z === void 0) { z = 0; }\n return b.ctx.vertexAttrib3f(0, x, y, z);\n };\n b.lineTo = function (x, y, z) {\n if (z === void 0) { z = 0; }\n return b.ctx.vertexAttrib3f(0, x, y, z);\n };\n b.closePath = function () { };\n }\n else {\n b.beginPath = b.ctx.beginPath.bind(b.ctx);\n b.moveTo = b.ctx.moveTo.bind(b.ctx);\n b.lineTo = b.ctx.lineTo.bind(b.ctx);\n b.closePath = b.ctx.closePath.bind(b.ctx);\n }\n }\n}\nexport function _dist() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var len = args.length;\n if (len === 4) {\n var dx = args[0] - args[2];\n var dy = args[1] - args[3];\n return Math.sqrt(dx * dx + dy * dy);\n }\n if (len === 6) {\n var dx = args[0] - args[3];\n var dy = args[1] - args[4];\n var dz = args[2] - args[5];\n return Math.sqrt(dx * dx + dy * dy + dz * dz);\n }\n return 0;\n}\nexport function _setStyles(b) {\n if (b.canvas._doFill)\n b.ctx.fill();\n if (b.canvas._doStroke)\n b.ctx.stroke();\n}\n/* -------------------------------------------------------------------------- */\nvar SeedRandom = /** @class */ (function () {\n function SeedRandom(seed) {\n this.m = Math.pow(2, 31) - 1;\n this.a = 1103515245;\n this.c = 12345;\n this.state = seed;\n }\n SeedRandom.prototype.r = function () {\n this.state = (this.a * this.state + this.c) % this.m;\n return this.state / this.m;\n };\n SeedRandom.prototype.next = function (min, max) {\n return Math.floor(this.r() * (max - min + 1)) + min;\n };\n return SeedRandom;\n}());\nvar seed = 1234;\nexport function _concentrate(pointList, close) {\n if (close === void 0) { close = false; }\n var save = close ? 3 : 0;\n var limit = MAX_DEGREE - save;\n if (pointList.length <= limit)\n return _copy(pointList);\n var excessPoints = pointList.length - limit;\n var rng = new SeedRandom(seed);\n var rmIndex = new Set();\n __spreadArray([], new Array(excessPoints), true).map(function (_, ind) {\n var r = rng.next(5 + ind, limit - 5 + ind);\n while (rmIndex.has(r)) {\n r = rng.next(5 + ind, limit - 5 + ind);\n }\n rmIndex.add(r);\n });\n return _copy(pointList.filter(function (_, index) { return !rmIndex.has(index); }));\n}\nfunction _copy(arr) {\n return arr.map(function (v) { return v.slice(); });\n}\nexport function _getCloseCurvePoints(pointList) {\n var len = pointList.length;\n if (len === 0)\n return [];\n var first = pointList[0];\n var last = pointList[len - 1];\n if (len === 1)\n return _copy([first]);\n var second = pointList[1];\n var secondLast = pointList[len - 2];\n return _copy([\n [2 * last[0] - secondLast[0], 2 * last[1] - secondLast[1]],\n [2 * first[0] - second[0], 2 * first[1] - second[1]],\n first,\n ]);\n}\nexport function _interpolateVertex(v1, v2, t) {\n var len1 = v1.length;\n var len2 = v2.length;\n if (len1 === 2 && len2 === 2) {\n return [v1[0] + (v2[0] - v1[0]) * t, v1[1] + (v2[1] - v1[1]) * t];\n }\n if (len1 === 3 && len2 === 3) {\n return [\n v1[0] + (v2[0] - v1[0]) * t,\n v1[1] + (v2[1] - v1[1]) * t,\n v1[2] + (v2[2] - v1[2]) * t,\n ];\n }\n return v2;\n}\n","/*\np5.bezier library by Peiling Jiang\n2020\n\nupdated Aug 2024\n*/\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport packageJson from '../package.json';\nimport { _binomialCoefficient, _smoothness, } from './coefficients';\nimport { _concentrate, _dist, _getCanvasUtils, _getCloseCurvePoints, _getDimension, _interpolateVertex, _setStyles, } from './utils';\nwindow.console.log(\"[p5.bezier] \".concat(packageJson.version));\n/* -------------------------------------------------------------------------- */\n/* -------------------------------------------------------------------------- */\n/* -------------------------------------------------------------------------- */\n// helpers\nfunction _bezierVertex(pointList, n, t, dimension) {\n var vertex = new Array(dimension).fill(0);\n var oneMinusT = 1 - t;\n for (var i = 0; i <= n; i++) {\n var coefficient = _binomialCoefficient(n, i) * Math.pow(oneMinusT, (n - i)) * Math.pow(t, i);\n for (var d = 0; d < dimension; d++)\n vertex[d] += coefficient * pointList[i][d];\n }\n return vertex;\n}\nfunction _drawBezierCurve(bezierCanvas, pointList, smoothness) {\n var n = pointList.length - 1;\n var increment = _smoothness[smoothness];\n for (var t = 0; t <= 1; t += increment) {\n var v = _bezierVertex(pointList, n, t, bezierCanvas.dimension);\n bezierCanvas.lineTo.apply(bezierCanvas, v);\n }\n}\n/* -------------------------------------------------------------------------- */\n/* -------------------------------------------------------------------------- */\n/* -------------------------------------------------------------------------- */\nvar P5Bezier = /** @class */ (function () {\n // biome-ignore lint/suspicious/noExplicitAny: p5 typing\n function P5Bezier(canvas) {\n this.b = {\n canvas: null,\n ctx: null,\n dimension: 2,\n useP5: true,\n beginPath: function () { },\n moveTo: function () { },\n lineTo: function () { },\n closePath: function () { },\n };\n this.b.canvas = canvas;\n this.b.ctx = this.b.canvas.drawingContext;\n if (typeof p5 !== 'undefined' && canvas instanceof p5.Graphics) {\n this.b.useP5 = true;\n this.b.dimension = _getDimension(this.b.ctx, false);\n }\n else if ((typeof p5 !== 'undefined' && canvas instanceof p5.Renderer) ||\n canvas.drawingContext) {\n this.b.useP5 = false;\n if (typeof p5 === 'undefined' ||\n (typeof p5 !== 'undefined' && !(canvas instanceof p5.Renderer)))\n window.console.warn('[p5.bezier] Support beyond p5.js is not tested');\n this.b.dimension = _getDimension(this.b.ctx, canvas.isP3D);\n }\n else\n throw new Error('[p5.bezier] Canvas is not supported');\n _getCanvasUtils(this.b);\n }\n P5Bezier.prototype.draw = function (pointList, closeType, smoothness) {\n var _a, _b;\n if (closeType === void 0) { closeType = 'OPEN'; }\n if (smoothness === void 0) { smoothness = 3; }\n var _pL = closeType === 'CLOSE'\n ? __spreadArray(__spreadArray([], _concentrate(pointList, true), true), _getCloseCurvePoints(pointList), true) : _concentrate(pointList);\n this.b.beginPath();\n (_a = this.b).moveTo.apply(_a, _pL[0]);\n _drawBezierCurve(this.b, _pL, smoothness);\n (_b = this.b).lineTo.apply(_b, _pL[_pL.length - 1]);\n if (this.b.useP5)\n this.b.closePath(closeType);\n else if (closeType === 'CLOSE')\n this.b.closePath();\n _setStyles(this.b);\n return _pL;\n };\n P5Bezier.prototype.new = function (pointList, closeType, smoothness) {\n if (closeType === void 0) { closeType = 'OPEN'; }\n if (smoothness === void 0) { smoothness = 3; }\n var increment = _smoothness[smoothness];\n return new BezierCurve(pointList, closeType, increment, this.b);\n };\n return P5Bezier;\n}());\n// biome-ignore lint/suspicious/noExplicitAny: p5 typing\nfunction initBezier(canvas) {\n return new P5Bezier(canvas);\n}\n/* -------------------------------------------------------------------------- */\nvar BezierCurve = /** @class */ (function () {\n function BezierCurve(points, closeType, increment, bezierCanvas, vertexList) {\n var _a;\n if (vertexList === void 0) { vertexList = null; }\n this.controlPoints = _concentrate(points, closeType === 'CLOSE');\n if (closeType === 'CLOSE') {\n (_a = this.controlPoints).push.apply(_a, _getCloseCurvePoints(this.controlPoints));\n this.closeType = 'CLOSE';\n }\n else\n this.closeType = 'OPEN';\n this.dimension = bezierCanvas.dimension;\n this.increment = increment;\n this.vertexList = [];\n this.p = this.controlPoints.length; // has p points for (p - 1) degree curves\n this.n = this.p - 1; // degree\n this.b = bezierCanvas;\n if (vertexList === null)\n this._buildVertexList();\n else\n this.vertexList = __spreadArray([], vertexList, true);\n }\n BezierCurve.prototype._buildVertexList = function () {\n this.vertexList = [];\n for (var t = 0; t <= 1; t += this.increment) {\n var v = _bezierVertex(this.controlPoints, this.n, t, this.dimension);\n this.vertexList.push(v);\n }\n this._addVertex(this.controlPoints[this.controlPoints.length - 1]);\n this.dimension = this.vertexList[0].length;\n return this.vertexList;\n };\n BezierCurve.prototype._addVertex = function (vArray) {\n var _a;\n (_a = this.b).lineTo.apply(_a, vArray);\n };\n BezierCurve.prototype._distVertex = function (vArray1, vArray2) {\n return this.dimension === 3 && vArray1.length === 3 && vArray2.length === 3\n ? _dist(vArray1[0], vArray1[1], vArray1[2], vArray2[0], vArray2[1], vArray2[2])\n : this.dimension === 2\n ? _dist(vArray1[0], vArray1[1], vArray2[0], vArray2[1])\n : 0;\n };\n BezierCurve.prototype.draw = function (dash) {\n if (!dash) {\n this._solidCurve();\n }\n else {\n this._dashedCurve(dash);\n }\n };\n BezierCurve.prototype._solidCurve = function () {\n var _this = this;\n this.b.beginPath();\n this.vertexList.map(function (v) { return _this._addVertex(v); });\n if (this.closeType === 'CLOSE')\n this.b.closePath();\n if (this.b.useP5)\n this.b.closePath(this.closeType);\n else if (this.closeType === 'CLOSE')\n this.b.closePath();\n _setStyles(this.b);\n };\n BezierCurve.prototype._dashedCurve = function (dash) {\n var _a, _b, _c, _d, _e;\n if (this.increment > 0.001) {\n this.increment = 0.001;\n window.console.warn('[p5.bezier] Smoothness set to 3 for a dashed curve');\n }\n var _f = dash.map(Math.abs), solidPart = _f[0], gapPart = _f[1];\n var solid = true;\n var lastVertex = this.vertexList[0];\n var toUseVertexInd = 1;\n var currentVirtualVertex = lastVertex;\n var availableDist = 0;\n var neededDist = solidPart;\n this.b.ctx.save();\n this.b.ctx.fillStyle = 'rgba(0, 0, 0, 0)';\n this.b.beginPath();\n (_a = this.b).moveTo.apply(_a, lastVertex);\n while (toUseVertexInd < this.vertexList.length) {\n var toUseVertex = this.vertexList[toUseVertexInd];\n availableDist = this._distVertex(lastVertex, toUseVertex);\n while (availableDist >= neededDist) {\n currentVirtualVertex = _interpolateVertex(currentVirtualVertex, toUseVertex, neededDist / availableDist);\n solid\n ? (_b = this.b).lineTo.apply(_b, currentVirtualVertex) : (_c = this.b).moveTo.apply(_c, currentVirtualVertex);\n availableDist -= neededDist;\n solid = !solid;\n neededDist = solid ? solidPart : gapPart;\n }\n solid ? (_d = this.b).lineTo.apply(_d, toUseVertex) : (_e = this.b).moveTo.apply(_e, toUseVertex);\n neededDist -= this._distVertex(currentVirtualVertex, toUseVertex);\n lastVertex = toUseVertex;\n currentVirtualVertex = lastVertex;\n toUseVertexInd++;\n }\n _setStyles(this.b);\n this.b.ctx.restore();\n };\n BezierCurve.prototype.update = function (newControlPointList) {\n if (newControlPointList.length !== this.controlPoints.length) {\n throw new Error('[p5.bezier] The number of control points changed');\n }\n if (this.controlPoints.every(function (v, i) { return v === newControlPointList[i]; })) {\n return;\n }\n this.controlPoints = newControlPointList;\n this._buildVertexList();\n };\n BezierCurve.prototype.move = function (x, y, z, toDraw, dash) {\n if (z === void 0) { z = null; }\n if (toDraw === void 0) { toDraw = true; }\n if (z === null && this.dimension === 3) {\n throw new Error('[p5.bezier] X, Y, and Z are needed to move a 3D curve');\n }\n var toMove = [x, y];\n if (z !== null)\n toMove.push(z);\n var newCurveV = this.vertexList.map(function (v) { return v.slice(); });\n var newCurveObj = new BezierCurve(this.controlPoints, this.closeType, this.increment, this.b, newCurveV);\n newCurveObj.vertexList = newCurveObj.vertexList.map(function (v) { return v.map(function (val, i) { return val + toMove[i]; }); });\n if (toDraw)\n newCurveObj.draw(dash);\n return newCurveObj;\n };\n BezierCurve.prototype.shortest = function (pX, pY, pZ) {\n var _this = this;\n if (pZ === void 0) { pZ = 0; }\n var minVertex = [0, 0, 0];\n var dMin = Number.POSITIVE_INFINITY;\n this.vertexList.map(function (v) {\n var nowMin = _this._distVertex(v, [pX, pY, pZ]);\n if (dMin > nowMin) {\n dMin = nowMin;\n minVertex = __spreadArray([], v, true);\n }\n });\n return minVertex;\n };\n return BezierCurve;\n}());\nexport default initBezier;\n"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","_smoothness","_calculatedFactorials","_binomialCoefficients","_f","i","_binomialCoefficient","n","length","_helper_ensureFactorials","MAX_DEGREE","_n","_helper_ensureBinomialCoefficients","__spreadArray","to","from","pack","arguments","ar","l","Array","slice","concat","_getDimension","context","isP3D","constructor","name","_dist","args","_i","len","dx","dy","Math","sqrt","dz","_setStyles","b","canvas","_doFill","ctx","fill","_doStroke","stroke","SeedRandom","seed","m","pow","a","c","state","r","next","min","max","floor","_concentrate","pointList","close","limit","_copy","excessPoints","rng","rmIndex","Set","map","_","ind","has","add","filter","index","arr","v","_getCloseCurvePoints","first","last","second","secondLast","_bezierVertex","t","dimension","vertex","oneMinusT","coefficient","d","window","console","log","P5Bezier","useP5","beginPath","moveTo","lineTo","closePath","drawingContext","p5","Graphics","Renderer","Error","warn","beginShape","endShape","WebGLRenderingContext","x","y","z","vertexAttrib3f","bind","draw","closeType","smoothness","_a","_b","_pL","apply","bezierCanvas","increment","_drawBezierCurve","new","BezierCurve","points","vertexList","controlPoints","push","p","_buildVertexList","_addVertex","vArray","_distVertex","vArray1","vArray2","dash","_dashedCurve","_solidCurve","_this","_c","_d","_e","v1","v2","len1","len2","abs","solidPart","gapPart","solid","lastVertex","toUseVertexInd","currentVirtualVertex","availableDist","neededDist","save","fillStyle","toUseVertex","restore","update","newControlPointList","every","move","toDraw","toMove","newCurveV","newCurveObj","val","shortest","pX","pY","pZ","minVertex","dMin","Number","POSITIVE_INFINITY","nowMin"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"p5.bezier.min.js","mappings":"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","sources":["webpack://initBezier/webpack/universalModuleDefinition","webpack://initBezier/webpack/bootstrap","webpack://initBezier/webpack/runtime/define property getters","webpack://initBezier/webpack/runtime/hasOwnProperty shorthand","webpack://initBezier/./src/coefficients.ts","webpack://initBezier/./src/utils.ts","webpack://initBezier/./src/p5.bezier.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"initBezier\"] = factory();\n\telse\n\t\troot[\"initBezier\"] = factory();\n})(this, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","export var MAX_DEGREE = 160;\nexport var _smoothness = {\n 1: 0.1,\n 2: 0.02,\n 3: 0.001,\n 4: 0.0005,\n 5: 0.0002,\n};\nvar _calculatedFactorials = [1];\nvar _binomialCoefficients = {};\n/* -------------------------------------------------------------------------- */\nfunction _helper_ensureFactorials(n) {\n var prevLen = _calculatedFactorials.length;\n for (var i = prevLen; i <= n; i++)\n _calculatedFactorials[i] = i * _calculatedFactorials[i - 1];\n}\nfunction _f(i) {\n return _calculatedFactorials[i];\n}\n/* -------------------------------------------------------------------------- */\nfunction _helper_ensureBinomialCoefficients(_n) {\n for (var n = 2; n <= _n; n++) {\n _binomialCoefficients[n] = {};\n for (var i = 1; i < n; i++) {\n _binomialCoefficients[n][i] = _f(n) / (_f(i) * _f(n - i));\n }\n }\n}\nexport function _binomialCoefficient(n, i) {\n if (i === 0 || i === n)\n return 1;\n return _binomialCoefficients[n][i];\n}\n/* -------------------------------------------------------------------------- */\n_helper_ensureFactorials(MAX_DEGREE + 1);\n_helper_ensureBinomialCoefficients(MAX_DEGREE + 1);\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport { MAX_DEGREE } from './coefficients';\nexport function _getDimension(\n// biome-ignore lint/suspicious/noExplicitAny: p5 typing\ncontext, isP3D) {\n return context.constructor.name === 'WebGLRenderingContext' || isP3D ? 3 : 2;\n}\nexport function _getCanvasUtils(b) {\n if (b.useP5) {\n b.beginPath = b.canvas.beginShape;\n b.moveTo = b.canvas.vertex;\n b.lineTo = b.canvas.vertex;\n b.closePath = b.canvas.endShape;\n }\n else {\n if (b.ctx instanceof WebGLRenderingContext) {\n b.beginPath = function () { };\n b.moveTo = function (x, y, z) {\n if (z === void 0) { z = 0; }\n return b.ctx.vertexAttrib3f(0, x, y, z);\n };\n b.lineTo = function (x, y, z) {\n if (z === void 0) { z = 0; }\n return b.ctx.vertexAttrib3f(0, x, y, z);\n };\n b.closePath = function () { };\n }\n else {\n b.beginPath = b.ctx.beginPath.bind(b.ctx);\n b.moveTo = b.ctx.moveTo.bind(b.ctx);\n b.lineTo = b.ctx.lineTo.bind(b.ctx);\n b.closePath = b.ctx.closePath.bind(b.ctx);\n }\n }\n}\nexport function _dist() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var len = args.length;\n if (len === 4) {\n var dx = args[0] - args[2];\n var dy = args[1] - args[3];\n return Math.sqrt(dx * dx + dy * dy);\n }\n if (len === 6) {\n var dx = args[0] - args[3];\n var dy = args[1] - args[4];\n var dz = args[2] - args[5];\n return Math.sqrt(dx * dx + dy * dy + dz * dz);\n }\n return 0;\n}\nexport function _setStyles(b) {\n if (b.canvas._doFill)\n b.ctx.fill();\n if (b.canvas._doStroke)\n b.ctx.stroke();\n}\nvar warnedSmoothness = false;\nexport function _validateSmoothness(smoothness) {\n if (smoothness < 1 || smoothness > 5 || !Number.isInteger(smoothness)) {\n if (!warnedSmoothness) {\n warnedSmoothness = true;\n window.console.warn('[p5.bezier] Smoothness should be an integer between 1 and 5');\n }\n return Math.round(Math.max(1, Math.min(5, smoothness)));\n }\n return smoothness;\n}\n/* -------------------------------------------------------------------------- */\nvar SeedRandom = /** @class */ (function () {\n function SeedRandom(seed) {\n this.m = Math.pow(2, 31) - 1;\n this.a = 1103515245;\n this.c = 12345;\n this.state = seed;\n }\n SeedRandom.prototype.r = function () {\n this.state = (this.a * this.state + this.c) % this.m;\n return this.state / this.m;\n };\n SeedRandom.prototype.next = function (min, max) {\n return Math.floor(this.r() * (max - min + 1)) + min;\n };\n return SeedRandom;\n}());\nvar seed = 1234;\nexport function _concentrate(pointList, close) {\n if (close === void 0) { close = false; }\n var save = close ? 3 : 0;\n var limit = MAX_DEGREE - save;\n if (pointList.length <= limit)\n return _copy(pointList);\n var excessPoints = pointList.length - limit;\n var rng = new SeedRandom(seed);\n var rmIndex = new Set();\n __spreadArray([], new Array(excessPoints), true).map(function (_, ind) {\n var r = rng.next(5 + ind, limit - 5 + ind);\n while (rmIndex.has(r)) {\n r = rng.next(5 + ind, limit - 5 + ind);\n }\n rmIndex.add(r);\n });\n return _copy(pointList.filter(function (_, index) { return !rmIndex.has(index); }));\n}\nfunction _copy(arr) {\n return arr.map(function (v) { return v.slice(); });\n}\nexport function _getCloseCurvePoints(pointList) {\n var len = pointList.length;\n if (len === 0)\n return [];\n var first = pointList[0];\n var last = pointList[len - 1];\n if (len === 1)\n return _copy([first]);\n var second = pointList[1];\n var secondLast = pointList[len - 2];\n return _copy([\n [2 * last[0] - secondLast[0], 2 * last[1] - secondLast[1]],\n [2 * first[0] - second[0], 2 * first[1] - second[1]],\n first,\n ]);\n}\nexport function _interpolateVertex(v1, v2, t) {\n var len1 = v1.length;\n var len2 = v2.length;\n if (len1 === 2 && len2 === 2) {\n return [v1[0] + (v2[0] - v1[0]) * t, v1[1] + (v2[1] - v1[1]) * t];\n }\n if (len1 === 3 && len2 === 3) {\n return [\n v1[0] + (v2[0] - v1[0]) * t,\n v1[1] + (v2[1] - v1[1]) * t,\n v1[2] + (v2[2] - v1[2]) * t,\n ];\n }\n return v2;\n}\n","/*\np5.bezier library by Peiling Jiang\n2020\n\nupdated Aug 2024\n*/\nvar __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nimport packageJson from '../package.json';\nimport { _binomialCoefficient, _smoothness, } from './coefficients';\nimport { _concentrate, _dist, _getCanvasUtils, _getCloseCurvePoints, _getDimension, _interpolateVertex, _setStyles, _validateSmoothness, } from './utils';\nwindow.console.log(\"[p5.bezier] \".concat(packageJson.version));\n/* -------------------------------------------------------------------------- */\n/* -------------------------------------------------------------------------- */\n/* -------------------------------------------------------------------------- */\n// helpers\nfunction _bezierVertex(pointList, n, t, dimension) {\n var vertex = new Array(dimension).fill(0);\n var oneMinusT = 1 - t;\n for (var i = 0; i <= n; i++) {\n var coefficient = _binomialCoefficient(n, i) * Math.pow(oneMinusT, (n - i)) * Math.pow(t, i);\n for (var d = 0; d < dimension; d++)\n vertex[d] += coefficient * pointList[i][d];\n }\n return vertex;\n}\nfunction _drawBezierCurve(bezierCanvas, pointList, smoothness) {\n var n = pointList.length - 1;\n var increment = _smoothness[_validateSmoothness(smoothness)];\n for (var t = 0; t <= 1; t += increment) {\n var v = _bezierVertex(pointList, n, t, bezierCanvas.dimension);\n bezierCanvas.lineTo.apply(bezierCanvas, v);\n }\n}\n// function _drawBSplineCurve(\n// bezierCanvas: BezierCanvas,\n// pointList: PointList,\n// smoothness: Smoothness,\n// ): void {\n// const increment = _smoothness[_validateSmoothness(smoothness)]\n// const n = pointList.length - 1\n// for (let i = 0; i < n - 2; i++) {\n// const b0 = pointList[i]\n// const b1 = pointList[i + 1]\n// const b2 = pointList[i + 2]\n// const b3 = pointList[i + 3]\n// for (let t = 0; t <= 1; t += increment) {\n// const t2 = t * t\n// const t3 = t2 * t\n// const vertex = bezierCanvas.dimension === 2 ? [0, 0] : [0, 0, 0]\n// for (let d = 0; d < bezierCanvas.dimension; d++) {\n// vertex[d] =\n// (1 / 6) *\n// ((-b0[d] + 3 * b1[d] - 3 * b2[d] + b3[d]) * t3 +\n// (3 * b0[d] - 6 * b1[d] + 3 * b2[d]) * t2 +\n// (-3 * b0[d] + 3 * b2[d]) * t +\n// (b0[d] + 4 * b1[d] + b2[d]))\n// }\n// bezierCanvas.lineTo(vertex[0], vertex[1], vertex[2])\n// }\n// }\n// }\n/* -------------------------------------------------------------------------- */\n/* -------------------------------------------------------------------------- */\n/* -------------------------------------------------------------------------- */\nvar P5Bezier = /** @class */ (function () {\n // biome-ignore lint/suspicious/noExplicitAny: p5 typing\n function P5Bezier(canvas) {\n this.b = {\n canvas: null,\n ctx: null,\n dimension: 2,\n useP5: true,\n beginPath: function () { },\n moveTo: function () { },\n lineTo: function () { },\n closePath: function () { },\n };\n this.b.canvas = canvas;\n this.b.ctx = this.b.canvas.drawingContext;\n if (typeof p5 !== 'undefined' && canvas instanceof p5.Graphics) {\n this.b.useP5 = true;\n this.b.dimension = _getDimension(this.b.ctx, false);\n }\n else if ((typeof p5 !== 'undefined' && canvas instanceof p5.Renderer) ||\n canvas.drawingContext) {\n this.b.useP5 = false;\n if (typeof p5 === 'undefined' ||\n (typeof p5 !== 'undefined' && !(canvas instanceof p5.Renderer)))\n window.console.warn('[p5.bezier] Support beyond p5.js is not tested');\n this.b.dimension = _getDimension(this.b.ctx, canvas.isP3D);\n }\n else\n throw new Error('[p5.bezier] Canvas is not supported');\n _getCanvasUtils(this.b);\n }\n P5Bezier.prototype.draw = function (pointList, closeType, smoothness) {\n var _a, _b;\n if (closeType === void 0) { closeType = 'OPEN'; }\n if (smoothness === void 0) { smoothness = 3; }\n if (pointList.length < 2) {\n throw new Error('[p5.bezier] At least 2 points are needed to draw a curve');\n }\n var _pL = closeType === 'CLOSE'\n ? __spreadArray(__spreadArray([], _concentrate(pointList, true), true), _getCloseCurvePoints(pointList), true) : _concentrate(pointList);\n this.b.beginPath();\n (_a = this.b).moveTo.apply(_a, _pL[0]);\n _drawBezierCurve(this.b, _pL, smoothness);\n (_b = this.b).lineTo.apply(_b, _pL[_pL.length - 1]);\n if (this.b.useP5)\n this.b.closePath(closeType);\n else if (closeType === 'CLOSE')\n this.b.closePath();\n _setStyles(this.b);\n return _pL;\n };\n // bSpline(\n // pointList: PointList,\n // closeType: CloseType = 'OPEN',\n // smoothness: Smoothness = 3,\n // ): PointList {\n // if (pointList.length < 2) {\n // throw new Error(\n // '[p5.bezier] At least 2 points are needed to draw a curve',\n // )\n // }\n // const _pL =\n // closeType === 'CLOSE'\n // ? [...pointList, ...pointList.slice(0, 3)]\n // : pointList\n // this.b.beginPath()\n // // this.b.moveTo(..._pL[0])\n // _drawBSplineCurve(this.b, _pL, smoothness)\n // // this.b.lineTo(..._pL[_pL.length - 1])\n // if (this.b.useP5) {\n // this.b.closePath(closeType)\n // } else if (closeType === 'CLOSE') {\n // this.b.closePath()\n // }\n // _setStyles(this.b)\n // return _pL\n // }\n P5Bezier.prototype.new = function (pointList, closeType, smoothness) {\n if (closeType === void 0) { closeType = 'OPEN'; }\n if (smoothness === void 0) { smoothness = 3; }\n var increment = _smoothness[_validateSmoothness(smoothness)];\n return new BezierCurve(pointList, closeType, increment, this.b);\n };\n return P5Bezier;\n}());\n// biome-ignore lint/suspicious/noExplicitAny: p5 typing\nfunction initBezier(canvas) {\n return new P5Bezier(canvas);\n}\n/* -------------------------------------------------------------------------- */\nvar BezierCurve = /** @class */ (function () {\n function BezierCurve(points, closeType, increment, bezierCanvas, vertexList) {\n var _a;\n if (vertexList === void 0) { vertexList = null; }\n this.controlPoints = _concentrate(points, closeType === 'CLOSE');\n if (closeType === 'CLOSE') {\n (_a = this.controlPoints).push.apply(_a, _getCloseCurvePoints(this.controlPoints));\n this.closeType = 'CLOSE';\n }\n else\n this.closeType = 'OPEN';\n this.dimension = bezierCanvas.dimension;\n this.increment = increment;\n this.vertexList = [];\n this.p = this.controlPoints.length; // has p points for (p - 1) degree curves\n this.n = this.p - 1; // degree\n this.b = bezierCanvas;\n if (vertexList === null)\n this._buildVertexList();\n else\n this.vertexList = __spreadArray([], vertexList, true);\n }\n BezierCurve.prototype._buildVertexList = function () {\n this.vertexList = [];\n for (var t = 0; t <= 1; t += this.increment) {\n var v = _bezierVertex(this.controlPoints, this.n, t, this.dimension);\n this.vertexList.push(v);\n }\n this._addVertex(this.controlPoints[this.controlPoints.length - 1]);\n this.dimension = this.vertexList[0].length;\n return this.vertexList;\n };\n BezierCurve.prototype._addVertex = function (vArray) {\n var _a;\n (_a = this.b).lineTo.apply(_a, vArray);\n };\n BezierCurve.prototype._distVertex = function (vArray1, vArray2) {\n return this.dimension === 3 && vArray1.length === 3 && vArray2.length === 3\n ? _dist(vArray1[0], vArray1[1], vArray1[2], vArray2[0], vArray2[1], vArray2[2])\n : this.dimension === 2\n ? _dist(vArray1[0], vArray1[1], vArray2[0], vArray2[1])\n : 0;\n };\n BezierCurve.prototype.draw = function (dash) {\n if (!dash) {\n this._solidCurve();\n }\n else {\n this._dashedCurve(dash);\n }\n };\n BezierCurve.prototype._solidCurve = function () {\n var _this = this;\n this.b.beginPath();\n this.vertexList.map(function (v) { return _this._addVertex(v); });\n if (this.closeType === 'CLOSE')\n this.b.closePath();\n if (this.b.useP5)\n this.b.closePath(this.closeType);\n else if (this.closeType === 'CLOSE')\n this.b.closePath();\n _setStyles(this.b);\n };\n BezierCurve.prototype._dashedCurve = function (dash) {\n var _a, _b, _c, _d, _e;\n if (this.increment > 0.001) {\n this.increment = 0.001;\n window.console.warn('[p5.bezier] Smoothness set to 3 for a dashed curve');\n }\n var _f = dash.map(Math.abs), solidPart = _f[0], gapPart = _f[1];\n var solid = true;\n var lastVertex = this.vertexList[0];\n var toUseVertexInd = 1;\n var currentVirtualVertex = lastVertex;\n var availableDist = 0;\n var neededDist = solidPart;\n this.b.ctx.save();\n this.b.ctx.fillStyle = 'rgba(0, 0, 0, 0)';\n this.b.beginPath();\n (_a = this.b).moveTo.apply(_a, lastVertex);\n while (toUseVertexInd < this.vertexList.length) {\n var toUseVertex = this.vertexList[toUseVertexInd];\n availableDist = this._distVertex(lastVertex, toUseVertex);\n while (availableDist >= neededDist) {\n currentVirtualVertex = _interpolateVertex(currentVirtualVertex, toUseVertex, neededDist / availableDist);\n solid\n ? (_b = this.b).lineTo.apply(_b, currentVirtualVertex) : (_c = this.b).moveTo.apply(_c, currentVirtualVertex);\n availableDist -= neededDist;\n solid = !solid;\n neededDist = solid ? solidPart : gapPart;\n }\n solid ? (_d = this.b).lineTo.apply(_d, toUseVertex) : (_e = this.b).moveTo.apply(_e, toUseVertex);\n neededDist -= this._distVertex(currentVirtualVertex, toUseVertex);\n lastVertex = toUseVertex;\n currentVirtualVertex = lastVertex;\n toUseVertexInd++;\n }\n _setStyles(this.b);\n this.b.ctx.restore();\n };\n BezierCurve.prototype.update = function (newControlPointList) {\n if (newControlPointList.length !== this.controlPoints.length) {\n throw new Error('[p5.bezier] The number of control points changed');\n }\n if (this.controlPoints.every(function (v, i) { return v === newControlPointList[i]; })) {\n return;\n }\n this.controlPoints = newControlPointList;\n this._buildVertexList();\n };\n BezierCurve.prototype.move = function (x, y, z, toDraw, dash) {\n if (z === void 0) { z = null; }\n if (toDraw === void 0) { toDraw = true; }\n if (z === null && this.dimension === 3) {\n throw new Error('[p5.bezier] X, Y, and Z are needed to move a 3D curve');\n }\n var toMove = [x, y];\n if (z !== null)\n toMove.push(z);\n var newCurveV = this.vertexList.map(function (v) { return v.slice(); });\n var newCurveObj = new BezierCurve(this.controlPoints, this.closeType, this.increment, this.b, newCurveV);\n newCurveObj.vertexList = newCurveObj.vertexList.map(function (v) { return v.map(function (val, i) { return val + toMove[i]; }); });\n if (toDraw)\n newCurveObj.draw(dash);\n return newCurveObj;\n };\n BezierCurve.prototype.shortest = function (pX, pY, pZ) {\n var _this = this;\n if (pZ === void 0) { pZ = 0; }\n var minVertex = [0, 0, 0];\n var dMin = Number.POSITIVE_INFINITY;\n this.vertexList.map(function (v) {\n var nowMin = _this._distVertex(v, [pX, pY, pZ]);\n if (dMin > nowMin) {\n dMin = nowMin;\n minVertex = __spreadArray([], v, true);\n }\n });\n return minVertex;\n };\n return BezierCurve;\n}());\nexport default initBezier;\n"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","_smoothness","_calculatedFactorials","_binomialCoefficients","_f","i","_binomialCoefficient","n","length","_helper_ensureFactorials","MAX_DEGREE","_n","_helper_ensureBinomialCoefficients","__spreadArray","to","from","pack","arguments","ar","l","Array","slice","concat","_getDimension","context","isP3D","constructor","name","_dist","args","_i","len","dx","dy","Math","sqrt","dz","_setStyles","b","canvas","_doFill","ctx","fill","_doStroke","stroke","warnedSmoothness","_validateSmoothness","smoothness","Number","isInteger","window","console","warn","round","max","min","SeedRandom","seed","m","pow","a","c","state","r","next","floor","_concentrate","pointList","close","limit","_copy","excessPoints","rng","rmIndex","Set","map","_","ind","has","add","filter","index","arr","v","_getCloseCurvePoints","first","last","second","secondLast","_bezierVertex","t","dimension","vertex","oneMinusT","coefficient","d","log","P5Bezier","useP5","beginPath","moveTo","lineTo","closePath","drawingContext","p5","Graphics","Renderer","Error","beginShape","endShape","WebGLRenderingContext","x","y","z","vertexAttrib3f","bind","draw","closeType","_a","_b","_pL","apply","bezierCanvas","increment","_drawBezierCurve","new","BezierCurve","points","vertexList","controlPoints","push","p","_buildVertexList","_addVertex","vArray","_distVertex","vArray1","vArray2","dash","_dashedCurve","_solidCurve","_this","_c","_d","_e","v1","v2","len1","len2","abs","solidPart","gapPart","solid","lastVertex","toUseVertexInd","currentVirtualVertex","availableDist","neededDist","save","fillStyle","toUseVertex","restore","update","newControlPointList","every","move","toDraw","toMove","newCurveV","newCurveObj","val","shortest","pX","pY","pZ","minVertex","dMin","POSITIVE_INFINITY","nowMin"],"sourceRoot":""}
|
package/lib/utils.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type Smoothness } from './coefficients';
|
|
1
2
|
export type CloseType = 'OPEN' | 'CLOSE';
|
|
2
3
|
export type Dimension = 2 | 3;
|
|
3
4
|
export type Point = [number, number] | [number, number, number];
|
|
@@ -18,6 +19,7 @@ export declare function _getDimension(context: any, isP3D: boolean): Dimension;
|
|
|
18
19
|
export declare function _getCanvasUtils(b: BezierCanvas): void;
|
|
19
20
|
export declare function _dist(...args: number[]): number;
|
|
20
21
|
export declare function _setStyles(b: BezierCanvas): void;
|
|
22
|
+
export declare function _validateSmoothness(smoothness: number): Smoothness;
|
|
21
23
|
export declare function _concentrate(pointList: PointList, close?: boolean): PointList;
|
|
22
24
|
export declare function _getCloseCurvePoints(pointList: PointList): PointList;
|
|
23
25
|
export declare function _interpolateVertex(v1: Vertex, v2: Vertex, t: number): Vertex;
|
package/package.json
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "p5bezier",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.1",
|
|
4
4
|
"author": "Peiling Jiang",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
|
-
"url": "https://github.com/peilingjiang/p5.bezier.git"
|
|
7
|
+
"url": "git+https://github.com/peilingjiang/p5.bezier.git"
|
|
8
8
|
},
|
|
9
9
|
"main": "lib/p5.bezier.min.js",
|
|
10
10
|
"devDependencies": {
|
|
11
|
-
"@biomejs/biome": "^1.
|
|
11
|
+
"@biomejs/biome": "^1.9.2",
|
|
12
12
|
"@types/p5": "^1.7.6",
|
|
13
|
-
"husky": "^9.1.
|
|
14
|
-
"lint-staged": "^15.2.
|
|
13
|
+
"husky": "^9.1.6",
|
|
14
|
+
"lint-staged": "^15.2.10",
|
|
15
15
|
"prettier": "^3.3.3",
|
|
16
16
|
"terser-webpack-plugin": "^5.3.10",
|
|
17
17
|
"ts-loader": "^9.5.1",
|
|
18
|
-
"typescript": "^5.
|
|
19
|
-
"webpack": "^5.
|
|
18
|
+
"typescript": "^5.6.2",
|
|
19
|
+
"webpack": "^5.94.0",
|
|
20
20
|
"webpack-cli": "^5.1.4"
|
|
21
21
|
},
|
|
22
22
|
"bugs": {
|