curvy 1.0.7 → 1.0.9

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.
Files changed (109) hide show
  1. package/dist/curve/cubic2d.d.mts +80 -2
  2. package/dist/curve/cubic2d.d.ts +80 -2
  3. package/dist/curve/cubic2d.mjs +9 -26
  4. package/dist/curve/cubic2d.mjs.map +1 -0
  5. package/dist/curve/linear2d.d.mts +68 -2
  6. package/dist/curve/linear2d.d.ts +68 -2
  7. package/dist/curve/linear2d.mjs +11 -14
  8. package/dist/curve/linear2d.mjs.map +1 -0
  9. package/dist/curve/quadratic2d.d.mts +86 -2
  10. package/dist/curve/quadratic2d.d.ts +86 -2
  11. package/dist/curve/quadratic2d.mjs +10 -15
  12. package/dist/curve/quadratic2d.mjs.map +1 -0
  13. package/dist/interval.d.mts +195 -2
  14. package/dist/interval.d.ts +195 -2
  15. package/dist/interval.mjs +9 -12
  16. package/dist/interval.mjs.map +1 -0
  17. package/dist/matrix/matrix2x2.d.mts +273 -2
  18. package/dist/matrix/matrix2x2.d.ts +273 -2
  19. package/dist/matrix/matrix2x2.mjs +5 -4
  20. package/dist/matrix/matrix2x2.mjs.map +1 -0
  21. package/dist/matrix/matrix3x3.d.mts +308 -1
  22. package/dist/matrix/matrix3x3.d.ts +308 -1
  23. package/dist/matrix/matrix3x3.mjs +5 -4
  24. package/dist/matrix/matrix3x3.mjs.map +1 -0
  25. package/dist/matrix/matrix4x4.d.mts +310 -1
  26. package/dist/matrix/matrix4x4.d.ts +310 -1
  27. package/dist/matrix/matrix4x4.mjs +24 -61
  28. package/dist/matrix/matrix4x4.mjs.map +1 -0
  29. package/dist/path/cubic2d.d.mts +68 -2
  30. package/dist/path/cubic2d.d.ts +68 -2
  31. package/dist/path/cubic2d.mjs +10 -12
  32. package/dist/path/cubic2d.mjs.map +1 -0
  33. package/dist/path/linear2d.d.mts +68 -2
  34. package/dist/path/linear2d.d.ts +68 -2
  35. package/dist/path/linear2d.mjs +7 -9
  36. package/dist/path/linear2d.mjs.map +1 -0
  37. package/dist/path/quadratic2d.d.mts +67 -2
  38. package/dist/path/quadratic2d.d.ts +67 -2
  39. package/dist/path/quadratic2d.mjs +9 -13
  40. package/dist/path/quadratic2d.mjs.map +1 -0
  41. package/dist/pipe.mjs +1 -0
  42. package/dist/pipe.mjs.map +1 -0
  43. package/dist/polynomial/cubic.d.mts +1 -1
  44. package/dist/polynomial/cubic.d.ts +1 -1
  45. package/dist/polynomial/cubic.mjs +13 -28
  46. package/dist/polynomial/cubic.mjs.map +1 -0
  47. package/dist/polynomial/linear.d.mts +1 -1
  48. package/dist/polynomial/linear.d.ts +1 -1
  49. package/dist/polynomial/linear.mjs +2 -1
  50. package/dist/polynomial/linear.mjs.map +1 -0
  51. package/dist/polynomial/quadratic.d.mts +2 -2
  52. package/dist/polynomial/quadratic.d.ts +2 -2
  53. package/dist/polynomial/quadratic.mjs +5 -2
  54. package/dist/polynomial/quadratic.mjs.map +1 -0
  55. package/dist/shared/{curvy.Cps2R_RU.mjs → curvy.BkkW8Tx9.mjs} +11 -29
  56. package/dist/shared/curvy.BkkW8Tx9.mjs.map +1 -0
  57. package/dist/shared/{curvy.BzVmUIKm.mjs → curvy.BxdGW9he.mjs} +17 -32
  58. package/dist/shared/curvy.BxdGW9he.mjs.map +1 -0
  59. package/dist/shared/{curvy.C2XGH0R0.mjs → curvy.C_sCeg9J.mjs} +15 -24
  60. package/dist/shared/curvy.C_sCeg9J.mjs.map +1 -0
  61. package/dist/shared/curvy.Cg8lZVUz.d.ts +688 -0
  62. package/dist/shared/{curvy.CE4X6_Is.mjs → curvy.DCt1gGII.mjs} +11 -45
  63. package/dist/shared/curvy.DCt1gGII.mjs.map +1 -0
  64. package/dist/shared/{curvy.BZ_mTkJe.mjs → curvy.DJ4xO0al.mjs} +9 -6
  65. package/dist/shared/curvy.DJ4xO0al.mjs.map +1 -0
  66. package/dist/shared/curvy.DmVFTi0N.mjs +1 -0
  67. package/dist/shared/curvy.DmVFTi0N.mjs.map +1 -0
  68. package/dist/shared/curvy.FDaj5rlj.d.mts +688 -0
  69. package/dist/shared/{curvy.NLeFCr-9.mjs → curvy.lktriTpx.mjs} +19 -42
  70. package/dist/shared/curvy.lktriTpx.mjs.map +1 -0
  71. package/dist/shared/{curvy.Ck0of1PI.mjs → curvy.mLFprrGm.mjs} +26 -22
  72. package/dist/shared/curvy.mLFprrGm.mjs.map +1 -0
  73. package/dist/shared/{curvy.BDhiZ7He.mjs → curvy.r6f1j287.mjs} +8 -12
  74. package/dist/shared/curvy.r6f1j287.mjs.map +1 -0
  75. package/dist/splines/basis2d.d.mts +94 -2
  76. package/dist/splines/basis2d.d.ts +94 -2
  77. package/dist/splines/basis2d.mjs +13 -12
  78. package/dist/splines/basis2d.mjs.map +1 -0
  79. package/dist/splines/bezier2d.d.mts +136 -2
  80. package/dist/splines/bezier2d.d.ts +136 -2
  81. package/dist/splines/bezier2d.mjs +10 -9
  82. package/dist/splines/bezier2d.mjs.map +1 -0
  83. package/dist/splines/cardinal2d.d.mts +131 -2
  84. package/dist/splines/cardinal2d.d.ts +131 -2
  85. package/dist/splines/cardinal2d.mjs +15 -24
  86. package/dist/splines/cardinal2d.mjs.map +1 -0
  87. package/dist/splines/hermite2d.d.mts +94 -3
  88. package/dist/splines/hermite2d.d.ts +94 -3
  89. package/dist/splines/hermite2d.mjs +22 -36
  90. package/dist/splines/hermite2d.mjs.map +1 -0
  91. package/dist/utils.d.mts +179 -1
  92. package/dist/utils.d.ts +179 -1
  93. package/dist/utils.mjs +16 -7
  94. package/dist/utils.mjs.map +1 -0
  95. package/dist/vector/vector2.d.mts +259 -1
  96. package/dist/vector/vector2.d.ts +259 -1
  97. package/dist/vector/vector2.mjs +4 -2
  98. package/dist/vector/vector2.mjs.map +1 -0
  99. package/dist/vector/vector3.d.mts +345 -1
  100. package/dist/vector/vector3.d.ts +345 -1
  101. package/dist/vector/vector3.mjs +9 -2
  102. package/dist/vector/vector3.mjs.map +1 -0
  103. package/dist/vector/vector4.d.mts +163 -1
  104. package/dist/vector/vector4.d.ts +163 -1
  105. package/dist/vector/vector4.mjs +4 -2
  106. package/dist/vector/vector4.mjs.map +1 -0
  107. package/package.json +4 -4
  108. package/dist/shared/curvy.BsHoYJNv.d.ts +0 -155
  109. package/dist/shared/curvy.NsmY7zcr.d.mts +0 -155
