p5bezier 0.7.0 → 0.8.0
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 +31 -1
- package/lib/p5.bezier.min.js +1 -1
- package/lib/p5.bezier.min.js.LICENSE.txt +2 -2
- package/lib/p5.bezier.min.js.map +1 -1
- package/lib/utils.d.ts +5 -6
- package/package.json +7 -8
package/README.md
CHANGED
|
@@ -71,6 +71,25 @@ function setup() {
|
|
|
71
71
|
}
|
|
72
72
|
```
|
|
73
73
|
|
|
74
|
+
You can also pass a buffer returned by `createGraphics()`. In WebGL mode, supply `[x, y, z]` control points:
|
|
75
|
+
|
|
76
|
+
```js
|
|
77
|
+
const buffer = createGraphics(300, 300, WEBGL)
|
|
78
|
+
const curves = initBezier(buffer)
|
|
79
|
+
|
|
80
|
+
buffer.noFill()
|
|
81
|
+
buffer.stroke(255)
|
|
82
|
+
|
|
83
|
+
curves.draw([
|
|
84
|
+
[-100, 0, 0],
|
|
85
|
+
[0, -100, 40],
|
|
86
|
+
[100, 0, 0],
|
|
87
|
+
])
|
|
88
|
+
image(buffer, 0, 0)
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Curves use the target canvas or buffer's current styles and transforms. Dashed curves draw only the stroke and restore the fill afterward. Raw WebGL contexts without a p5.js renderer are not supported.
|
|
92
|
+
|
|
74
93
|
## Draw a Bézier Curve
|
|
75
94
|
|
|
76
95
|
The simplest way to use the library is to call `p5bezier.draw()` in your `draw()` function. You can adjust the curve's style using `fill()` or `strokeWeight()` just like other shapes.
|
|
@@ -138,7 +157,7 @@ The call of `p5bezier.new` will not draw the curve on canvas automatically. To d
|
|
|
138
157
|
|
|
139
158
|

