p5bezier 0.5.0 → 0.6.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 +7 -7
- package/lib/p5.bezier.d.ts +22 -16
- 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 +9 -9
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
[](https://github.com/peilingjiang/p5.bezier/blob/main/LICENSE)
|
|
7
7
|
[](https://www.jsdelivr.com/package/npm/p5bezier)
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
**p5.bezier** is a [p5.js](https://p5js.org) library engineered to assist you in creating Bézier curves. It is an enhancement of the original p5.js `bezier()` function, extending its capabilities beyond the limitation of _four_ control points.
|
|
10
10
|
|
|
11
11
|
<!-- [**Try it now on p5.js Web Editor!**](https://editor.p5js.org/peilingjiang/sketches/7Z2pRG-TB) -->
|
|
12
12
|
|
|
@@ -41,7 +41,7 @@ To use the p5.bezier library, first download the [p5.bezier.min.js](https://raw.
|
|
|
41
41
|
Alternatively, you can use the library through a content delivery network (CDN):
|
|
42
42
|
|
|
43
43
|
```HTML
|
|
44
|
-
<script src="https://cdn.jsdelivr.net/npm/p5bezier@latest
|
|
44
|
+
<script src="https://cdn.jsdelivr.net/npm/p5bezier@latest"></script>
|
|
45
45
|
```
|
|
46
46
|
|
|
47
47
|
Once included, the entire library is encapsulated within the `p5bezier` object. To call the functions provided by the library, prepend `p5bezier` to the function name:
|
|
@@ -80,7 +80,7 @@ function setup() {
|
|
|
80
80
|
The simplest way to use the library is to call `newBezier()` in your `draw()` function. You can adjust the curve's style using `fill()` or `strokeWeight()` just like other shapes.
|
|
81
81
|
|
|
82
82
|
```
|
|
83
|
-
newBezier(pointsArray [, closeType] [,
|
|
83
|
+
newBezier(pointsArray [, closeType] [, accuracy]);
|
|
84
84
|
```
|
|
85
85
|
|
|
86
86
|
**pointsArray**
|
|
@@ -91,7 +91,7 @@ This is an array of [x, y] pairs, each representing a control point for the curv
|
|
|
91
91
|
|
|
92
92
|
This is a string, either `"OPEN"` or `"CLOSE"`. Use `"CLOSE"` to automatically close the curve. The default is `"OPEN"`.
|
|
93
93
|
|
|
94
|
-
**
|
|
94
|
+
**accuracy** (Optional)
|
|
95
95
|
|
|
96
96
|
This is an integer between `0` and `10`, with a default value of `7`. This value determines the accuracy of the Bézier curve. Higher values mean more vertices are used, leading to a more accurate curve, but at the cost of additional computation.
|
|
97
97
|
|
|
@@ -102,7 +102,7 @@ For advanced operations, such as computing the shortest distance from a point to
|
|
|
102
102
|
The usage of `newBezierObj()` is similar to `newBezier()`, but it returns a _Bézier Curve Object_ that can be stored in a variable:
|
|
103
103
|
|
|
104
104
|
```
|
|
105
|
-
let bezierObject = newBezierObj(pointsArray [, closeType] [,
|
|
105
|
+
let bezierObject = newBezierObj(pointsArray [, closeType] [, accuracy]);
|
|
106
106
|
```
|
|
107
107
|
|
|
108
108
|
The call of `newBezierObj` will not draw the curve on canvas automatically. To draw the curve, use `.draw()` as one of many functions listed below:
|
|
@@ -154,7 +154,7 @@ Currently available examples:
|
|
|
154
154
|
- **basic** draws a simple Bézier curve with 5 control points across the canvas.
|
|
155
155
|
- **basic_object** create a simple Bézier object with 5 control points across the canvas.
|
|
156
156
|
- **control_points** draws a curve and its control points, which can be dragged around.
|
|
157
|
-
- **
|
|
157
|
+
- **accuracy** showcases curves drawn with varying levels of accuracy.
|
|
158
158
|
- **shortest_point** draws the shortest line from the mouse pointer to the curve.
|
|
159
159
|
- **animation** draws animated Bézier curves.
|
|
160
160
|
|
|
@@ -164,7 +164,7 @@ More complex examples to be updated.
|
|
|
164
164
|
|
|
165
165
|
- [**Hair**](https://no-loss.netlify.app/), a visualization. See the source code here: https://github.com/peilingjiang/hair.
|
|
166
166
|
- _p5.bezier Example - Basic_ on [CodePen](https://codepen.io/peilingjiang/pen/ZEOLVPx).
|
|
167
|
-
- _p5.bezier Example -
|
|
167
|
+
- _p5.bezier Example - Animation_ on [CodePen](https://codepen.io/peilingjiang/pen/eYMRJax).
|
|
168
168
|
|
|
169
169
|
Share your ideas and projects using the library!
|
|
170
170
|
|
package/lib/p5.bezier.d.ts
CHANGED
|
@@ -1,22 +1,28 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
type Accuracy = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10;
|
|
2
|
+
type CloseType = 'OPEN' | 'CLOSE';
|
|
3
|
+
type Dimension = 2 | 3;
|
|
4
|
+
type Point = [number, number] | [number, number, number];
|
|
5
|
+
type PointList = Point[];
|
|
6
|
+
type Vertex = [number, number] | [number, number, number];
|
|
7
|
+
type VertexList = Vertex[];
|
|
8
|
+
declare function initBezier(canvas: any): void;
|
|
9
|
+
declare function newBezier(pointList: PointList, closeType?: CloseType, accuracy?: Accuracy): void;
|
|
10
|
+
declare function newBezierObj(pointList: PointList, closeType?: CloseType, accuracy?: Accuracy): BezierCurve;
|
|
4
11
|
declare class BezierCurve {
|
|
5
|
-
controlPoints:
|
|
6
|
-
closeType:
|
|
7
|
-
dimension:
|
|
12
|
+
controlPoints: PointList;
|
|
13
|
+
closeType: CloseType;
|
|
14
|
+
dimension: Dimension;
|
|
8
15
|
increment: number;
|
|
9
|
-
vertexList
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
constructor(pL: any[], closeT: string, tI: number, bD: number, vL?: any[] | null);
|
|
16
|
+
private vertexList;
|
|
17
|
+
private p;
|
|
18
|
+
private n;
|
|
19
|
+
constructor(points: PointList, closeType: CloseType, increment: number, dimension: Dimension, vertexList?: VertexList | null);
|
|
14
20
|
private _buildVertexList;
|
|
15
21
|
private _addVertex;
|
|
16
22
|
private _distVertex;
|
|
17
|
-
draw(dash?: number
|
|
18
|
-
update(
|
|
19
|
-
move(x: number, y: number, z?: number | null, toDraw?: boolean, dash?: number
|
|
20
|
-
shortest(pX: number, pY: number, pZ?: number):
|
|
23
|
+
draw(dash?: [number, number]): void;
|
|
24
|
+
update(newControlPointList: PointList): void;
|
|
25
|
+
move(x: number, y: number, z?: number | null, toDraw?: boolean, dash?: [number, number]): BezierCurve;
|
|
26
|
+
shortest(pX: number, pY: number, pZ?: number): Vertex;
|
|
21
27
|
}
|
|
22
|
-
export {};
|
|
28
|
+
export { initBezier, newBezier, newBezierObj };
|
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(e
|
|
2
|
+
!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.p5bezier=e():t.p5bezier=e()}(this,(()=>(()=>{"use strict";var t={d:(e,i)=>{for(var n in i)t.o(i,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:i[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{initBezier:()=>L,newBezier:()=>P,newBezierObj:()=>S});var i=function(t,e,i){if(i||2===arguments.length)for(var n,o=0,r=e.length;o<r;o++)!n&&o in e||(n||(n=Array.prototype.slice.call(e,0,o)),n[o]=e[o]);return t.concat(n||Array.prototype.slice.call(e))};window.console.log("[p5.bezier]");var n,o,r,s,h,p,l,a,d={0:.2,1:.1,2:.05,3:.04,4:.02,5:.01,6:.008,7:.002,8:.001,9:5e-4,10:1e-4},c=[1],f={};function u(t,e){return"WebGLRenderingContext"===t.constructor.name||e?3:2}function v(t){for(var e=c.length;e<=t;e++)c[e]=e*c[e-1]}function y(t){return c[t]}function x(t,e){return 0===e||e===t?1:(f[t]||(f[t]={}),void 0!==f[t][e]||(f[t][e]=function(t,e){return y(t)/(y(e)*y(t-e))}(t,e)),f[t][e])}function b(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return 4===t.length?Math.hypot(t[0]-t[2],t[1]-t[3]):6===t.length?Math.hypot(t[0]-t[3],t[1]-t[4],t[2]-t[5]):0}function g(){n._doFill&&o.fill(),n._doStroke&&o.stroke()}function m(t){return t.map((function(t){return Array.from(t)}))}function w(t){var e=t[0],i=t[t.length-1],n=t[1],o=t[t.length-2];return[[2*i[0]-o[0],2*i[1]-o[1]],[2*e[0]-n[0],2*e[1]-n[1]],e]}function L(t){if(o=(n=t).drawingContext,"undefined"!=typeof p5&&t instanceof p5.Graphics)s=!0,r=u(o,!1);else{if(!("undefined"!=typeof p5&&t instanceof p5.Renderer||t.drawingContext))throw new Error("[p5.bezier] Canvas is not supported.");s=!1,"undefined"!=typeof p5&&("undefined"==typeof p5||t instanceof p5.Renderer)||window.console.warn("[p5.bezier] Support beyond p5.js is not tested."),r=u(o,t.isP3D)}!function(t,e,i){t?(h=e.beginShape,p=e.vertex,l=e.vertex,a=e.endShape):(h=i.beginPath.bind(i),p=i.moveTo.bind(i),l=i.lineTo.bind(i),a=i.closePath.bind(i))}(s,n,o)}function P(t,e,i){if(void 0===e&&(e="OPEN"),void 0===i&&(i=7),t=m(t),"CLOSE"===e){var n=w(t);t.push.apply(t,n)}var o=d[i],c=t.length-1;if(v(c),h(),p.apply(void 0,t[0]),2===r){var f=void 0,u=void 0,y=void 0;for(y=0;y<=1;y+=o){f=u=0;for(var b=0;b<=c;b++){f+=(P=x(c,b)*Math.pow(1-y,c-b)*Math.pow(y,b))*t[b][0],u+=P*t[b][1]}l(f,u)}}else if(3===r){y=void 0;for(y=0;y<=1;y+=o){var L=[0,0,0];for(b=0;b<=c;b++)for(var P=x(c,b)*Math.pow(1-y,c-b)*Math.pow(y,b),S=0;S<3;S++)L[S]+=P*t[b][S];l.apply(void 0,L)}}l.apply(void 0,t.slice(-1)[0]),s?a(e):"CLOSE"===e&&a(),g()}function S(t,e,i){void 0===e&&(e="OPEN"),void 0===i&&(i=7);var n=d[i];return new O(t,e,n,r)}v(10);var O=function(){function t(t,e,n,o,r){var s;void 0===r&&(r=null),this.controlPoints=m(t),"CLOSE"===e?((s=this.controlPoints).push.apply(s,w(this.controlPoints)),this.closeType="CLOSE"):this.closeType="OPEN",this.dimension=o,this.increment=n,this.vertexList=[],this.p=this.controlPoints.length,this.n=this.p-1,v(this.n),null===r?this._buildVertexList():this.vertexList=i([],r,!0)}return t.prototype._buildVertexList=function(){if(this.vertexList=[],2===this.dimension)for(var t=0;t<=1;t+=this.increment){for(var e=0,i=0,n=0;n<=this.n;n++){e+=(r=x(this.n,n)*Math.pow(1-t,this.n-n)*Math.pow(t,n))*this.controlPoints[n][0],i+=r*this.controlPoints[n][1]}this.vertexList.push([e,i])}else if(3===this.dimension)for(t=0;t<=1;t+=this.increment){var o=[0,0,0];for(n=0;n<=this.n;n++)for(var r=x(this.n,n)*Math.pow(1-t,this.n-n)*Math.pow(t,n),s=0;s<3;s++)o[s]+=r*this.controlPoints[n][s];this.vertexList.push(o)}return this._addVertex(this.controlPoints[this.controlPoints.length-1]),this.dimension=this.vertexList[0].length,this.vertexList},t.prototype._addVertex=function(t){l.apply(void 0,t)},t.prototype._distVertex=function(t,e){return 3===this.dimension&&3===t.length&&3===e.length?b(t[0],t[1],t[2],e[0],e[1],e[2]):2===this.dimension?b(t[0],t[1],e[0],e[1]):0},t.prototype.draw=function(t){var e,i,n,r=this;if(t){this.increment>.008&&(this.increment=.008);var d=Math.abs(t[0]),c=Math.abs(t[1]),f=!0,u=this.vertexList[0],v=1,y=this.vertexList[v],x=u,b=0,m=f?d:c;for(o.save(),o.fillStyle="rgba(0, 0, 0, 0)",h(),p.apply(void 0,u);v<this.vertexList.length;){for(y=this.vertexList[v],b=this._distVertex(u,y);b>=m;)i=y,n=m/b,x=2===(e=x).length&&2===i.length?[e[0]+(i[0]-e[0])*n,e[1]+(i[1]-e[1])*n]:3===e.length&&3===i.length?[e[0]+(i[0]-e[0])*n,e[1]+(i[1]-e[1])*n,e[2]+(i[2]-e[2])*n]:i,f?l.apply(void 0,x):p.apply(void 0,x),b-=m,m=(f=!f)?d:c;f?l.apply(void 0,y):p.apply(void 0,y),m-=this._distVertex(x,y),x=u=y,v++}g(),o.restore()}else h(),this.vertexList.map((function(t){return r._addVertex(t)})),"CLOSE"===this.closeType&&o.closePath(),s?a(this.closeType):"CLOSE"===this.closeType&&a(),g()},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,i){return e===t[i]}))||(this.controlPoints=t,this._buildVertexList())},t.prototype.move=function(e,i,n,o,r){if(void 0===n&&(n=null),void 0===o&&(o=!0),null===n&&3===this.dimension)throw new Error("[p5.bezier] X, Y, and Z are needed to move a 3D curve.");var s=[e,i];null!==n&&s.push(n);var h=this.vertexList.map((function(t){return t.slice()})),p=new t(this.controlPoints,this.closeType,this.increment,this.dimension,h);return p.vertexList=p.vertexList.map((function(t){return t.map((function(t,e){return t+s[e]}))})),o&&p.draw(r),p},t.prototype.shortest=function(t,e,n){var o=this;void 0===n&&(n=0);var r=[0,0,0],s=1/0;return this.vertexList.map((function(h){var p=o._distVertex(h,[t,e,n]);s>p&&(s=p,r=i([],h,!0))})),r},t}();return 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://p5bezier/webpack/universalModuleDefinition","webpack://p5bezier/webpack/bootstrap","webpack://p5bezier/webpack/runtime/define property getters","webpack://p5bezier/webpack/runtime/hasOwnProperty shorthand","webpack://p5bezier/webpack/runtime/make namespace object","webpack://p5bezier/./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[\"p5bezier\"] = factory();\n\telse\n\t\troot[\"p5bezier\"] = 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))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*\np5.bezier library by Peiling Jiang\n2020\n\nupdated May 2023\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};\nwindow.console.log('[p5.bezier]');\n// fidelity 0-10\nvar p5bezierAccuracyListAll = [\n 0.2, 0.1, 0.05, 0.04, 0.02, 0.01, 0.008, 0.002, 0.001, 0.0005, 0.0001,\n];\nvar _canvas, _ctx, _dimension, _strict, _useP5, _beginPath, _moveTo, _lineTo, _closePath;\nvar _precalculatedFactorials = [1];\n/* -------------------------------------------------------------------------- */\n/* -------------------------------------------------------------------------- */\n/* -------------------------------------------------------------------------- */\n// helpers\nfunction _determineDimension(context, isP3D) {\n return context.constructor.name === 'WebGLRenderingContext' || isP3D ? 3 : 2;\n}\nfunction _setCanvasFunctions(useP5, canvas, context) {\n if (useP5) {\n _beginPath = canvas.beginShape;\n _moveTo = canvas.vertex;\n _lineTo = canvas.vertex;\n _closePath = canvas.endShape;\n }\n else {\n _beginPath = context.beginPath.bind(context);\n _moveTo = context.moveTo.bind(context);\n _lineTo = context.lineTo.bind(context);\n _closePath = context.closePath.bind(context);\n }\n}\nfunction _ensureFactorials(n) {\n for (var i = _precalculatedFactorials.length; i <= n; i++) {\n _precalculatedFactorials[i] = i * _precalculatedFactorials[i - 1];\n }\n}\nfunction _helper_factorial(i) {\n _ensureFactorials(i);\n return _precalculatedFactorials[i];\n}\nfunction _binomialCoefficient(n, i) {\n _ensureFactorials(n);\n return (_helper_factorial(n) / (_helper_factorial(i) * _helper_factorial(n - i)));\n}\nfunction _helper_dist() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (args.length === 4)\n return Math.hypot(args[0] - args[2], args[1] - args[3]);\n else if (args.length === 6)\n return Math.hypot(args[0] - args[3], args[1] - args[4], args[2] - args[5]);\n return 0;\n}\nfunction _helper_style() {\n if (_canvas._doFill)\n _ctx.fill();\n if (_canvas._doStroke)\n _ctx.stroke();\n}\nfunction _deepCopyArray(arr) {\n return arr.map(function (v) { return __spreadArray([], v, true); });\n}\nfunction _findCloseCurveExtraPoints(pointList) {\n var first = pointList[0];\n var last = pointList[pointList.length - 1];\n var second = pointList[1];\n var secondLast = pointList[pointList.length - 2];\n var point1 = [2 * last[0] - secondLast[0], 2 * last[1] - secondLast[1]];\n var point2 = [2 * first[0] - second[0], 2 * first[1] - second[1]];\n return [point1, point2, first];\n}\n/* -------------------------------------------------------------------------- */\n/* -------------------------------------------------------------------------- */\n/* -------------------------------------------------------------------------- */\nexport function initBezier(canvas, strictMode) {\n if (strictMode === void 0) { strictMode = false; }\n _canvas = canvas;\n _ctx = _canvas.drawingContext;\n if (typeof p5 !== 'undefined' && canvas instanceof p5.Graphics) {\n _useP5 = true;\n _dimension = _determineDimension(_ctx, false);\n }\n else if ((typeof p5 !== 'undefined' && canvas instanceof p5.Renderer) ||\n canvas.drawingContext) {\n _useP5 = false;\n if (typeof p5 === 'undefined' ||\n (typeof p5 !== 'undefined' && !(canvas instanceof p5.Renderer))) {\n window.console.warn('[p5.bezier] Support for non-p5 canvas is not tested.');\n }\n _dimension = _determineDimension(_ctx, canvas.isP3D);\n }\n else {\n throw new Error('[p5.bezier] Canvas is not supported.');\n }\n _setCanvasFunctions(_useP5, _canvas, _ctx);\n _strict = strictMode;\n}\nexport function newBezier(pointList, closeType, accuracy) {\n if (closeType === void 0) { closeType = 'OPEN'; }\n if (accuracy === void 0) { accuracy = 7; }\n if (_strict && !Array.isArray(pointList)) {\n throw new Error(\"[p5.bezier] newBezier() function expects an array, got \".concat(typeof pointList, \".\"));\n }\n pointList = _deepCopyArray(pointList);\n if (closeType === 'CLOSE') {\n var closeCurveExtraPoints = _findCloseCurveExtraPoints(pointList);\n pointList.push.apply(pointList, closeCurveExtraPoints);\n }\n var tIncrement = p5bezierAccuracyListAll[accuracy];\n var p = pointList.length; // pointList has p points for (p - 1) degree curves\n var n = p - 1;\n if (_dimension !== 0) {\n if (_strict) {\n for (var _i = 0, pointList_1 = pointList; _i < pointList_1.length; _i++) {\n var point = pointList_1[_i];\n if (!Array.isArray(pointList) || point.length !== _dimension) {\n throw new Error('[p5.bezier] One or more points in the array are not input correctly.');\n }\n }\n }\n _ensureFactorials(n);\n _beginPath();\n _moveTo.apply(void 0, pointList[0]);\n if (_dimension === 2) {\n var x = void 0, y = void 0, t = void 0;\n for (t = 0; t <= 1; t += tIncrement) {\n x = y = 0;\n for (var i = 0; i <= n; i++) {\n var coefficient = _binomialCoefficient(n, i) * Math.pow(1 - t, n - i) * Math.pow(t, i);\n x += coefficient * pointList[i][0];\n y += coefficient * pointList[i][1];\n }\n _lineTo(x, y);\n }\n }\n else if (_dimension === 3) {\n var t = void 0;\n for (t = 0; t <= 1; t += tIncrement) {\n var xyz = [0, 0, 0];\n for (var i = 0; i <= n; i++) {\n var coefficient = _binomialCoefficient(n, i) * Math.pow(1 - t, n - i) * Math.pow(t, i);\n for (var d = 0; d < 3; d++) {\n xyz[d] += coefficient * pointList[i][d];\n }\n }\n _lineTo.apply(void 0, xyz);\n }\n }\n _lineTo.apply(void 0, pointList.slice(-1)[0]);\n if (_useP5) {\n _closePath(closeType);\n }\n else if (closeType === 'CLOSE') {\n _closePath();\n }\n else if (_strict && closeType !== 'OPEN') {\n throw new Error('[p5.bezier] Close type error. A bezier curve can only be either OPEN or CLOSE.');\n }\n _helper_style();\n }\n}\nexport function newBezierObj(pointList, closeType, accuracy) {\n if (closeType === void 0) { closeType = 'OPEN'; }\n if (accuracy === void 0) { accuracy = 7; }\n var tIncrement = p5bezierAccuracyListAll[accuracy];\n if (_strict) {\n if (!Array.isArray(pointList)) {\n throw new Error(\"[p5.bezier] newBezierObj() function expects an array, got \".concat(typeof pointList, \".\"));\n }\n for (var _i = 0, pointList_2 = pointList; _i < pointList_2.length; _i++) {\n var point = pointList_2[_i];\n if (!Array.isArray(point) || point.length !== _dimension) {\n throw new Error('[p5.bezier] One or more points in the array are not input correctly.');\n }\n }\n }\n return new BezierCurve(pointList, closeType, tIncrement, _dimension);\n}\nvar BezierCurve = /** @class */ (function () {\n // take pointList, closeType, tIncrement, bezierDimension into constructor\n function BezierCurve(pL, closeT, tI, bD, vL) {\n var _a;\n if (vL === void 0) { vL = null; }\n if (_strict && bD !== 2 && bD !== 3) {\n throw new Error(\"[p5.bezier] Dimension error. The bezier curve is \".concat(bD, \"-dimensional and doesn't belong to our world.\"));\n }\n this.controlPoints = _deepCopyArray(pL);\n if (closeT === 'CLOSE') {\n (_a = this.controlPoints).push.apply(_a, _findCloseCurveExtraPoints(this.controlPoints));\n this.closeType = 'CLOSE';\n }\n else if (closeT === 'OPEN') {\n this.closeType = 'OPEN';\n }\n else {\n throw new Error('[p5.bezier] Close type error. A bezier curve can only be either OPEN or CLOSE.');\n }\n this.dimension = bD;\n this.increment = tI;\n this.vertexList = [];\n this.vertexListLen = 0;\n this.p = this.controlPoints.length; // has p points for (p - 1) degree curves\n this.n = this.p - 1; // degree\n // ensure enough factorials are calculated up to this.n\n _ensureFactorials(this.n);\n if (vL === null) {\n this._buildVertexList();\n }\n else {\n this.vertexList = __spreadArray([], vL, true);\n this.vertexListLen = this.vertexList.length;\n }\n }\n BezierCurve.prototype._buildVertexList = function () {\n this.vertexList = [];\n if (this.dimension === 2) {\n for (var t = 0; t <= 1; t += this.increment) {\n var x = 0;\n var y = 0;\n for (var i = 0; i <= this.n; i++) {\n var binomialCoefficient = _binomialCoefficient(this.n, i);\n var term = binomialCoefficient * Math.pow(1 - t, this.n - i) * Math.pow(t, i);\n x += term * this.controlPoints[i][0];\n y += term * this.controlPoints[i][1];\n }\n this.vertexList.push([x, y]);\n }\n }\n else if (this.dimension === 3) {\n for (var t = 0; t <= 1; t += this.increment) {\n var xyz = [0, 0, 0];\n for (var i = 0; i <= this.n; i++) {\n var binomialCoefficient = _binomialCoefficient(this.n, i);\n var term = binomialCoefficient * Math.pow(1 - t, this.n - i) * Math.pow(t, i);\n for (var d = 0; d < 3; d++) {\n xyz[d] += term * this.controlPoints[i][d];\n }\n }\n this.vertexList.push(xyz);\n }\n }\n this._addVertex(this.controlPoints[this.controlPoints.length - 1]);\n this.dimension = this.vertexList[0].length; // update dimension\n this.vertexListLen = this.vertexList.length; // update vertexListLen\n return this.vertexList;\n };\n BezierCurve.prototype._addVertex = function (vArray) {\n // vArray is an array of [x, y] position or [x, y, z] position\n if (this.dimension === 2 || this.dimension === 3)\n _lineTo.apply(void 0, vArray);\n else\n throw new Error('[p5.bezier] Vertices can only be in 2D or 3D space.');\n };\n BezierCurve.prototype._distVertex = function (vArray1, vArray2) {\n // calculate the distance between\n // vertex_array_1 and vertex_array_2\n if (this.dimension === 2) {\n return _helper_dist(vArray1[0], vArray1[1], vArray2[0], vArray2[1]);\n }\n else if (this.dimension === 3) {\n return _helper_dist(vArray1[0], vArray1[1], vArray1[2], vArray2[0], vArray2[1], vArray2[2]);\n }\n return 0;\n };\n BezierCurve.prototype.draw = function (dash) {\n if (!dash) {\n _beginPath();\n for (var _i = 0, _a = this.vertexList; _i < _a.length; _i++) {\n var v = _a[_i];\n this._addVertex(v);\n }\n if (this.closeType === 'CLOSE')\n _ctx.closePath();\n if (_useP5)\n _closePath(this.closeType);\n else if (this.closeType === 'CLOSE')\n _closePath();\n _helper_style();\n }\n else if (Array.isArray(dash) &&\n dash.length === 2 &&\n this.increment <= 0.008) {\n // draw a dash curve\n var solidPart = Math.abs(dash[0]); // length of one solid part\n var onePart = solidPart + Math.abs(dash[1]), nowLen = 0, modOnePart = 0;\n var lastVertex = this.vertexList[0];\n var solid = true; // true draw, false break\n _ctx.save(); // push\n _ctx.fillStyle = 'rgba(0, 0, 0, 0)'; // TODO enable fill\n _beginPath();\n _moveTo.apply(void 0, this.vertexList[0]);\n for (var v = 1; v < this.vertexListLen; v++) {\n nowLen += this._distVertex(lastVertex, this.vertexList[v]);\n modOnePart = nowLen % onePart;\n if (modOnePart <= solidPart && solid) {\n this._addVertex(this.vertexList[v]);\n }\n else if (modOnePart > solidPart && modOnePart <= onePart && solid) {\n // endShape();\n solid = false;\n }\n else if (modOnePart <= solidPart && !solid) {\n _moveTo.apply(void 0, this.vertexList[v]);\n solid = true;\n }\n lastVertex = this.vertexList[v];\n }\n _helper_style();\n _ctx.restore();\n }\n else if (this.increment > 0.008)\n throw new Error('[p5.bezier] Fidelity is too low for a dash line. It should be at least 6.');\n else\n throw new Error(\"[p5.bezier] Your dash array input is not valid. Make sure it's an array of two numbers.\");\n };\n BezierCurve.prototype.update = function (newControlList) {\n if (newControlList.length !== this.controlPoints.length) {\n throw new Error('[p5.bezier] The number of points changed. (Keep the length of the point array the same.)');\n }\n else if (this.controlPoints.every(function (v, i) { return v === newControlList[i]; })) {\n return;\n }\n else {\n this.controlPoints = newControlList;\n this._buildVertexList();\n }\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 (dash === void 0) { dash = [0]; }\n if (z === null && this.dimension === 3) {\n throw new Error('[p5.bezier] To move a 3D curve, please specify (x, y, z).');\n }\n else {\n var toMove_1 = [x, y];\n if (z !== null)\n toMove_1.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.dimension, newCurveV);\n newCurveObj.vertexList = newCurveObj.vertexList.map(function (v) {\n return v.map(function (val, i) { return val + toMove_1[i]; });\n });\n if (toDraw) {\n newCurveObj.draw(dash);\n }\n return newCurveObj;\n }\n };\n BezierCurve.prototype.shortest = function (pX, pY, pZ) {\n if (pZ === void 0) { pZ = 0; }\n var minVertex = [];\n var dMin = Infinity;\n for (var _i = 0, _a = this.vertexList; _i < _a.length; _i++) {\n var v = _a[_i];\n var nowMin = this._distVertex(v, [pX, pY, pZ]);\n if (dMin > nowMin) {\n dMin = nowMin;\n minVertex = v;\n }\n }\n return minVertex;\n };\n return BezierCurve;\n}());\n"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","__spreadArray","to","from","pack","arguments","length","ar","i","l","Array","slice","concat","window","console","log","_canvas","_ctx","_dimension","_strict","_useP5","_beginPath","_moveTo","_lineTo","_closePath","p5bezierAccuracyListAll","_precalculatedFactorials","_determineDimension","context","isP3D","constructor","name","_ensureFactorials","n","_helper_factorial","_binomialCoefficient","_helper_dist","args","_i","Math","hypot","_helper_style","_doFill","fill","_doStroke","stroke","_deepCopyArray","arr","map","v","_findCloseCurveExtraPoints","pointList","first","last","second","secondLast","initBezier","canvas","strictMode","drawingContext","p5","Graphics","Renderer","Error","warn","useP5","beginShape","vertex","endShape","beginPath","bind","moveTo","lineTo","closePath","_setCanvasFunctions","newBezier","closeType","accuracy","isArray","closeCurveExtraPoints","push","apply","tIncrement","pointList_1","point","x","y","t","coefficient","pow","xyz","d","newBezierObj","pointList_2","BezierCurve","pL","closeT","tI","bD","vL","_a","controlPoints","dimension","increment","vertexList","vertexListLen","p","_buildVertexList","term","_addVertex","vArray","_distVertex","vArray1","vArray2","draw","dash","solidPart","abs","onePart","nowLen","modOnePart","lastVertex","solid","save","fillStyle","restore","update","newControlList","every","move","z","toDraw","toMove_1","newCurveV","newCurveObj","val","shortest","pX","pY","pZ","minVertex","dMin","Infinity","nowMin"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"p5.bezier.min.js","mappings":"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","sources":["webpack://p5bezier/webpack/universalModuleDefinition","webpack://p5bezier/webpack/bootstrap","webpack://p5bezier/webpack/runtime/define property getters","webpack://p5bezier/webpack/runtime/hasOwnProperty shorthand","webpack://p5bezier/webpack/runtime/make namespace object","webpack://p5bezier/./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[\"p5bezier\"] = factory();\n\telse\n\t\troot[\"p5bezier\"] = 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))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","/*\np5.bezier library by Peiling Jiang\n2020\n\nupdated Dec 2023\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};\nwindow.console.log('[p5.bezier]');\n// accuracy 0 - 10, default 7\nvar _p5bezierAccuracyListAll = {\n 0: 0.2,\n 1: 0.1,\n 2: 0.05,\n 3: 0.04,\n 4: 0.02,\n 5: 0.01,\n 6: 0.008,\n 7: 0.002,\n 8: 0.001,\n 9: 0.0005,\n 10: 0.0001,\n};\nvar _canvas, _ctx, _dimension, _useP5, _beginPath, _moveTo, _lineTo, _closePath;\nvar ENSURED_FACTORIAL_COUNT = 10;\nvar _calculatedFactorials = [1];\nvar _calculatedBinomialCoefficients = {};\n/* -------------------------------------------------------------------------- */\n/* -------------------------------------------------------------------------- */\n/* -------------------------------------------------------------------------- */\n// helpers\nfunction _determineDimension(context, isP3D) {\n return context.constructor.name === 'WebGLRenderingContext' || isP3D ? 3 : 2;\n}\nfunction _setCanvasFunctions(useP5, canvas, context) {\n if (useP5) {\n _beginPath = canvas.beginShape;\n _moveTo = canvas.vertex;\n _lineTo = canvas.vertex;\n _closePath = canvas.endShape;\n }\n else {\n _beginPath = context.beginPath.bind(context);\n _moveTo = context.moveTo.bind(context);\n _lineTo = context.lineTo.bind(context);\n _closePath = context.closePath.bind(context);\n }\n}\nfunction _ensureFactorials(n) {\n for (var i = _calculatedFactorials.length; i <= n; i++)\n _calculatedFactorials[i] = i * _calculatedFactorials[i - 1];\n}\n_ensureFactorials(ENSURED_FACTORIAL_COUNT);\nfunction _helper_factorial(i) {\n return _calculatedFactorials[i];\n}\nfunction _helper_binomialCoefficient(n, i) {\n return (_helper_factorial(n) / (_helper_factorial(i) * _helper_factorial(n - i)));\n}\nfunction _binomialCoefficient(n, i) {\n if (i === 0 || i === n)\n return 1;\n // _ensureFactorials(n)\n if (!_calculatedBinomialCoefficients[n])\n _calculatedBinomialCoefficients[n] = {};\n if (_calculatedBinomialCoefficients[n][i] !== undefined)\n return _calculatedBinomialCoefficients[n][i];\n _calculatedBinomialCoefficients[n][i] = _helper_binomialCoefficient(n, i);\n return _calculatedBinomialCoefficients[n][i];\n}\nfunction _helper_dist() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (args.length === 4)\n return Math.hypot(args[0] - args[2], args[1] - args[3]);\n else if (args.length === 6)\n return Math.hypot(args[0] - args[3], args[1] - args[4], args[2] - args[5]);\n return 0;\n}\nfunction _helper_style() {\n if (_canvas._doFill)\n _ctx.fill();\n if (_canvas._doStroke)\n _ctx.stroke();\n}\nfunction _deepCopyPoints(arr) {\n return arr.map(function (v) { return Array.from(v); });\n}\nfunction _findCloseCurveExtraPoints(pointList) {\n var first = pointList[0];\n var last = pointList[pointList.length - 1];\n var second = pointList[1];\n var secondLast = pointList[pointList.length - 2];\n var point1 = [\n 2 * last[0] - secondLast[0],\n 2 * last[1] - secondLast[1],\n ];\n var point2 = [2 * first[0] - second[0], 2 * first[1] - second[1]];\n return [point1, point2, first];\n}\nfunction _interpolateVertex(v1, v2, t) {\n if (v1.length === 2 && v2.length === 2)\n return [v1[0] + (v2[0] - v1[0]) * t, v1[1] + (v2[1] - v1[1]) * t];\n if (v1.length === 3 && v2.length === 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 return v2;\n}\n/* -------------------------------------------------------------------------- */\n/* -------------------------------------------------------------------------- */\n/* -------------------------------------------------------------------------- */\nfunction initBezier(canvas) {\n _canvas = canvas;\n _ctx = _canvas.drawingContext;\n if (typeof p5 !== 'undefined' && canvas instanceof p5.Graphics) {\n _useP5 = true;\n _dimension = _determineDimension(_ctx, false);\n }\n else if ((typeof p5 !== 'undefined' && canvas instanceof p5.Renderer) ||\n canvas.drawingContext) {\n _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 _dimension = _determineDimension(_ctx, canvas.isP3D);\n }\n else\n throw new Error('[p5.bezier] Canvas is not supported.');\n _setCanvasFunctions(_useP5, _canvas, _ctx);\n}\nfunction newBezier(pointList, closeType, accuracy) {\n if (closeType === void 0) { closeType = 'OPEN'; }\n if (accuracy === void 0) { accuracy = 7; }\n pointList = _deepCopyPoints(pointList);\n if (closeType === 'CLOSE') {\n var closeCurveExtraPoints = _findCloseCurveExtraPoints(pointList);\n pointList.push.apply(pointList, closeCurveExtraPoints);\n }\n var tIncrement = _p5bezierAccuracyListAll[accuracy];\n var p = pointList.length; // pointList has p points for (p - 1) degree curves\n var n = p - 1;\n _ensureFactorials(n);\n _beginPath();\n _moveTo.apply(void 0, pointList[0]);\n if (_dimension === 2) {\n var x = void 0, y = void 0, t = void 0;\n for (t = 0; t <= 1; t += tIncrement) {\n x = y = 0;\n for (var i = 0; i <= n; i++) {\n var coefficient = _binomialCoefficient(n, i) * Math.pow(1 - t, n - i) * Math.pow(t, i);\n x += coefficient * pointList[i][0];\n y += coefficient * pointList[i][1];\n }\n _lineTo(x, y);\n }\n }\n else if (_dimension === 3) {\n var t = void 0;\n for (t = 0; t <= 1; t += tIncrement) {\n var xyz = [0, 0, 0];\n for (var i = 0; i <= n; i++) {\n var coefficient = _binomialCoefficient(n, i) * Math.pow(1 - t, n - i) * Math.pow(t, i);\n for (var d = 0; d < 3; d++)\n xyz[d] += coefficient * pointList[i][d];\n }\n _lineTo.apply(void 0, xyz);\n }\n }\n _lineTo.apply(void 0, pointList.slice(-1)[0]);\n if (_useP5)\n _closePath(closeType);\n else if (closeType === 'CLOSE')\n _closePath();\n _helper_style();\n}\nfunction newBezierObj(pointList, closeType, accuracy) {\n if (closeType === void 0) { closeType = 'OPEN'; }\n if (accuracy === void 0) { accuracy = 7; }\n var increment = _p5bezierAccuracyListAll[accuracy];\n return new BezierCurve(pointList, closeType, increment, _dimension);\n}\nvar BezierCurve = /** @class */ (function () {\n // take pointList, closeType, tIncrement, bezierDimension into constructor\n function BezierCurve(points, closeType, increment, dimension, vertexList) {\n var _a;\n if (vertexList === void 0) { vertexList = null; }\n this.controlPoints = _deepCopyPoints(points);\n if (closeType === 'CLOSE') {\n (_a = this.controlPoints).push.apply(_a, _findCloseCurveExtraPoints(this.controlPoints));\n this.closeType = 'CLOSE';\n }\n else\n this.closeType = 'OPEN';\n this.dimension = 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 // ensure enough factorials are calculated up to this.n\n _ensureFactorials(this.n);\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 if (this.dimension === 2) {\n for (var t = 0; t <= 1; t += this.increment) {\n var x = 0;\n var y = 0;\n for (var i = 0; i <= this.n; i++) {\n var binomialCoefficient = _binomialCoefficient(this.n, i);\n var term = binomialCoefficient * Math.pow(1 - t, this.n - i) * Math.pow(t, i);\n x += term * this.controlPoints[i][0];\n y += term * this.controlPoints[i][1];\n }\n this.vertexList.push([x, y]);\n }\n }\n else if (this.dimension === 3) {\n for (var t = 0; t <= 1; t += this.increment) {\n var xyz = [0, 0, 0];\n for (var i = 0; i <= this.n; i++) {\n var binomialCoefficient = _binomialCoefficient(this.n, i);\n var term = binomialCoefficient * Math.pow(1 - t, this.n - i) * Math.pow(t, i);\n for (var d = 0; d < 3; d++) {\n xyz[d] += term * this.controlPoints[i][d];\n }\n }\n this.vertexList.push(xyz);\n }\n }\n this._addVertex(this.controlPoints[this.controlPoints.length - 1]);\n this.dimension = this.vertexList[0].length; // update dimension\n return this.vertexList;\n };\n BezierCurve.prototype._addVertex = function (vArray) {\n // vArray is an array of [x, y] or [x, y, z]\n _lineTo.apply(void 0, vArray);\n };\n BezierCurve.prototype._distVertex = function (vArray1, vArray2) {\n if (this.dimension === 3 && vArray1.length === 3 && vArray2.length === 3) {\n return _helper_dist(vArray1[0], vArray1[1], vArray1[2], vArray2[0], vArray2[1], vArray2[2]);\n }\n else if (this.dimension === 2) {\n return _helper_dist(vArray1[0], vArray1[1], vArray2[0], vArray2[1]);\n }\n return 0;\n };\n BezierCurve.prototype.draw = function (dash) {\n var _this = this;\n if (!dash) {\n _beginPath();\n this.vertexList.map(function (v) { return _this._addVertex(v); });\n if (this.closeType === 'CLOSE')\n _ctx.closePath();\n if (_useP5)\n _closePath(this.closeType);\n else if (this.closeType === 'CLOSE')\n _closePath();\n _helper_style();\n }\n else {\n if (this.increment > 0.008) {\n this.increment = 0.008;\n console.warn('[p5.bezier] Accuracy is changed to 6 for a dash curve.');\n }\n // draw a dash curve\n var solidPart = Math.abs(dash[0]), gapPart = Math.abs(dash[1]), solid = true;\n var lastVertex = this.vertexList[0];\n var toUseVertexInd = 1, toUseVertex = this.vertexList[toUseVertexInd];\n var currentVirtualVertex = lastVertex;\n var availableDist = 0, neededDist = solid ? solidPart : gapPart;\n _ctx.save(); // push\n _ctx.fillStyle = 'rgba(0, 0, 0, 0)'; // TODO\n _beginPath();\n _moveTo.apply(void 0, lastVertex);\n while (toUseVertexInd < this.vertexList.length) {\n toUseVertex = this.vertexList[toUseVertexInd];\n var newDist = this._distVertex(lastVertex, toUseVertex);\n availableDist = newDist;\n while (availableDist >= neededDist) {\n currentVirtualVertex = _interpolateVertex(currentVirtualVertex, toUseVertex, neededDist / availableDist);\n if (solid)\n _lineTo.apply(void 0, currentVirtualVertex);\n else\n _moveTo.apply(void 0, currentVirtualVertex);\n availableDist -= neededDist;\n solid = !solid;\n neededDist = solid ? solidPart : gapPart;\n }\n // available dist is not enough, used as much as possible\n if (solid)\n _lineTo.apply(void 0, toUseVertex);\n else\n _moveTo.apply(void 0, toUseVertex);\n var usedDist = this._distVertex(currentVirtualVertex, toUseVertex);\n neededDist -= usedDist;\n lastVertex = toUseVertex;\n currentVirtualVertex = lastVertex;\n toUseVertexInd++;\n }\n _helper_style();\n _ctx.restore();\n }\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 else if (this.controlPoints.every(function (v, i) { return v === newControlPointList[i]; })) {\n return;\n }\n else {\n this.controlPoints = newControlPointList;\n this._buildVertexList();\n }\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 else {\n var toMove_1 = [x, y];\n if (z !== null)\n toMove_1.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.dimension, newCurveV);\n newCurveObj.vertexList = newCurveObj.vertexList.map(function (v) { return v.map(function (val, i) { return val + toMove_1[i]; }); });\n if (toDraw)\n newCurveObj.draw(dash);\n return newCurveObj;\n }\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 = 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 { initBezier, newBezier, newBezierObj };\n"],"names":["root","factory","exports","module","define","amd","this","__webpack_require__","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","__spreadArray","to","from","pack","arguments","length","ar","i","l","Array","slice","concat","window","console","log","_canvas","_ctx","_dimension","_useP5","_beginPath","_moveTo","_lineTo","_closePath","_p5bezierAccuracyListAll","_calculatedFactorials","_calculatedBinomialCoefficients","_determineDimension","context","isP3D","constructor","name","_ensureFactorials","n","_helper_factorial","_binomialCoefficient","undefined","_helper_binomialCoefficient","_helper_dist","args","_i","Math","hypot","_helper_style","_doFill","fill","_doStroke","stroke","_deepCopyPoints","arr","map","v","_findCloseCurveExtraPoints","pointList","first","last","second","secondLast","initBezier","canvas","drawingContext","p5","Graphics","Renderer","Error","warn","useP5","beginShape","vertex","endShape","beginPath","bind","moveTo","lineTo","closePath","_setCanvasFunctions","newBezier","closeType","accuracy","closeCurveExtraPoints","push","apply","tIncrement","x","y","t","coefficient","pow","xyz","d","newBezierObj","increment","BezierCurve","points","dimension","vertexList","_a","controlPoints","p","_buildVertexList","term","_addVertex","vArray","_distVertex","vArray1","vArray2","draw","dash","v1","v2","_this","solidPart","abs","gapPart","solid","lastVertex","toUseVertexInd","toUseVertex","currentVirtualVertex","availableDist","neededDist","save","fillStyle","restore","update","newControlPointList","every","move","z","toDraw","toMove_1","newCurveV","newCurveObj","val","shortest","pX","pY","pZ","minVertex","dMin","Infinity","nowMin"],"sourceRoot":""}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "p5bezier",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Bezier
|
|
3
|
+
"version": "0.6.0",
|
|
4
|
+
"description": "Bezier curves for canvas graphics on the web, built to work with p5.js.",
|
|
5
5
|
"main": "lib/p5.bezier.min.js",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"p5.js",
|
|
@@ -19,15 +19,15 @@
|
|
|
19
19
|
},
|
|
20
20
|
"homepage": "https://github.com/peilingjiang/p5.bezier#readme",
|
|
21
21
|
"devDependencies": {
|
|
22
|
-
"eslint": "^8.
|
|
22
|
+
"eslint": "^8.56.0",
|
|
23
23
|
"husky": "^8.0.3",
|
|
24
|
-
"lint-staged": "^
|
|
25
|
-
"prettier": "^
|
|
24
|
+
"lint-staged": "^15.2.0",
|
|
25
|
+
"prettier": "^3.1.1",
|
|
26
26
|
"terser-webpack-plugin": "^5.3.9",
|
|
27
|
-
"ts-loader": "^9.
|
|
28
|
-
"typescript": "^5.
|
|
29
|
-
"webpack": "^5.
|
|
30
|
-
"webpack-cli": "^5.1.
|
|
27
|
+
"ts-loader": "^9.5.1",
|
|
28
|
+
"typescript": "^5.3.3",
|
|
29
|
+
"webpack": "^5.89.0",
|
|
30
|
+
"webpack-cli": "^5.1.4"
|
|
31
31
|
},
|
|
32
32
|
"scripts": {
|
|
33
33
|
"format": "prettier --write \"**/*.{js,json,md,html,css}\"",
|