curvy 0.3.3 → 1.0.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.
Files changed (95) hide show
  1. package/LICENSE.md +21 -0
  2. package/dist/curve/cubic2d.d.mts +27 -0
  3. package/dist/curve/cubic2d.d.ts +27 -0
  4. package/dist/curve/cubic2d.mjs +85 -0
  5. package/dist/curve/linear2d.d.mts +27 -0
  6. package/dist/curve/linear2d.d.ts +27 -0
  7. package/dist/curve/linear2d.mjs +46 -0
  8. package/dist/curve/quadratic2d.d.mts +27 -0
  9. package/dist/curve/quadratic2d.d.ts +27 -0
  10. package/dist/curve/quadratic2d.mjs +74 -0
  11. package/dist/interval.d.mts +58 -0
  12. package/dist/interval.d.ts +58 -0
  13. package/dist/interval.mjs +88 -0
  14. package/dist/matrix/matrix2x2.d.mts +49 -0
  15. package/dist/matrix/matrix2x2.d.ts +49 -0
  16. package/dist/matrix/matrix2x2.mjs +23 -0
  17. package/dist/matrix/matrix3x3.d.mts +63 -0
  18. package/dist/matrix/matrix3x3.d.ts +63 -0
  19. package/dist/matrix/matrix3x3.mjs +26 -0
  20. package/dist/matrix/matrix4x4.d.mts +72 -0
  21. package/dist/matrix/matrix4x4.d.ts +72 -0
  22. package/dist/matrix/matrix4x4.mjs +214 -0
  23. package/dist/path/cubic2d.d.mts +29 -0
  24. package/dist/path/cubic2d.d.ts +29 -0
  25. package/dist/path/cubic2d.mjs +60 -0
  26. package/dist/path/linear2d.d.mts +29 -0
  27. package/dist/path/linear2d.d.ts +29 -0
  28. package/dist/path/linear2d.mjs +54 -0
  29. package/dist/path/quadratic2d.d.mts +29 -0
  30. package/dist/path/quadratic2d.d.ts +29 -0
  31. package/dist/path/quadratic2d.mjs +60 -0
  32. package/dist/polynomial/cubic.d.mts +7 -0
  33. package/dist/polynomial/cubic.d.ts +7 -0
  34. package/dist/polynomial/cubic.mjs +139 -0
  35. package/dist/polynomial/linear.d.mts +7 -0
  36. package/dist/polynomial/linear.d.ts +7 -0
  37. package/dist/polynomial/linear.mjs +19 -0
  38. package/dist/polynomial/quadratic.d.mts +7 -0
  39. package/dist/polynomial/quadratic.d.ts +7 -0
  40. package/dist/polynomial/quadratic.mjs +22 -0
  41. package/dist/shared/curvy.BAW_cKLu.mjs +123 -0
  42. package/dist/shared/curvy.BN-oFBsc.d.mts +26 -0
  43. package/dist/shared/curvy.BN-oFBsc.d.ts +26 -0
  44. package/dist/shared/curvy.Bxxwly94.d.mts +144 -0
  45. package/dist/shared/curvy.C-sUk7ux.mjs +119 -0
  46. package/dist/shared/curvy.CLzGuqek.mjs +124 -0
  47. package/dist/shared/curvy.CO0Wclt0.d.ts +144 -0
  48. package/dist/shared/curvy.CT38g_II.d.mts +22 -0
  49. package/dist/shared/curvy.CT38g_II.d.ts +22 -0
  50. package/dist/shared/curvy.ChkqgKuv.mjs +119 -0
  51. package/dist/shared/curvy.Cty3LrOR.mjs +70 -0
  52. package/dist/shared/curvy.D7bhnwZy.mjs +52 -0
  53. package/dist/shared/curvy.DOLqYbKE.mjs +48 -0
  54. package/dist/shared/curvy.DgRsieUW.mjs +76 -0
  55. package/dist/shared/curvy.DmVFTi0N.mjs +34 -0
  56. package/dist/splines/bezier2d.d.mts +35 -0
  57. package/dist/splines/bezier2d.d.ts +35 -0
  58. package/dist/splines/bezier2d.mjs +122 -0
  59. package/dist/vector/vector2.d.mts +37 -0
  60. package/dist/vector/vector2.d.ts +37 -0
  61. package/dist/vector/vector2.mjs +16 -0
  62. package/dist/vector/vector3.d.mts +38 -0
  63. package/dist/vector/vector3.d.ts +38 -0
  64. package/dist/vector/vector3.mjs +16 -0
  65. package/dist/vector/vector4.d.mts +39 -0
  66. package/dist/vector/vector4.d.ts +39 -0
  67. package/dist/vector/vector4.mjs +16 -0
  68. package/package.json +78 -37
  69. package/dist/axis.cjs +0 -14
  70. package/dist/axis.d.cts +0 -20
  71. package/dist/axis.d.mts +0 -20
  72. package/dist/axis.d.ts +0 -20
  73. package/dist/axis.mjs +0 -3
  74. package/dist/convert.cjs +0 -74
  75. package/dist/convert.d.cts +0 -6
  76. package/dist/convert.d.mts +0 -6
  77. package/dist/convert.d.ts +0 -6
  78. package/dist/convert.mjs +0 -68
  79. package/dist/curve.cjs +0 -365
  80. package/dist/curve.d.cts +0 -20
  81. package/dist/curve.d.mts +0 -20
  82. package/dist/curve.d.ts +0 -20
  83. package/dist/curve.mjs +0 -354
  84. package/dist/shared/curvy.262f6070.cjs +0 -16
  85. package/dist/shared/curvy.7876e09e.mjs +0 -323
  86. package/dist/shared/curvy.9cd8b44c.mjs +0 -13
  87. package/dist/shared/curvy.db103082.cjs +0 -335
  88. package/dist/shared/curvy.df73166c.d.cts +0 -38
  89. package/dist/shared/curvy.df73166c.d.mts +0 -38
  90. package/dist/shared/curvy.df73166c.d.ts +0 -38
  91. package/dist/splines.cjs +0 -150
  92. package/dist/splines.d.cts +0 -27
  93. package/dist/splines.d.mts +0 -27
  94. package/dist/splines.d.ts +0 -27
  95. package/dist/splines.mjs +0 -138