@@ -46,53 +46,27 @@ function* toCurves(points, matrix, stride) {
46
46
  for (const [p0, p1, p2, p3] of toPointQuads(points, stride)) {
47
47
  yield fromPolynomials(
48
48
  fromVector(
49
- vectorProductLeft(
50
- matrix,
51
- make$2(p0.x, p1.x, p2.x, p3.x)
52
- )
49
+ vectorProductLeft(matrix, make$2(p0.x, p1.x, p2.x, p3.x))
53
50
  ),
54
51
  fromVector(
55
- vectorProductLeft(
56
- matrix,
57
- make$2(p0.y, p1.y, p2.y, p3.y)
58
- )
52
+ vectorProductLeft(matrix, make$2(p0.y, p1.y, p2.y, p3.y))
59
53
  )
60
54
  );
61
55
  }
62
56
  }
63
57
 
64
- const characteristic$1 = make$3(
65
- 1,
66
- 0,
67
- 0,
68
- 0,
69
- -3,
70
- 3,
71
- 0,
72
- 0,
73
- 3,
74
- -6,
75
- 3,
76
- 0,
77
- -1,
78
- 3,
79
- -3,
80
- 1
81
- );
58
+ var _a;
59
+ const characteristic$1 = make$3(1, 0, 0, 0, -3, 3, 0, 0, 3, -6, 3, 0, -1, 3, -3, 1);
82
60
  const Bezier2dTypeId = Symbol("curvy/splines/bezier2d");