|
|
140
159
|
|
|
141
|
-
Check out the examples page and their [source code](https://github.com/peilingjiang/p5.bezier/tree/main/examples/
|
|
160
|
+
Check out the [examples page](https://p5bezier.netlify.app) and their [source code](https://github.com/peilingjiang/p5.bezier/tree/main/examples/).
|
|
142
161
|
|
|
143
162
|
### Projects and Demos
|
|
144
163
|
|
|
@@ -152,6 +171,17 @@ Check out the examples page and their [source code](https://github.com/peilingji
|
|
|
152
171
|
2. `offset()`, `intersection()`, and `curvature()`... functions for Bézier object
|
|
153
172
|
3. Draw B-Spline curves
|
|
154
173
|
|
|
174
|
+
## Development
|
|
175
|
+
|
|
176
|
+
Install development dependencies and build the library:
|
|
177
|
+
|
|
178
|
+
```sh
|
|
179
|
+
bun install --frozen-lockfile
|
|
180
|
+
bun run build # build the library
|
|
181
|
+
# or
|
|
182
|
+
bun run start # rebuild the library as you edit the source
|
|
183
|
+
```
|
|
184
|
+
|
|
155
185
|
## References
|
|
156
186
|
|
|
157
187
|
- [Bézier curve - Wikipedia](https://en.wikipedia.org/wiki/B%C3%A9zier_curve)
|
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
|
|
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 r in n)t.o(n,r)&&!t.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:n[r]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e)},e={};t.d(e,{default:()=>x});var n={1:.1,2:.02,3:.001,4:5e-4,5:2e-4},r=[1],i={};function o(t){return r[t]}function s(t,e){return 0===e||e===t?1:i[t][e]}!function(t){for(var e=r.length;e<=t;e++)r[e]=e*r[e-1]}(161),function(t){for(var e=2;e<=t;e++){i[e]={};for(var n=1;n<e;n++)i[e][n]=o(e)/(o(n)*o(e-n))}}(161);var h=function(t,e,n){if(n||2===arguments.length)for(var r,i=0,o=e.length;i<o;i++)!r&&i in e||(r||(r=Array.prototype.slice.call(e,0,i)),r[i]=e[i]);return t.concat(r||Array.prototype.slice.call(e))};function a(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];var n=t.length;if(4===n){var r=t[0]-t[2],i=t[1]-t[3];return Math.sqrt(r*r+i*i)}if(6===n){r=t[0]-t[3],i=t[1]-t[4];var o=t[2]-t[5];return Math.sqrt(r*r+i*i+o*o)}return 0}var u=!1;function l(t){return t<1||t>5||!Number.isInteger(t)?(u||(u=!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 c=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 p(t,e){void 0===e&&(e=!1);var n=160-(e?3:0);if(t.length<=n)return v(t);var r=t.length-n,i=new c(1234),o=new Set;return h([],new Array(r),!0).map((function(t,e){for(var r=i.next(5+e,n-5+e);o.has(r);)r=i.next(5+e,n-5+e);o.add(r)})),v(t.filter((function(t,e){return!o.has(e)})))}function v(t){return t.map((function(t){return t.slice()}))}function f(t){var e=t.length;if(0===e)return[];var n=t[0],r=t[e-1];if(1===e)return v([n]);var i=t[1];return[d(t[e-2],r,2),d(i,n,2),n.slice()]}function d(t,e,n){var r=t.length,i=e.length;return 2===r&&2===i?[t[0]+(e[0]-t[0])*n,t[1]+(e[1]-t[1])*n]:3===r&&3===i?[t[0]+(e[0]-t[0])*n,t[1]+(e[1]-t[1])*n,t[2]+(e[2]-t[2])*n]:e}var b=function(t,e,n){if(n||2===arguments.length)for(var r,i=0,o=e.length;i<o;i++)!r&&i in e||(r||(r=Array.prototype.slice.call(e,0,i)),r[i]=e[i]);return t.concat(r||Array.prototype.slice.call(e))};function m(t,e,n,r){for(var i=new Array(r).fill(0),o=1-n,h=0;h<=e;h++)for(var a=s(e,h)*Math.pow(o,e-h)*Math.pow(n,h),u=0;u<r;u++)i[u]+=a*t[h][u];return i}window.console.log("[p5.bezier] ".concat("0.8.0"));var y=function(){function t(t){this.b=function(t){var e,n=null!==(e=null==t?void 0:t._renderer)&&void 0!==e?e:t,r=null==n?void 0:n.drawingContext;if(!r)throw new Error("[p5.bezier] Canvas is not supported");var i=function(t,e){var n,r=null===(n=t.constructor)||void 0===n?void 0:n.name;return e||"WebGLRenderingContext"===r||"WebGL2RenderingContext"===r?3:2}(r,n.isP3D),o=n._pInst;if(!o){if(3===i)throw new Error("[p5.bezier] WebGL requires a p5.js renderer");return{dimension:i,beginPath:r.beginPath.bind(r),moveTo:r.moveTo.bind(r),lineTo:r.lineTo.bind(r),closePath:function(t){"CLOSE"===t&&r.closePath(),n._doFill&&r.fill(),n._doStroke&&r.stroke()},beginDash:function(){r.save(),r.fillStyle="rgba(0, 0, 0, 0)"},endDash:function(){return r.restore()}}}var s=!1,h=null;return{dimension:i,beginPath:function(){o.beginShape(),s=!1,h=null},lineTo:function(t,e,n){void 0===n&&(n=0),h&&(o.vertex.apply(o,h),h=null),o.vertex(t,e,n),s=!0},moveTo:function(t,e,n){void 0===n&&(n=0),s&&(o.endShape(),o.beginShape(),s=!1),h=[t,e,n]},closePath:function(t){o.endShape("CLOSE"===t?o.CLOSE:void 0),s=!1,h=null},beginDash:function(){o.push(),o.noFill()},endDash:function(){return o.pop()}}}(t)}return t.prototype.draw=function(t,e,r){var i,o;if(void 0===e&&(e="OPEN"),void 0===r&&(r=3),t.length<2)throw new Error("[p5.bezier] At least 2 points are needed to draw a curve");var s="CLOSE"===e?b(b([],p(t,!0),!0),f(t),!0):p(t);return this.b.beginPath(),(i=this.b).moveTo.apply(i,s[0]),function(t,e,r){for(var i=e.length-1,o=n[l(r)],s=0;s<=1;s+=o){var h=m(e,i,s,t.dimension);t.lineTo.apply(t,h)}}(this.b,s,r),(o=this.b).lineTo.apply(o,s[s.length-1]),this.b.closePath(e),s},t.prototype.new=function(t,e,r){void 0===e&&(e="OPEN"),void 0===r&&(r=3);var i=n[l(r)];return new g(t,e,i,this.b)},t}();var g=function(){function t(t,e,n,r,i){var o;void 0===i&&(i=null),this.controlPoints=p(t,"CLOSE"===e),"CLOSE"===e?((o=this.controlPoints).push.apply(o,f(this.controlPoints)),this.closeType="CLOSE"):this.closeType="OPEN",this.dimension=r.dimension,this.increment=n,this.vertexList=[],this.p=this.controlPoints.length,this.n=this.p-1,this.b=r,null===i?this._buildVertexList():this.vertexList=b([],i,!0)}return t.prototype._buildVertexList=function(){this.vertexList=[];for(var t=0;t<=1;t+=this.increment){var e=m(this.controlPoints,this.n,t,this.dimension);this.vertexList.push(e)}return this.vertexList.push(this.controlPoints[this.controlPoints.length-1].slice()),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?a(t[0],t[1],t[2],e[0],e[1],e[2]):2===this.dimension?a(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)})),this.b.closePath(this.closeType)},t.prototype._dashedCurve=function(t){var e,n,r,i,o;this.increment>.001&&(this.increment=.001,window.console.warn("[p5.bezier] Smoothness set to 3 for a dashed curve"));var s=t.map(Math.abs),h=s[0],a=s[1],u=!0,l=this.vertexList[0],c=1,p=l,v=0,f=h;for(this.b.beginDash(),this.b.beginPath(),(e=this.b).moveTo.apply(e,l);c<this.vertexList.length;){var b=this.vertexList[c];for(v=this._distVertex(l,b);v>=f;)p=d(p,b,f/v),u?(n=this.b).lineTo.apply(n,p):(r=this.b).moveTo.apply(r,p),v-=f,f=(u=!u)?h:a;u?(i=this.b).lineTo.apply(i,b):(o=this.b).moveTo.apply(o,b),f-=this._distVertex(p,b),p=l=b,c++}this.b.closePath("OPEN"),this.b.endDash()},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,r,i,o){if(void 0===r&&(r=null),void 0===i&&(i=!0),null===r&&3===this.dimension)throw new Error("[p5.bezier] X, Y, and Z are needed to move a 3D curve");var s=[e,n];null!==r&&s.push(r);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]}))})),i&&a.draw(o),a},t.prototype.shortest=function(t,e,n){var r=this;void 0===n&&(n=0);var i=[0,0,0],o=Number.POSITIVE_INFINITY;return this.vertexList.map((function(s){var h=r._distVertex(s,[t,e,n]);o>h&&(o=h,i=b([],s,!0))})),i},t}();const x=function(t){return new y(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":"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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}\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';\nfunction _getDimension(\n// biome-ignore lint/suspicious/noExplicitAny: p5 typing\ncontext, isP3D) {\n var _a;\n var name = (_a = context.constructor) === null || _a === void 0 ? void 0 : _a.name;\n return isP3D ||\n name === 'WebGLRenderingContext' ||\n name === 'WebGL2RenderingContext'\n ? 3\n : 2;\n}\n// biome-ignore lint/suspicious/noExplicitAny: p5 typing\nexport function _getCanvasUtils(canvas) {\n var _a;\n // createGraphics wraps a renderer; createCanvas returns the renderer itself.\n var renderer = (_a = canvas === null || canvas === void 0 ? void 0 : canvas._renderer) !== null && _a !== void 0 ? _a : canvas;\n var ctx = renderer === null || renderer === void 0 ? void 0 : renderer.drawingContext;\n if (!ctx)\n throw new Error('[p5.bezier] Canvas is not supported');\n var dimension = _getDimension(ctx, renderer.isP3D);\n var sketch = renderer._pInst;\n if (!sketch) {\n if (dimension === 3) {\n throw new Error('[p5.bezier] WebGL requires a p5.js renderer');\n }\n return {\n dimension: dimension,\n beginPath: ctx.beginPath.bind(ctx),\n moveTo: ctx.moveTo.bind(ctx),\n lineTo: ctx.lineTo.bind(ctx),\n closePath: function (closeType) {\n if (closeType === 'CLOSE')\n ctx.closePath();\n if (renderer._doFill)\n ctx.fill();\n if (renderer._doStroke)\n ctx.stroke();\n },\n beginDash: function () {\n ctx.save();\n ctx.fillStyle = 'rgba(0, 0, 0, 0)';\n },\n endDash: function () { return ctx.restore(); },\n };\n }\n var hasVertices = false;\n var pendingVertex = null;\n return {\n dimension: dimension,\n beginPath: function () {\n sketch.beginShape();\n hasVertices = false;\n pendingVertex = null;\n },\n lineTo: function (x, y, z) {\n if (z === void 0) { z = 0; }\n if (pendingVertex) {\n sketch.vertex.apply(sketch, pendingVertex);\n pendingVertex = null;\n }\n sketch.vertex(x, y, z);\n hasVertices = true;\n },\n moveTo: function (x, y, z) {\n if (z === void 0) { z = 0; }\n // Defer the next vertex so dash gaps don't submit singleton shapes.\n if (hasVertices) {\n sketch.endShape();\n sketch.beginShape();\n hasVertices = false;\n }\n pendingVertex = [x, y, z];\n },\n closePath: function (closeType) {\n sketch.endShape(closeType === 'CLOSE' ? sketch.CLOSE : undefined);\n hasVertices = false;\n pendingVertex = null;\n },\n beginDash: function () {\n sketch.push();\n sketch.noFill();\n },\n endDash: function () { return sketch.pop(); },\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}\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 [\n _interpolateVertex(secondLast, last, 2),\n _interpolateVertex(second, first, 2),\n first.slice(),\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, _interpolateVertex, _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 = _getCanvasUtils(canvas);\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 this.b.closePath(closeType);\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 // Sampling may stop just short of t=1 because of floating-point increments.\n // Building or updating a curve must not issue any drawing commands.\n this.vertexList.push(this.controlPoints[this.controlPoints.length - 1].slice());\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 this.b.closePath(this.closeType);\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.beginDash();\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 this.b.closePath('OPEN');\n this.b.endDash();\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","_dist","args","_i","len","dx","dy","Math","sqrt","dz","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","_interpolateVertex","v1","v2","t","len1","len2","_bezierVertex","dimension","vertex","fill","oneMinusT","coefficient","d","log","P5Bezier","canvas","b","_a","renderer","_renderer","ctx","drawingContext","Error","context","isP3D","name","constructor","_getDimension","sketch","_pInst","beginPath","bind","moveTo","lineTo","closePath","closeType","_doFill","_doStroke","stroke","beginDash","save","fillStyle","endDash","restore","hasVertices","pendingVertex","beginShape","x","y","z","apply","endShape","CLOSE","undefined","push","noFill","pop","_getCanvasUtils","draw","_b","_pL","bezierCanvas","increment","_drawBezierCurve","new","BezierCurve","points","vertexList","controlPoints","p","_buildVertexList","_addVertex","vArray","_distVertex","vArray1","vArray2","dash","_dashedCurve","_solidCurve","_this","_c","_d","_e","abs","solidPart","gapPart","solid","lastVertex","toUseVertexInd","currentVirtualVertex","availableDist","neededDist","toUseVertex","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];
|
|
@@ -5,19 +6,17 @@ export type PointList = Point[];
|
|
|
5
6
|
export type Vertex = [number, number] | [number, number, number];
|
|
6
7
|
export type VertexList = Vertex[];
|
|
7
8
|
export type BezierCanvas = {
|
|
8
|
-
canvas: any;
|
|
9
|
-
ctx: any;
|
|
10
9
|
dimension: Dimension;
|
|
11
|
-
useP5: boolean;
|
|
12
10
|
beginPath: () => void;
|
|
13
11
|
moveTo: (...args: Vertex) => void;
|
|
14
12
|
lineTo: (...args: Vertex) => void;
|
|
15
13
|
closePath: (closeType?: CloseType) => void;
|
|
14
|
+
beginDash: () => void;
|
|
15
|
+
endDash: () => void;
|
|
16
16
|
};
|
|
17
|
-
export declare function
|
|
18
|
-
export declare function _getCanvasUtils(b: BezierCanvas): void;
|
|
17
|
+
export declare function _getCanvasUtils(canvas: any): BezierCanvas;
|
|
19
18
|
export declare function _dist(...args: number[]): number;
|
|
20
|
-
export declare function
|
|
19
|
+
export declare function _validateSmoothness(smoothness: number): Smoothness;
|
|
21
20
|
export declare function _concentrate(pointList: PointList, close?: boolean): PointList;
|
|
22
21
|
export declare function _getCloseCurvePoints(pointList: PointList): PointList;
|
|
23
22
|
export declare function _interpolateVertex(v1: Vertex, v2: Vertex, t: number): Vertex;
|
package/package.json
CHANGED
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "p5bezier",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
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.
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"lint-staged": "^15.2.9",
|
|
11
|
+
"@biomejs/biome": "^1.9.2",
|
|
12
|
+
"husky": "^9.1.6",
|
|
13
|
+
"lint-staged": "^15.2.10",
|
|
15
14
|
"prettier": "^3.3.3",
|
|
16
15
|
"terser-webpack-plugin": "^5.3.10",
|
|
17
16
|
"ts-loader": "^9.5.1",
|
|
18
|
-
"typescript": "^5.
|
|
19
|
-
"webpack": "^5.
|
|
17
|
+
"typescript": "^5.6.2",
|
|
18
|
+
"webpack": "^5.94.0",
|
|
20
19
|
"webpack-cli": "^5.1.4"
|
|
21
20
|
},
|
|
22
21
|
"bugs": {
|