package/dist/splines.mjs DELETED
@@ -1,138 +0,0 @@
1
- import invariant from 'tiny-invariant';
2
-
3
- function chunkPointsBy(values, stride) {
4
- const chunks = [];
5
- invariant(values.length >= 4, "Values must have at least 4 elements");
6
- invariant(
7
- stride === 1 || stride === 2 || stride === 3,
8
- "Stride must be 1, 2, or 3"
9
- );
10
- if (stride === 3) {
11
- invariant(
12
- values.length % stride === 1,
13
- "Values length must be a multiple of 3 plus 1"
14
- );
15
- } else {
16
- invariant(
17
- values.length % stride === 0,
18
- `Values length must be a multiple of ${stride}`
19
- );
20
- }
21
- for (let i = 0; i <= values.length - 4; i += stride) {
22
- chunks.push([
23
- values[i],
24
- values[i + 1],
25
- values[i + 2],
26
- values[i + 3]
27
- ]);
28
- }
29
- return chunks;
30
- }
31
- function pointsToCoefficients(matrix, parameters) {
32
- return [
33
- parameters[0] * matrix[0][0] + parameters[1] * matrix[0][1] + parameters[2] * matrix[0][2] + parameters[3] * matrix[0][3],
34
- parameters[0] * matrix[1][0] + parameters[1] * matrix[1][1] + parameters[2] * matrix[1][2] + parameters[3] * matrix[1][3],
35
- parameters[0] * matrix[2][0] + parameters[1] * matrix[2][1] + parameters[2] * matrix[2][2] + parameters[3] * matrix[2][3],
36
- parameters[0] * matrix[3][0] + parameters[1] * matrix[3][1] + parameters[2] * matrix[3][2] + parameters[3] * matrix[3][3]
37
- ];
38
- }
39
- const bezier = {
40
- matrix: [
41
- [-1, 3, -3, 1],
42
- [3, -6, 3, 0],
43
- [-3, 3, 0, 0],
44
- [1, 0, 0, 0]
45
- ],
46
- chunkCoefficients(parameters) {
47
- const coefficients = [];
48
- for (const chunk of chunkPointsBy(parameters, 3)) {
49
- coefficients.push(pointsToCoefficients(this.matrix, chunk));
50
- }
51
- return coefficients;
52
- }
53
- };
54
- const hermite = {
55
- matrix: [
56
- [2, 1, -2, 1],
57
- [-3, -2, 3, -1],
58
- [0, 1, 0, 0],
59
- [1, 0, 0, 0]
60
- ],
61
- chunkCoefficients(parameters) {
62
- const coefficients = [];
63
- for (const chunk of chunkPointsBy(parameters, 2)) {
64
- coefficients.push(pointsToCoefficients(this.matrix, chunk));
65
- }
66
- return coefficients;
67
- }
68
- };
69
- const cardinal = (a, duplicateEndpoints = true) => ({
70
- matrix: [
71
- [-a, 2 - a, a - 2, a],
72
- [2 * a, a - 3, 3 - 2 * a, -a],
73
- [-a, 0, a, 0],
74
- [0, 1, 0, 0]
75
- ],
76
- chunkCoefficients(parameters) {
77
- const coefficients = [];
78
- for (const chunk of chunkPointsBy(
79
- duplicateEndpoints ? [parameters[0], ...parameters, parameters[parameters.length - 1]] : parameters,
80
- 1
81
- )) {
82
- coefficients.push(pointsToCoefficients(this.matrix, chunk));
83
- }
84
- return coefficients;
85
- }
86
- });
87
- const catmullRom = (duplicateEndpoints = true) => ({
88
- matrix: [
89
- [-0.5, 1.5, -1.5, 0.5],
90
- [1, -2.5, 2, -0.5],
91
- [-0.5, 0, 0.5, 0],
92
- [0, 1, 0, 0]
93
- ],
94
- chunkCoefficients(parameters) {
95
- const coefficients = [];
96
- for (const chunk of chunkPointsBy(
97
- duplicateEndpoints ? [parameters[0], ...parameters, parameters[parameters.length - 1]] : parameters,
98
- 1
99
- )) {
100
- coefficients.push(pointsToCoefficients(this.matrix, chunk));
101
- }
102
- return coefficients;
103
- }
104
- });
105
- const ONE_SIXTH = 1 / 6;
106
- const basis = (triplicateEndpoints = true) => ({
107
- matrix: [
108
- [-ONE_SIXTH, 0.5, -0.5, ONE_SIXTH],
109
- [0.5, -1, 0.5, 0],
110
- [-0.5, 0, 0.5, 0],
111
- [ONE_SIXTH, 4 * ONE_SIXTH, ONE_SIXTH, 0]
112
- ],
113
- chunkCoefficients(parameters) {
114
- const coefficients = [];
115
- for (const chunk of chunkPointsBy(
116
- triplicateEndpoints ? [
117
- parameters[0],
118
- parameters[0],
119
- ...parameters,
120
- parameters[parameters.length - 1],
121
- parameters[parameters.length - 1]
122
- ] : parameters,
123
- 1
124
- )) {
125
- coefficients.push(pointsToCoefficients(this.matrix, chunk));
126
- }
127
- return coefficients;
128
- }
129
- });
130
- const splines = {
131
- basis,
132
- bezier,
133
- cardinal,
134
- catmullRom,
135
- hermite
136
- };
137
-
138
- export { basis, bezier, cardinal, catmullRom, hermite, pointsToCoefficients, splines };