83
61
  class Bezier2dImpl extends Pipeable {
84
- [Bezier2dTypeId] = Bezier2dTypeId;
85
- points;
86
62
  constructor(points) {
87
63
  invariant(points.length >= 4, "cubic splines requires 4 or more points");
88
- invariant(
89
- points.length % 3 === 1,
90
- "cubic splines requires (n * 3) + 1 points"
91
- );
64
+ invariant(points.length % 3 === 1, "cubic splines requires (n * 3) + 1 points");
92
65
  super();
66
+ this[_a] = Bezier2dTypeId;
93
67
  this.points = points;
94
68
  }
95
- [Symbol.iterator]() {
69
+ [(_a = Bezier2dTypeId, Symbol.iterator)]() {
96
70
  return this.points[Symbol.iterator]();
97
71
  }
98
72
  }
@@ -101,9 +75,7 @@ const make$1 = (p0, p1, p2, p3) => new Bezier2dImpl([p0, p1, p2, p3]);
101
75
  const fromArray$1 = (points) => new Bezier2dImpl(points);
102
76
  const append$1 = dual(
103
77
  4,
104
- (p, p1, p2, p3) => new Bezier2dImpl(
105
- (p instanceof Bezier2dImpl ? p.points : Array.from(p)).concat(p1, p2, p3)
106
- )
78
+ (p, p1, p2, p3) => new Bezier2dImpl((p instanceof Bezier2dImpl ? p.points : Array.from(p)).concat(p1, p2, p3))
107
79
  );
108
80
  const fromSpline$1 = (p, matrix, stride) => {
109
81
  const points = [];
@@ -118,11 +90,7 @@ const fromSpline$1 = (p, matrix, stride) => {
118
90
  characteristic$1,
119
91
  vectorProductLeft(matrix, make$2(p0.y, p1.y, p2.y, p3.y))
120
92
  );
121
- points.push(
122
- make$4(x.x, y.x),
123
- make$4(x.y, y.y),
124
- make$4(x.z, y.z)
125
- );
93
+ points.push(make$4(x.x, y.x), make$4(x.y, y.y), make$4(x.z, y.z));
126
94
  }
127
95
  if (x && y) {
128
96
  points.push(make$4(x.w, y.w));
@@ -151,10 +119,7 @@ const appendCurvatureAligned = dual(
151
119
  return append$1(p, p4, p5, p6);
152
120
  }
153
121
  );
154
- const appendVelocityAligned$1 = dual(
155
- 3,
156
- (p, p5, p6) => appendTangentAligned$1(p, 1, p5, p6)
157
- );
122
+ const appendVelocityAligned$1 = dual(3, (p, p5, p6) => appendTangentAligned$1(p, 1, p5, p6));
158
123
  const appendAccelerationAligned$1 = dual(2, (p, p6) => {
159
124
  const points = p instanceof Bezier2dImpl ? p.points : Array.from(p);
160
125
  const p1 = points[points.length - 3];
@@ -179,3 +144,4 @@ const appendAccelerationAligned = appendAccelerationAligned$1;
179
144
  const toPath = toPath$1;
180
145
 
181
146
  export { fromArray as a, append as b, characteristic as c, appendTangentAligned as d, appendCurvatureMirrored as e, fromSpline as f, appendVelocityAligned as g, appendAccelerationAligned as h, isCubicBezier2d as i, toPath as j, make as m, toCurves as t };
147
+ //# sourceMappingURL=curvy.DCt1gGII.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curvy.DCt1gGII.mjs","sources":["../../src/splines/util.ts","../../src/splines/bezier2d.internal.ts","../../src/splines/bezier2d.ts"],"sourcesContent":["import * as CubicCurve2d from '../curve/cubic2d'\nimport * as Matrix4x4 from '../matrix/matrix4x4'\nimport * as CubicPolynomial from '../polynomial/cubic'\nimport type { Vector2 } from '../vector/vector2'\nimport * as Vector4 from '../vector/vector4'\n\nexport function* toPointQuads(points: Iterable<Vector2>, stride: 1 | 2 | 3) {\n let p0: Vector2 | undefined\n let p1: Vector2 | undefined\n let p2: Vector2 | undefined\n let p3: Vector2 | undefined\n\n for (const point of points) {\n if (p0 === undefined) {\n p0 = point\n continue\n }\n\n if (p1 === undefined) {\n p1 = point\n continue\n }\n\n if (p2 === undefined) {\n p2 = point\n continue\n }\n\n p3 = point\n\n yield [p0, p1, p2, p3] as const\n\n if (stride === 1) {\n p0 = p1\n p1 = p2\n p2 = p3\n } else if (stride === 2) {\n p0 = p2\n p1 = p3\n p2 = undefined\n } else if (stride === 3) {\n p0 = p3\n p1 = undefined\n p2 = undefined\n }\n }\n}\n\nexport function* toCurves(\n points: Iterable<Vector2>,\n matrix: Matrix4x4.Matrix4x4,\n stride: 1 | 2 | 3,\n) {\n for (const [p0, p1, p2, p3] of toPointQuads(points, stride)) {\n yield CubicCurve2d.fromPolynomials(\n CubicPolynomial.fromVector(\n Matrix4x4.vectorProductLeft(matrix, Vector4.make(p0.x, p1.x, p2.x, p3.x)),\n ),\n CubicPolynomial.fromVector(\n Matrix4x4.vectorProductLeft(matrix, Vector4.make(p0.y, p1.y, p2.y, p3.y)),\n ),\n )\n }\n}\n","import * as Matrix4x4 from '../matrix/matrix4x4'\nimport * as CubicPath2d from '../path/cubic2d'\nimport { Pipeable } from '../pipe'\nimport { dual } from '../pipe'\nimport { invariant } from '../utils'\nimport * as Vector2 from '../vector/vector2'\nimport * as Vector4 from '../vector/vector4'\nimport type { Bezier2d } from './bezier2d'\nimport { toCurves, toPointQuads } from './util'\n\nexport const characteristic = Matrix4x4.make(1, 0, 0, 0, -3, 3, 0, 0, 3, -6, 3, 0, -1, 3, -3, 1)\n\nexport const Bezier2dTypeId = Symbol('curvy/splines/bezier2d')\nexport type Bezier2dTypeId = typeof Bezier2dTypeId\n\nclass Bezier2dImpl extends Pipeable implements Bezier2d {\n readonly [Bezier2dTypeId]: Bezier2dTypeId = Bezier2dTypeId\n\n readonly points: ReadonlyArray<Vector2.Vector2>\n\n constructor(points: ReadonlyArray<Vector2.Vector2>) {\n invariant(points.length >= 4, 'cubic splines requires 4 or more points')\n invariant(points.length % 3 === 1, 'cubic splines requires (n * 3) + 1 points')\n super()\n this.points = points\n }\n\n [Symbol.iterator]() {\n return this.points[Symbol.iterator]()\n }\n}\n\nexport const isCubicBezier2d = (p: unknown): p is Bezier2d =>\n typeof p === 'object' && p !== null && Bezier2dTypeId in p\n\nexport const make = (\n p0: Vector2.Vector2,\n p1: Vector2.Vector2,\n p2: Vector2.Vector2,\n p3: Vector2.Vector2,\n) => new Bezier2dImpl([p0, p1, p2, p3])\n\nexport const fromArray = (points: ReadonlyArray<Vector2.Vector2>) => new Bezier2dImpl(points)\n\nexport const append = dual<\n (p1: Vector2.Vector2, p2: Vector2.Vector2, p3: Vector2.Vector2) => (p: Bezier2d) => Bezier2d,\n (p: Bezier2d, p1: Vector2.Vector2, p2: Vector2.Vector2, p3: Vector2.Vector2) => Bezier2d\n>(\n 4,\n (p: Bezier2d, p1: Vector2.Vector2, p2: Vector2.Vector2, p3: Vector2.Vector2) =>\n new Bezier2dImpl((p instanceof Bezier2dImpl ? p.points : Array.from(p)).concat(p1, p2, p3)),\n)\n\nexport const fromSpline = (\n p: Iterable<Vector2.Vector2>,\n matrix: Matrix4x4.Matrix4x4,\n stride: 1 | 2 | 3,\n) => {\n const points: Array<Vector2.Vector2> = []\n\n let x: Vector4.Vector4 | undefined\n let y: Vector4.Vector4 | undefined\n\n for (const [p0, p1, p2, p3] of toPointQuads(p, stride)) {\n x = Matrix4x4.solveSystem(\n characteristic,\n Matrix4x4.vectorProductLeft(matrix, Vector4.make(p0.x, p1.x, p2.x, p3.x)),\n )\n\n y = Matrix4x4.solveSystem(\n characteristic,\n Matrix4x4.vectorProductLeft(matrix, Vector4.make(p0.y, p1.y, p2.y, p3.y)),\n )\n\n points.push(Vector2.make(x.x, y.x), Vector2.make(x.y, y.y), Vector2.make(x.z, y.z))\n }\n\n if (x && y) {\n points.push(Vector2.make(x.w, y.w))\n }\n\n return fromArray(points)\n}\n\nexport const appendTangentAligned = dual<\n (a: number, p5: Vector2.Vector2, p6: Vector2.Vector2) => (p: Bezier2d) => Bezier2d,\n (p: Bezier2d, a: number, p5: Vector2.Vector2, p6: Vector2.Vector2) => Bezier2d\n>(4, (p: Bezier2d, a: number, p5: Vector2.Vector2, p6: Vector2.Vector2) => {\n const points = p instanceof Bezier2dImpl ? p.points : Array.from(p)\n const p2 = points[points.length - 2] as Vector2.Vector2\n const p3 = points[points.length - 1] as Vector2.Vector2\n const p4 = Vector2.make(p3.x + (p3.x - p2.x) * a, p3.y + (p3.y - p2.y) * a)\n\n return append(p, p4, p5, p6)\n})\n\nexport const appendCurvatureAligned = dual(\n 4,\n (p: Bezier2d, a: number, b: number, p6: Vector2.Vector2) => {\n const points = p instanceof Bezier2dImpl ? p.points : Array.from(p)\n const p1 = points[points.length - 3] as Vector2.Vector2\n const p2 = points[points.length - 2] as Vector2.Vector2\n const p3 = points[points.length - 1] as Vector2.Vector2\n\n const p4 = Vector2.make(p3.x + (p3.x - p2.x) * a, p3.y + (p3.y - p2.y) * a)\n const p5 = Vector2.make(\n p3.x + (p3.x - p2.x) * (2 * a + a ** 2 + b / 2) + (p1.x - p2.x) * a ** 2,\n p3.y + (p3.y - p2.y) * (2 * a + a ** 2 + b / 2) + (p1.y - p2.y) * a ** 2,\n )\n\n return append(p, p4, p5, p6)\n },\n)\n\nexport const appendVelocityAligned = dual<\n (p5: Vector2.Vector2, p6: Vector2.Vector2) => (p: Bezier2d) => Bezier2d,\n (p: Bezier2d, p5: Vector2.Vector2, p6: Vector2.Vector2) => Bezier2d\n>(3, (p: Bezier2d, p5: Vector2.Vector2, p6: Vector2.Vector2) => appendTangentAligned(p, 1, p5, p6))\n\nexport const appendAccelerationAligned = dual<\n (p6: Vector2.Vector2) => (p: Bezier2d) => Bezier2d,\n (p: Bezier2d, p6: Vector2.Vector2) => Bezier2d\n>(2, (p: Bezier2d, p6: Vector2.Vector2) => {\n const points = p instanceof Bezier2dImpl ? p.points : Array.from(p)\n const p1 = points[points.length - 3] as Vector2.Vector2\n const p2 = points[points.length - 2] as Vector2.Vector2\n const p3 = points[points.length - 1] as Vector2.Vector2\n\n const p4 = Vector2.make(2 * p3.x - p2.x, 2 * p3.y - p2.y)\n const p5 = Vector2.make(p1.x + 4 * (p3.x - p2.x), p1.y + 4 * (p3.y - p2.y))\n\n return append(p, p4, p5, p6)\n})\n\nexport const toPath = (p: Bezier2d) => CubicPath2d.fromCurves(...toCurves(p, characteristic, 3))\n","import type { Matrix4x4 } from '../matrix/matrix4x4'\nimport type { CubicPath2d } from '../path/cubic2d'\nimport type { Pipeable } from '../pipe'\nimport type { Vector2 } from '../vector/vector2'\nimport type { Bezier2dTypeId } from './bezier2d.internal'\nimport * as internal from './bezier2d.internal'\n\n/**\n * A Bézier curve in 2D space.\n *\n * All fields are readonly and immutable, and all operations create new instances.\n *\n * @since 1.0.0\n */\nexport interface Bezier2d extends Pipeable {\n readonly [Bezier2dTypeId]: Bezier2dTypeId\n [Symbol.iterator](): IterableIterator<Vector2>\n}\n\n/**\n * Characteristic matrix of a Bézier curve.\n *\n * The characteristic matrix is a 4x4 matrix that defines the shape of the Bézier curve.\n *\n * @since 1.0.0\n */\nexport const characteristic: Matrix4x4 = internal.characteristic\n\n/**\n * Creates a new `Bezier2d` instance.\n *\n * @param p0 - The first control point.\n * @param p1 - The second control point.\n * @param p2 - The third control point.\n * @param p3 - The fourth control point.\n * @returns A new `Bezier2d` instance.\n * @since 1.0.0\n */\nexport const make: (p0: Vector2, p1: Vector2, p2: Vector2, p3: Vector2) => Bezier2d = internal.make\n\n/**\n * Creates a new `Bezier2d` instance from an array of control points.\n *\n * @param points - The control points.\n * @returns A new `Bezier2d` instance.\n * @since 1.0.0\n */\nexport const fromArray: (points: ReadonlyArray<Vector2>) => Bezier2d = internal.fromArray\n\n/**\n * Creates a new `Bezier2d` instance from an iterable of control points and the characteristic matrix associated with the control points.\n *\n * @param points - The control points.\n * @param matrix - The characteristic matrix.\n * @param stride - The stride of the control points.\n * @returns A new `Bezier2d` instance.\n * @since 1.0.0\n */\nexport const fromSpline: (\n points: Iterable<Vector2>,\n matrix: Matrix4x4,\n stride: 1 | 2 | 3,\n) => Bezier2d = internal.fromSpline\n\n/**\n * Checks if a value is a `Bezier2d`.\n *\n * @param p - The value to check.\n * @returns `true` if the value is a `Bezier2d`, `false` otherwise.\n * @since 1.0.0\n */\nexport const isCubicBezier2d: (p: unknown) => p is Bezier2d = internal.isCubicBezier2d\n\nexport const append: {\n /**\n * Appends control points to a `Bezier2d`.\n *\n * @param p1 - The second control point (first tangent).\n * @param p2 - The third control point (second tangent).\n * @param p3 - The fourth control point (end point).\n * @returns A function that takes a `Bezier2d` and returns a new `Bezier2d` instance with the appended control points.\n */\n (p1: Vector2, p2: Vector2, p3: Vector2): (p: Bezier2d) => Bezier2d\n /**\n * Appends control points to a `Bezier2d`.\n *\n * @param p - The `Bezier2d` to append the control points to.\n * @param p1 - The second control point (first tangent).\n * @param p2 - The third control point (second tangent).\n * @param p3 - The fourth control point (end point).\n * @returns A new `Bezier2d` instance with the appended control points.\n */\n (p: Bezier2d, p1: Vector2, p2: Vector2, p3: Vector2): Bezier2d\n} = internal.append\n\nexport const appendTangentAligned: {\n /**\n * Appends control points to a `Bezier2d` with aligned tangents.\n *\n * @param ratio - The ratio of the tangents.\n * @param p2 - The third control point (second tangent).\n * @param p3 - The fourth control point (end point).\n * @returns A function that takes a `Bezier2d` and returns a new `Bezier2d` instance with the appended control points.\n */\n (ratio: number, p2: Vector2, p3: Vector2): (p: Bezier2d) => Bezier2d\n /**\n * Appends control points to a `Bezier2d` with aligned tangents.\n *\n * @param p - The `Bezier2d` to append the control points to.\n * @param ratio - The ratio of the tangents.\n * @param p2 - The third control point (second tangent).\n * @param p3 - The fourth control point (end point).\n * @returns A new `Bezier2d` instance with the appended control points.\n */\n (p: Bezier2d, ratio: number, p2: Vector2, p3: Vector2): Bezier2d\n} = internal.appendTangentAligned\n\nexport const appendCurvatureMirrored: {\n /**\n * Appends control points to a `Bezier2d` with mirrored curvature.\n *\n * @param a - The first curvature parameter.\n * @param b - The second curvature parameter.\n * @param p6 - The sixth control point (end point).\n * @returns A function that takes a `Bezier2d` and returns a new `Bezier2d` instance with the appended control points.\n */\n (a: number, b: number, p6: Vector2): (p: Bezier2d) => Bezier2d\n /**\n * Appends control points to a `Bezier2d` with mirrored curvature.\n *\n * @param p - The `Bezier2d` to append the control points to.\n * @param a - The first curvature parameter.\n * @param b - The second curvature parameter.\n * @param p6 - The sixth control point (end point).\n * @returns A new `Bezier2d` instance with the appended control points.\n */\n (p: Bezier2d, a: number, b: number, p6: Vector2): Bezier2d\n} = internal.appendCurvatureAligned\n\nexport const appendVelocityAligned: {\n /**\n * Appends control points to a `Bezier2d` with aligned velocity.\n *\n * @param p2 - The second control point (first tangent).\n * @param p3 - The third control point (second tangent).\n * @returns A function that takes a `Bezier2d` and returns a new `Bezier2d` instance with the appended control points.\n */\n (p2: Vector2, p3: Vector2): (p: Bezier2d) => Bezier2d\n /**\n * Appends control points to a `Bezier2d` with aligned velocity.\n *\n * @param p - The `Bezier2d` to append the control points to.\n * @param p2 - The second control point (first tangent).\n * @param p3 - The third control point (second tangent).\n * @returns A new `Bezier2d` instance with the appended control points.\n */\n (p: Bezier2d, p2: Vector2, p3: Vector2): Bezier2d\n} = internal.appendVelocityAligned\n\nexport const appendAccelerationAligned: {\n /**\n * Appends control points to a `Bezier2d` with aligned acceleration.\n *\n * @param p3 - The third control point (second tangent).\n * @returns A function that takes a `Bezier2d` and returns a new `Bezier2d` instance with the appended control points.\n */\n (p3: Vector2): (p: Bezier2d) => Bezier2d\n /**\n * Appends control points to a `Bezier2d` with aligned acceleration.\n *\n * @param p - The `Bezier2d` to append the control points to.\n * @param p3 - The third control point (second tangent).\n * @returns A new `Bezier2d` instance with the appended control points.\n */\n (p: Bezier2d, p3: Vector2): Bezier2d\n} = internal.appendAccelerationAligned\n\n/**\n * Converts a `Bezier2d` to a `CubicPath2d`.\n *\n * @param p - The `Bezier2d` to convert.\n * @returns A new `CubicPath2d` instance representing the same curve as the `Bezier2d`.\n * @since 1.0.0\n */\nexport const toPath: (p: Bezier2d) => CubicPath2d = internal.toPath\n"],"names":["CubicCurve2d.fromPolynomials","CubicPolynomial.fromVector","Matrix4x4.vectorProductLeft","Vector4.make","characteristic","Matrix4x4.make","isCubicBezier2d","make","fromArray","append","fromSpline","Matrix4x4.solveSystem","Vector2.make","appendTangentAligned","appendVelocityAligned","appendAccelerationAligned","toPath","CubicPath2d.fromCurves","internal.characteristic","internal.make","internal.fromArray","internal.fromSpline","internal.isCubicBezier2d","internal.append","internal.appendTangentAligned","internal.appendCurvatureAligned","internal.appendVelocityAligned","internal.appendAccelerationAligned","internal.toPath"],"mappings":"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"}
@@ -1,13 +1,12 @@
1
- import { dual, Pipeable } from '../pipe.mjs';
1
+ import { Pipeable, dual } from '../pipe.mjs';
2
2
  import { round } from '../utils.mjs';
3
3
 
4
+ var _a;
4
5
  const Vector2TypeId = Symbol.for("curvy/vector2");
5
6
  class Vector2Impl extends Pipeable {
6
- [Vector2TypeId] = Vector2TypeId;
7
- x;
8
- y;
9
7
  constructor(v0 = 0, v1 = 0) {
10
8
  super();
9
+ this[_a] = Vector2TypeId;
11
10
  this.x = round(v0);
12
11
  this.y = round(v1);
13
12
  }
@@ -17,7 +16,7 @@ class Vector2Impl extends Pipeable {
17
16
  get [1]() {
18
17
  return this.y;
19
18
  }
20
- get [Symbol.toStringTag]() {
19
+ get [(_a = Vector2TypeId, Symbol.toStringTag)]() {
21
20
  return `Vector2(${this.x}, ${this.y})`;
22
21
  }
23
22
  get [Symbol.for("nodejs.util.inspect.custom")]() {
@@ -33,7 +32,10 @@ const normalize = (vector) => {
33
32
  const m = magnitude(vector);
34
33
  return make(vector.x / m, vector.y / m);
35
34
  };
36
- const dot = dual(2, (a, b) => round(a.x * b.x + a.y * b.y));
35
+ const dot = dual(
36
+ 2,
37
+ (a, b) => round(a.x * b.x + a.y * b.y)
38
+ );
37
39
  const cross = dual(2, (a, b) => round(a.x * b.y - a.y * b.x));
38
40
  const softmax = (v) => {
39
41
  const max = Math.max(v.x, v.y);
@@ -58,3 +60,4 @@ const setTheta = dual(2, (v, theta) => {
58
60
  });
59
61
 
60
62
  export { magnitude as a, components as b, cross as c, dot as d, add as e, fromPolar as f, subtract as g, hadamard as h, isVector2 as i, scale as j, getX as k, setX as l, make as m, normalize as n, getY as o, setY as p, setR as q, getTheta as r, softmax as s, setTheta as t };
63
+ //# sourceMappingURL=curvy.DJ4xO0al.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curvy.DJ4xO0al.mjs","sources":["../../src/vector/vector2.internal.ts"],"sourcesContent":["import { Pipeable } from '../pipe'\nimport { dual } from '../pipe'\nimport { round } from '../utils'\nimport type { Vector2 } from './vector2'\n\nexport const Vector2TypeId = Symbol.for('curvy/vector2')\nexport type Vector2TypeId = typeof Vector2TypeId\n\nclass Vector2Impl extends Pipeable implements Vector2 {\n readonly [Vector2TypeId]: Vector2TypeId = Vector2TypeId\n\n readonly x: number\n readonly y: number\n\n constructor(v0 = 0, v1 = 0) {\n super()\n this.x = round(v0)\n this.y = round(v1)\n }\n\n get [0]() {\n return this.x\n }\n\n get [1]() {\n return this.y\n }\n\n get [Symbol.toStringTag]() {\n return `Vector2(${this.x}, ${this.y})`\n }\n\n get [Symbol.for('nodejs.util.inspect.custom')]() {\n return this[Symbol.toStringTag]\n }\n}\n\nexport const isVector2 = (v: unknown): v is Vector2 =>\n typeof v === 'object' && v !== null && Vector2TypeId in v\n\nexport const make = (v0: number, v1 = v0): Vector2 => new Vector2Impl(v0, v1)\n\nexport const fromPolar = (r: number, theta: number) =>\n make(r * Math.cos(theta), r * Math.sin(theta))\n\nexport const components = (v: Vector2): [number, number] => [v.x, v.y]\n\nexport const magnitude = (vector: Vector2) => round(Math.hypot(vector.x, vector.y))\n\nexport const normalize = (vector: Vector2) => {\n const m = magnitude(vector)\n\n return make(vector.x / m, vector.y / m)\n}\n\nexport const dot = dual<(b: Vector2) => (a: Vector2) => number, (a: Vector2, b: Vector2) => number>(\n 2,\n (a: Vector2, b: Vector2) => round(a.x * b.x + a.y * b.y),\n)\n\nexport const cross = dual<\n (b: Vector2) => (a: Vector2) => number,\n (a: Vector2, b: Vector2) => number\n>(2, (a: Vector2, b: Vector2) => round(a.x * b.y - a.y * b.x))\n\nexport const softmax = (v: Vector2) => {\n const max = Math.max(v.x, v.y)\n\n const v0 = Math.exp(v.x - max)\n const v1 = Math.exp(v.y - max)\n\n const sum = v0 + v1\n\n return make(v0 / sum, v1 / sum)\n}\n\nexport const add = dual<\n (b: Vector2) => (a: Vector2) => Vector2,\n (a: Vector2, b: Vector2) => Vector2\n>(2, (a: Vector2, b: Vector2) => make(a.x + b.x, a.y + b.y))\n\nexport const subtract = dual<\n (b: Vector2) => (a: Vector2) => Vector2,\n (a: Vector2, b: Vector2) => Vector2\n>(2, (a: Vector2, b: Vector2) => make(a.x - b.x, a.y - b.y))\n\nexport const hadamard = dual<\n (b: Vector2) => (a: Vector2) => Vector2,\n (a: Vector2, b: Vector2) => Vector2\n>(2, (a: Vector2, b: Vector2) => make(a.x * b.x, a.y * b.y))\n\nexport const scale = dual<\n (s: number) => (v: Vector2) => Vector2,\n (v: Vector2, s: number) => Vector2\n>(2, (v: Vector2, s: number) => (s === 1 ? v : make(v.x * s, v.y * s)))\n\nexport const getX = (v: Vector2) => v.x\nexport const setX = dual<\n (x: number) => (v: Vector2) => Vector2,\n (v: Vector2, x: number) => Vector2\n>(2, (v: Vector2, x: number) => make(x, v.y))\n\nexport const getY = (v: Vector2) => v.y\nexport const setY = dual<\n (y: number) => (v: Vector2) => Vector2,\n (v: Vector2, y: number) => Vector2\n>(2, (v: Vector2, y: number) => make(v.x, y))\n\nexport const setR = dual<\n (r: number) => (v: Vector2) => Vector2,\n (v: Vector2, r: number) => Vector2\n>(2, (v: Vector2, r: number) => scale(r / magnitude(v))(v))\n\nexport const getTheta = (v: Vector2) => round(Math.atan2(v.y, v.x))\nexport const setTheta = dual<\n (theta: number) => (v: Vector2) => Vector2,\n (v: Vector2, theta: number) => Vector2\n>(2, (v: Vector2, theta: number) => {\n const r = magnitude(v)\n return make(r * Math.cos(theta), r * Math.sin(theta))\n})\n"],"names":[],"mappings":"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"}
@@ -32,3 +32,4 @@ const GL32_W14 = 0.09563872007927485;
32
32
  const GL32_W15 = 0.09654008851472785;
33
33
 
34
34
  export { GL32_X13 as A, GL32_W14 as B, GL32_X14 as C, GL32_W15 as D, GL32_X15 as E, GL32_W0 as G, GL32_X0 as a, GL32_W1 as b, GL32_X1 as c, GL32_W2 as d, GL32_X2 as e, GL32_W3 as f, GL32_X3 as g, GL32_W4 as h, GL32_X4 as i, GL32_W5 as j, GL32_X5 as k, GL32_W6 as l, GL32_X6 as m, GL32_W7 as n, GL32_X7 as o, GL32_W8 as p, GL32_X8 as q, GL32_W9 as r, GL32_X9 as s, GL32_W10 as t, GL32_X10 as u, GL32_W11 as v, GL32_X11 as w, GL32_W12 as x, GL32_X12 as y, GL32_W13 as z };
35
+ //# sourceMappingURL=curvy.DmVFTi0N.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curvy.DmVFTi0N.mjs","sources":["../../src/length.ts"],"sourcesContent":["// export const GL5_X0 = 0.906179845938664\n// export const GL5_X1 = 0.5384693101056831\n// export const GL5_W0 = 0.236926885056189\n// export const GL5_W1 = 0.47862867049936647\n// export const GL5_W2 = 0.5688888888888889\n//\n// export const GL7_X0 = 0.9491079123427585\n// export const GL7_X1 = 0.7415311855993945\n// export const GL7_X2 = 0.4058451513773972\n// export const GL7_W0 = 0.12948496616886968\n// export const GL7_W1 = 0.2797053914892767\n// export const GL7_W2 = 0.38183005050511903\n// export const GL7_W3 = 0.4179591836734694\n//\n// export const GL9_X0 = 0.9681602395076261\n// export const GL9_X1 = 0.8360311073266359\n// export const GL9_X2 = 0.6133714327005905\n// export const GL9_X3 = 0.3242534234038089\n// export const GL9_W0 = 0.08127438836157463\n// export const GL9_W1 = 0.18064816069485748\n// export const GL9_W2 = 0.26061069640293544\n// export const GL9_W3 = 0.31234707704000253\n// export const GL9_W4 = 0.3302393550012598\n//\n// export const GL11_X0 = 0.978228658146057\n// export const GL11_X1 = 0.8870625997680953\n// export const GL11_X2 = 0.7301520055740494\n// export const GL11_X3 = 0.5190961292068118\n// export const GL11_X4 = 0.26954315595234496\n// export const GL11_W0 = 0.05566856711617354\n// export const GL11_W1 = 0.12558036946490472\n// export const GL11_W2 = 0.18629021092773426\n// export const GL11_W3 = 0.2331937645919903\n// export const GL11_W4 = 0.2628045445102467\n// export const GL11_W5 = 0.2729250867779006\n\n// export const GL13_X0 = -0.9841830547185881\n// export const GL13_X1 = -0.917598399222978\n// export const GL13_X2 = -0.8015780907333099\n// export const GL13_X3 = -0.6423493394403402\n// export const GL13_X4 = -0.4484927510364468\n// export const GL13_X5 = -0.2304583159551348\n// export const GL13_X6 = 0\n// export const GL13_X7 = 0.2304583159551348\n// export const GL13_X8 = 0.4484927510364468\n// export const GL13_X9 = 0.6423493394403402\n// export const GL13_X10 = 0.8015780907333099\n// export const GL13_X11 = 0.917598399222978\n// export const GL13_X12 = 0.9841830547185881\n// export const GL13_W0 = 0.040484004765315815\n// export const GL13_W1 = 0.09212149983772838\n// export const GL13_W2 = 0.1388735102197872\n// export const GL13_W3 = 0.17814598076194568\n// export const GL13_W4 = 0.2078160475368885\n// export const GL13_W5 = 0.22628318026289715\n// export const GL13_W6 = 0.2325515532308739\n// export const GL13_W7 = 0.22628318026289715\n// export const GL13_W8 = 0.2078160475368885\n// export const GL13_W9 = 0.17814598076194568\n// export const GL13_W10 = 0.1388735102197872\n// export const GL13_W11 = 0.09212149983772838\n// export const GL13_W12 = 0.040484004765315815\n\n// export const GL15_X0 = -0.9879925180204854\n// export const GL15_X1 = -0.937273392400706\n// export const GL15_X2 = -0.8482065834104272\n// export const GL15_X3 = -0.7244177313601701\n// export const GL15_X4 = -0.5709721726085388\n// export const GL15_X5 = -0.3941513470775634\n// export const GL15_X6 = -0.20119409399743451\n// export const GL15_X7 = 0\n// export const GL15_X8 = 0.20119409399743451\n// export const GL15_X9 = 0.3941513470775634\n// export const GL15_X10 = 0.5709721726085388\n// export const GL15_X11 = 0.7244177313601701\n// export const GL15_X12 = 0.8482065834104272\n// export const GL15_X13 = 0.937273392400706\n// export const GL15_X14 = 0.9879925180204854\n// export const GL15_W0 = 0.030753241996117495\n// export const GL15_W1 = 0.07036604748810814\n// export const GL15_W2 = 0.10715922046717204\n// export const GL15_W3 = 0.13957067792615427\n// export const GL15_W4 = 0.16626920581699398\n// export const GL15_W5 = 0.1861610000155621\n// export const GL15_W6 = 0.19843148532711158\n// export const GL15_W7 = 0.2025782419255613\n// export const GL15_W8 = 0.19843148532711158\n// export const GL15_W9 = 0.1861610000155621\n// export const GL15_W10 = 0.16626920581699398\n// export const GL15_W11 = 0.13957067792615427\n// export const GL15_W12 = 0.10715922046717204\n// export const GL15_W13 = 0.07036604748810814\n// export const GL15_W14 = 0.030753241996117495\n\n// export const GL21_X0 = 0.9937521706203896\n// export const GL21_X1 = 0.9672268385663063\n// export const GL21_X2 = 0.9200993341504008\n// export const GL21_X3 = 0.8533633645833173\n// export const GL21_X4 = 0.7684399634756779\n// export const GL21_X5 = 0.6671388041974123\n// export const GL21_X6 = 0.5516188358872198\n// export const GL21_X7 = 0.4243421202074388\n// export const GL21_X8 = 0.2880213168024011\n// export const GL21_X9 = 0.1455618541608951\n// export const GL21_W0 = 0.016017228257774147\n// export const GL21_W1 = 0.0369537897708525\n// export const GL21_W2 = 0.05713442542685717\n// export const GL21_W3 = 0.07610011362837928\n// export const GL21_W4 = 0.0934444234560338\n// export const GL21_W5 = 0.1087972991671485\n// export const GL21_W6 = 0.12183141605372846\n// export const GL21_W7 = 0.13226893863333744\n// export const GL21_W8 = 0.13988739479107304\n// export const GL21_W9 = 0.14452440398997\n// export const GL21_W10 = 0.14608113364969041\n\nexport const GL32_X0 = 0.9972638618494816\nexport const GL32_X1 = 0.9856115115452684\nexport const GL32_X2 = 0.9647622555875064\nexport const GL32_X3 = 0.9349060759377397\nexport const GL32_X4 = 0.8963211557660521\nexport const GL32_X5 = 0.84936761373257\nexport const GL32_X6 = 0.7944837959679424\nexport const GL32_X7 = 0.7321821187402897\nexport const GL32_X8 = 0.6630442669302152\nexport const GL32_X9 = 0.5877157572407623\nexport const GL32_X10 = 0.5068999089322294\nexport const GL32_X11 = 0.42135127613063533\nexport const GL32_X12 = 0.33186860228212767\nexport const GL32_X13 = 0.23928736225213706\nexport const GL32_X14 = 0.1444719615827965\nexport const GL32_X15 = 0.04830766568773831\nexport const GL32_W0 = 0.007018610009470136\nexport const GL32_W1 = 0.01627439473090571\nexport const GL32_W2 = 0.02539206530926214\nexport const GL32_W3 = 0.03427386291302141\nexport const GL32_W4 = 0.042835898022226704\nexport const GL32_W5 = 0.050998059262376154\nexport const GL32_W6 = 0.05868409347853558\nexport const GL32_W7 = 0.06582222277636195\nexport const GL32_W8 = 0.07234579410884862\nexport const GL32_W9 = 0.07819389578707044\nexport const GL32_W10 = 0.08331192422694672\nexport const GL32_W11 = 0.08765209300440374\nexport const GL32_W12 = 0.0911738786957639\nexport const GL32_W13 = 0.09384439908080454\nexport const GL32_W14 = 0.09563872007927485\nexport const GL32_W15 = 0.09654008851472785\n\n// function legendrePolynomial(n: number, x: number) {\n// if (n === 0) {\n// return 1\n// }\n// if (n === 1) {\n// return x\n// }\n//\n// let p0 = 1\n// let p1 = x\n// let p2: number\n// for (let i = 2; i <= n; i++) {\n// p2 = ((2 * i - 1) * x * p1 - (i - 1) * p0) / i\n// p0 = p1\n// p1 = p2\n// }\n// return p1\n// }\n//\n// function legendreDerivative(n: number, x: number) {\n// if (n === 0) {\n// return 0\n// }\n// if (n === 1) {\n// return 1\n// }\n// return (\n// (n * (x * legendrePolynomial(n, x) - legendrePolynomial(n - 1, x))) /\n// (x * x - 1)\n// )\n// }\n//\n// function findLegendreRoots(n: number) {\n// const roots = []\n// // Initial guesses for roots based on approximation\n// for (let i = 1; i <= n; i++) {\n// let x = Math.cos((Math.PI * (i - 0.25)) / (n + 0.5))\n//\n// // Newton's method iteration\n// for (let iter = 0; iter < 10; iter++) {\n// const delta = -legendrePolynomial(n, x) / legendreDerivative(n, x)\n// x += delta\n// if (Math.abs(delta) < 1e-16) {\n// break\n// }\n// }\n// roots.push(x)\n// }\n// return roots\n// }\n//\n// function calculateWeights(n: number, roots: Array<number>) {\n// return roots.map((x) => {\n// const deriv = legendreDerivative(n, x)\n// return 2 / ((1 - x * x) * deriv * deriv)\n// })\n// }\n//\n// function generateGaussQuadrature(n: number) {\n// const roots = findLegendreRoots(n)\n// const weights = calculateWeights(n, roots)\n//\n// // Sort points and weights from negative to positive\n// const pairs = roots.map((x, i) => ({ x, w: weights[i] as number }))\n// pairs.sort((a, b) => a.x - b.x)\n//\n// return {\n// points: pairs.map((p) => p.x),\n// weights: pairs.map((p) => p.w),\n// }\n// }\n//\n// console.log(generateGaussQuadrature(32))\n"],"names":[],"mappings":"AAoHO,MAAM,OAAU,GAAA;AAChB,MAAM,OAAU,GAAA;AAChB,MAAM,OAAU,GAAA;AAChB,MAAM,OAAU,GAAA;AAChB,MAAM,OAAU,GAAA;AAChB,MAAM,OAAU,GAAA;AAChB,MAAM,OAAU,GAAA;AAChB,MAAM,OAAU,GAAA;AAChB,MAAM,OAAU,GAAA;AAChB,MAAM,OAAU,GAAA;AAChB,MAAM,QAAW,GAAA;AACjB,MAAM,QAAW,GAAA;AACjB,MAAM,QAAW,GAAA;AACjB,MAAM,QAAW,GAAA;AACjB,MAAM,QAAW,GAAA;AACjB,MAAM,QAAW,GAAA;AACjB,MAAM,OAAU,GAAA;AAChB,MAAM,OAAU,GAAA;AAChB,MAAM,OAAU,GAAA;AAChB,MAAM,OAAU,GAAA;AAChB,MAAM,OAAU,GAAA;AAChB,MAAM,OAAU,GAAA;AAChB,MAAM,OAAU,GAAA;AAChB,MAAM,OAAU,GAAA;AAChB,MAAM,OAAU,GAAA;AAChB,MAAM,OAAU,GAAA;AAChB,MAAM,QAAW,GAAA;AACjB,MAAM,QAAW,GAAA;AACjB,MAAM,QAAW,GAAA;AACjB,MAAM,QAAW,GAAA;AACjB,MAAM,QAAW,GAAA;AACjB,MAAM,QAAW,GAAA;;;;"}