p5bezier 0.8.0 → 0.8.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 +18 -4
- 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/package.json +13 -12
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
<!-- [**Try it now on p5.js Web Editor!**](https://editor.p5js.org/peilingjiang/sketches/7Z2pRG-TB) -->
|
|
12
12
|
|
|
13
|
-
[**Try it now on p5.js Web Editor!**](https://editor.p5js.org/peilingjiang/sketches/mVXzWEJbT) | [**
|
|
13
|
+
[**Try it now on p5.js Web Editor!**](https://editor.p5js.org/peilingjiang/sketches/mVXzWEJbT) | [**Homepage**](https://bezier.jiang.pl)
|
|
14
14
|
|
|
15
15
|
While **p5.bezier** is designed to integrate with p5.js, it operates independently as well. To draw a Bézier curve on canvas, you can simply use `p5bezier.draw()`:
|
|
16
16
|
|
|
@@ -155,13 +155,13 @@ The call of `p5bezier.new` will not draw the curve on canvas automatically. To d
|
|
|
155
155
|
|
|
156
156
|
## Examples
|
|
157
157
|
|
|
158
|
-
|
|
158
|
+
The [examples page](https://bezier.jiang.pl/) includes control points, freehand drawing, dashes, closest-point queries, smoothness, translated curves, and a WebGL graphics buffer. Each experiment produces a complete p5.js sketch you can copy or download as HTML. You can also save the canvas as a PNG. See [Development](#development) to run it locally.
|
|
159
159
|
|
|
160
|
-
|
|
160
|
+
Read the [API and runnable examples in Markdown](https://bezier.jiang.pl/reference.md), the [agent index](https://bezier.jiang.pl/llms.txt), or the [homepage source](examples/). The complete reference is also present in the homepage HTML, so it is readable without JavaScript.
|
|
161
161
|
|
|
162
162
|
### Projects and Demos
|
|
163
163
|
|
|
164
|
-
- [**Hair**](https://
|
|
164
|
+
- [**Hair**](https://github.com/peilingjiang/hair), a visualization.
|
|
165
165
|
- _p5.bezier Example - Basic_ on [CodePen](https://codepen.io/peilingjiang/pen/ZEOLVPx).
|
|
166
166
|
- _p5.bezier Example - Animation_ on [CodePen](https://codepen.io/peilingjiang/pen/eYMRJax).
|
|
167
167
|
|
|
@@ -173,6 +173,8 @@ Check out the [examples page](https://p5bezier.netlify.app) and their [source co
|
|
|
173
173
|
|
|
174
174
|
## Development
|
|
175
175
|
|
|
176
|
+
Use Node.js 20.9 or newer and Bun for development. The release workflow uses Node.js 24.
|
|
177
|
+
|
|
176
178
|
Install development dependencies and build the library:
|
|
177
179
|
|
|
178
180
|
```sh
|
|
@@ -182,6 +184,18 @@ bun run build # build the library
|
|
|
182
184
|
bun run start # rebuild the library as you edit the source
|
|
183
185
|
```
|
|
184
186
|
|
|
187
|
+
Build and preview the homepage from the repository root:
|
|
188
|
+
|
|
189
|
+
```sh
|
|
190
|
+
npm run build # build the library
|
|
191
|
+
npm run build:examples # build the static examples and Markdown reference
|
|
192
|
+
python3 -m http.server 4173
|
|
193
|
+
# Open http://localhost:4173/examples/
|
|
194
|
+
npm run test:examples
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
The homepage uses plain HTML, CSS, and JavaScript modules. Edit API prose in `examples/index.html` and runnable sketches in `examples/recipes.mjs`, then run `npm run build:examples` to regenerate the static examples and Markdown mirror. The 2D playground uses the local library bundle; the 3D experiment loads p5.js 2.3.3 on demand. Downloaded sketches load p5.js 2.3.3 and p5bezier 0.8.1 from jsDelivr.
|
|
198
|
+
|
|
185
199
|
## References
|
|
186
200
|
|
|
187
201
|
- [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";
|
|
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";const 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)};let e={};t.d(e,{default:()=>x});var n={1:.1,2:.02,3:.001,4:5e-4,5:2e-4},i=[1],r={};function o(t){return i[t]}function s(t,e){return 0===e||e===t?1:r[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++){r[e]={};for(var n=1;n<e;n++)r[e][n]=o(e)/(o(n)*o(e-n))}}(161);var h=function(t,e,n){if(n||2===arguments.length)for(var i,r=0,o=e.length;r<o;r++)!i&&r in e||(i||(i=Array.prototype.slice.call(e,0,r)),i[r]=e[r]);return t.concat(i||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 i=t[0]-t[2],r=t[1]-t[3];return Math.sqrt(i*i+r*r)}if(6===n){i=t[0]-t[3],r=t[1]-t[4];var o=t[2]-t[5];return Math.sqrt(i*i+r*r+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 i=t.length-n,r=new c(1234),o=new Set;return h([],new Array(i),!0).map((function(t,e){for(var i=r.next(5+e,n-5+e);o.has(i);)i=r.next(5+e,n-5+e);o.add(i)})),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],i=t[e-1];if(1===e)return v([n]);var r=t[1];return[d(t[e-2],i,2),d(r,n,2),n.slice()]}function d(t,e,n){var i=t.length,r=e.length;return 2===i&&2===r?[t[0]+(e[0]-t[0])*n,t[1]+(e[1]-t[1])*n]:3===i&&3===r?[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 i,r=0,o=e.length;r<o;r++)!i&&r in e||(i||(i=Array.prototype.slice.call(e,0,r)),i[r]=e[r]);return t.concat(i||Array.prototype.slice.call(e))};function m(t,e,n,i){for(var r=new Array(i).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<i;u++)r[u]+=a*t[h][u];return r}window.console.log("[p5.bezier] ".concat("0.8.1"));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,i=null==n?void 0:n.drawingContext;if(!i)throw new Error("[p5.bezier] Canvas is not supported");var r=function(t,e){var n,i=null===(n=t.constructor)||void 0===n?void 0:n.name;return e||"WebGLRenderingContext"===i||"WebGL2RenderingContext"===i?3:2}(i,n.isP3D),o=n._pInst;if(!o){if(3===r)throw new Error("[p5.bezier] WebGL requires a p5.js renderer");return{dimension:r,beginPath:i.beginPath.bind(i),moveTo:i.moveTo.bind(i),lineTo:i.lineTo.bind(i),closePath:function(t){"CLOSE"===t&&i.closePath(),n._doFill&&i.fill(),n._doStroke&&i.stroke()},beginDash:function(){i.save(),i.fillStyle="rgba(0, 0, 0, 0)"},endDash:function(){return i.restore()}}}var s=!1,h=null;return{dimension:r,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,i){var r,o;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?b(b([],p(t,!0),!0),f(t),!0):p(t);return this.b.beginPath(),(r=this.b).moveTo.apply(r,s[0]),function(t,e,i){for(var r=e.length-1,o=n[l(i)],s=0;s<=1;s+=o){var h=m(e,r,s,t.dimension);t.lineTo.apply(t,h)}}(this.b,s,i),(o=this.b).lineTo.apply(o,s[s.length-1]),this.b.closePath(e),s},t.prototype.new=function(t,e,i){void 0===e&&(e="OPEN"),void 0===i&&(i=3);var r=n[l(i)];return new g(t,e,r,this.b)},t}();var g=function(){function t(t,e,n,i,r){var o;void 0===r&&(r=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=i.dimension,this.increment=n,this.vertexList=[],this.p=this.controlPoints.length,this.n=this.p-1,this.b=i,null===r?this._buildVertexList():this.vertexList=b([],r,!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,i,r,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):(i=this.b).moveTo.apply(i,p),v-=f,f=(u=!u)?h:a;u?(r=this.b).lineTo.apply(r,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,i,r,o){if(void 0===i&&(i=null),void 0===r&&(r=!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]}))})),r&&a.draw(o),a},t.prototype.shortest=function(t,e,n){var i=this;void 0===n&&(n=0);var r=[0,0,0],o=Number.POSITIVE_INFINITY;return this.vertexList.map((function(s){var h=i._distVertex(s,[t,e,n]);o>h&&(o=h,r=b([],s,!0))})),r},t}();const x=function(t){return new y(t)};return e=e.default,e})()));
|
|
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';\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":""}
|
|
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\nconst __webpack_require__ = {};\n\n","// define getter/value 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","p5_bezier_spreadArray","_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","p5_bezier"],"sourceRoot":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "p5bezier",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.1",
|
|
4
4
|
"author": "Peiling Jiang",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -8,22 +8,22 @@
|
|
|
8
8
|
},
|
|
9
9
|
"main": "lib/p5.bezier.min.js",
|
|
10
10
|
"devDependencies": {
|
|
11
|
-
"@biomejs/biome": "^1.9.
|
|
12
|
-
"husky": "^9.1.
|
|
13
|
-
"lint-staged": "^15.2
|
|
14
|
-
"prettier": "^3.
|
|
15
|
-
"terser-webpack-plugin": "^5.
|
|
16
|
-
"ts-loader": "^9.
|
|
17
|
-
"typescript": "^5.
|
|
18
|
-
"webpack": "^5.
|
|
19
|
-
"webpack-cli": "^
|
|
11
|
+
"@biomejs/biome": "^1.9.4",
|
|
12
|
+
"husky": "^9.1.7",
|
|
13
|
+
"lint-staged": "^15.5.2",
|
|
14
|
+
"prettier": "^3.9.6",
|
|
15
|
+
"terser-webpack-plugin": "^5.6.1",
|
|
16
|
+
"ts-loader": "^9.6.2",
|
|
17
|
+
"typescript": "^5.9.3",
|
|
18
|
+
"webpack": "^5.110.3",
|
|
19
|
+
"webpack-cli": "^7.2.3"
|
|
20
20
|
},
|
|
21
21
|
"bugs": {
|
|
22
22
|
"url": "https://github.com/peilingjiang/p5.bezier/issues"
|
|
23
23
|
},
|
|
24
24
|
"description": "Bezier curves for canvas graphics on the web, built to work with p5.js",
|
|
25
25
|
"files": ["lib"],
|
|
26
|
-
"homepage": "https://
|
|
26
|
+
"homepage": "https://bezier.jiang.pl/",
|
|
27
27
|
"keywords": ["p5.js", "Bezier", "Computer Graphics"],
|
|
28
28
|
"license": "MIT",
|
|
29
29
|
"lint-staged": {
|
|
@@ -36,7 +36,8 @@
|
|
|
36
36
|
"start": "webpack --env=development",
|
|
37
37
|
"build": "webpack --env=production",
|
|
38
38
|
"prepare": "husky",
|
|
39
|
-
"
|
|
39
|
+
"build:examples": "node scripts/build-site.mjs",
|
|
40
|
+
"test:examples": "node --test tests/*.test.mjs"
|
|
40
41
|
},
|
|
41
42
|
"types": "lib/p5.bezier.d.ts"
|
|
42
43
|
}
|