@sarmal/core 0.23.0 → 0.25.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 (79) hide show
  1. package/dist/auto-init.cjs +255 -175
  2. package/dist/auto-init.cjs.map +1 -1
  3. package/dist/auto-init.js +254 -174
  4. package/dist/auto-init.js.map +1 -1
  5. package/dist/curves/artemis2.cjs +82 -17
  6. package/dist/curves/artemis2.cjs.map +1 -1
  7. package/dist/curves/artemis2.d.cts +1 -5
  8. package/dist/curves/artemis2.d.ts +1 -5
  9. package/dist/curves/artemis2.js +81 -16
  10. package/dist/curves/artemis2.js.map +1 -1
  11. package/dist/curves/astroid.cjs +4 -4
  12. package/dist/curves/astroid.d.cts +1 -1
  13. package/dist/curves/astroid.d.ts +1 -1
  14. package/dist/curves/astroid.js +3 -3
  15. package/dist/curves/deltoid.cjs +4 -4
  16. package/dist/curves/deltoid.d.cts +1 -1
  17. package/dist/curves/deltoid.d.ts +1 -1
  18. package/dist/curves/deltoid.js +3 -3
  19. package/dist/curves/epicycloid3.cjs +4 -4
  20. package/dist/curves/epicycloid3.d.cts +1 -1
  21. package/dist/curves/epicycloid3.d.ts +1 -1
  22. package/dist/curves/epicycloid3.js +3 -3
  23. package/dist/curves/epitrochoid7.cjs +5 -5
  24. package/dist/curves/epitrochoid7.d.cts +1 -1
  25. package/dist/curves/epitrochoid7.d.ts +1 -1
  26. package/dist/curves/epitrochoid7.js +4 -4
  27. package/dist/curves/index.cjs +139 -84
  28. package/dist/curves/index.cjs.map +1 -1
  29. package/dist/curves/index.d.cts +29 -29
  30. package/dist/curves/index.d.ts +29 -29
  31. package/dist/curves/index.js +139 -100
  32. package/dist/curves/index.js.map +1 -1
  33. package/dist/curves/lame.cjs +5 -6
  34. package/dist/curves/lame.d.cts +1 -1
  35. package/dist/curves/lame.d.ts +1 -1
  36. package/dist/curves/lame.js +4 -5
  37. package/dist/curves/lissajous32.cjs +4 -4
  38. package/dist/curves/lissajous32.d.cts +1 -1
  39. package/dist/curves/lissajous32.d.ts +1 -1
  40. package/dist/curves/lissajous32.js +3 -3
  41. package/dist/curves/lissajous43.cjs +4 -4
  42. package/dist/curves/lissajous43.d.cts +1 -1
  43. package/dist/curves/lissajous43.d.ts +1 -1
  44. package/dist/curves/lissajous43.js +3 -3
  45. package/dist/curves/rose3.cjs +4 -4
  46. package/dist/curves/rose3.d.cts +1 -1
  47. package/dist/curves/rose3.d.ts +1 -1
  48. package/dist/curves/rose3.js +3 -3
  49. package/dist/curves/rose5.cjs +4 -4
  50. package/dist/curves/rose5.d.cts +1 -1
  51. package/dist/curves/rose5.d.ts +1 -1
  52. package/dist/curves/rose5.js +3 -3
  53. package/dist/curves/rose52.cjs +5 -5
  54. package/dist/curves/rose52.d.cts +1 -1
  55. package/dist/curves/rose52.d.ts +1 -1
  56. package/dist/curves/rose52.js +4 -4
  57. package/dist/curves/star.cjs +5 -8
  58. package/dist/curves/star.d.cts +1 -1
  59. package/dist/curves/star.d.ts +1 -1
  60. package/dist/curves/star.js +4 -7
  61. package/dist/curves/star4.cjs +5 -8
  62. package/dist/curves/star4.d.cts +1 -1
  63. package/dist/curves/star4.d.ts +1 -1
  64. package/dist/curves/star4.js +4 -7
  65. package/dist/curves/star7.cjs +5 -8
  66. package/dist/curves/star7.d.cts +1 -1
  67. package/dist/curves/star7.d.ts +1 -1
  68. package/dist/curves/star7.js +4 -7
  69. package/dist/index.cjs +244 -210
  70. package/dist/index.cjs.map +1 -1
  71. package/dist/index.d.cts +55 -78
  72. package/dist/index.d.ts +55 -78
  73. package/dist/index.js +243 -230
  74. package/dist/index.js.map +1 -1
  75. package/dist/types-BZpzgNau.d.cts +332 -0
  76. package/dist/types-BZpzgNau.d.ts +332 -0
  77. package/package.json +1 -1
  78. package/dist/types-C0b4MPtI.d.cts +0 -321
  79. package/dist/types-C0b4MPtI.d.ts +0 -321
@@ -1,253 +1,308 @@
1
- "use strict";
1
+ 'use strict';
2
2
 
3
- // src/curves/artemis2.ts
4
- var TWO_PI = Math.PI * 2;
5
- function artemis2Fn(t, _time, _params) {
6
- const a = 0.35,
7
- b = 0.15,
8
- ox = 0.175;
9
- const s = Math.sin(t),
10
- c = Math.cos(t);
11
- const denom = 1 + s * s;
3
+ // src/catmull-rom.ts
4
+ var PERIOD = 2 * Math.PI;
5
+ function catmullRom1D(p0, p1, p2, p3, u) {
6
+ const u2 = u * u;
7
+ const u3 = u2 * u;
8
+ return 0.5 * (2 * p1 + (-p0 + p2) * u + (2 * p0 - 5 * p1 + 4 * p2 - p3) * u2 + (-p0 + 3 * p1 - 3 * p2 + p3) * u3);
9
+ }
10
+ function evaluateCatmullRom(points2, t) {
11
+ const N = points2.length;
12
+ if (N === 0) {
13
+ return { x: 0, y: 0 };
14
+ }
15
+ if (N === 1) {
16
+ return { x: points2[0][0], y: points2[0][1] };
17
+ }
18
+ t = (t % PERIOD + PERIOD) % PERIOD;
19
+ const segmentSize = PERIOD / N;
20
+ let i = Math.floor(t / segmentSize);
21
+ if (i >= N) {
22
+ i = N - 1;
23
+ }
24
+ let u = (t - i * segmentSize) / segmentSize;
25
+ u = Math.max(0, Math.min(1, u));
26
+ const p0 = points2[(i - 1 + N) % N];
27
+ const p1 = points2[i];
28
+ const p2 = points2[(i + 1) % N];
29
+ const p3 = points2[(i + 2) % N];
30
+ return {
31
+ x: catmullRom1D(p0[0], p1[0], p2[0], p3[0], u),
32
+ y: catmullRom1D(p0[1], p1[1], p2[1], p3[1], u)
33
+ };
34
+ }
35
+ function drawCurve(points2, opts) {
36
+ if (points2.length < 3) {
37
+ throw new Error(`drawCurve requires at least 3 points, received ${points2.length}.`);
38
+ }
39
+ const first = points2[0];
40
+ if (points2.every((p) => p[0] === first[0] && p[1] === first[1])) {
41
+ console.warn(
42
+ "[sarmal].drawCurve: all control points are identical. The curve will be a single point."
43
+ );
44
+ }
45
+ const maxAbs = points2.reduce((m, p) => Math.max(m, Math.abs(p[0]), Math.abs(p[1])), 0);
46
+ if (maxAbs > 2) {
47
+ console.warn(
48
+ `[sarmal].drawCurve: control points extend to \xB1${maxAbs.toFixed(1)}, which may render off-screen. Coordinates should be in [-1, 1].`
49
+ );
50
+ }
51
+ const pts = points2.map(([x, y]) => [x, y]);
12
52
  return {
13
- x: (c * (1 + a * c)) / denom - ox,
14
- y: (s * c * (1 + b * c)) / denom,
53
+ name: opts?.name ?? "drawn",
54
+ fn: (t) => evaluateCatmullRom(pts, t),
55
+ period: PERIOD,
56
+ kind: "drawn"
15
57
  };
16
58
  }
59
+
60
+ // src/curves/artemis2.ts
61
+ var points = [
62
+ [-0.44, -0.45],
63
+ [-0.53, -0.77],
64
+ [-0.82, -0.66],
65
+ [-0.82, -0.18],
66
+ [-0.25, -0.04],
67
+ [0.16, -0.49],
68
+ [-0.03, -0.87],
69
+ [-0.68, -0.94],
70
+ [-0.95, -0.61],
71
+ [-0.87, -0],
72
+ [-0.34, 0.21],
73
+ [0.27, -0.04],
74
+ [0.87, 0.06],
75
+ [0.87, 0.57],
76
+ [0.32, 0.66],
77
+ [-0.21, -0.43],
78
+ [-0.43, -0.81],
79
+ [-0.69, -0.84],
80
+ [-0.87, -0.66],
81
+ [-0.9, -0.47],
82
+ [-0.76, -0.35]
83
+ ];
17
84
  var artemis2 = {
18
- name: "Artemis II",
19
- fn: artemis2Fn,
20
- period: TWO_PI,
21
- speed: 0.7,
85
+ ...drawCurve(points, { name: "Artemis II" }),
86
+ speed: 0.7
22
87
  };
23
88
 
24
89
  // src/curves/astroid.ts
25
- var TWO_PI2 = Math.PI * 2;
90
+ var TWO_PI = Math.PI * 2;
26
91
  function astroidFn(t, _time, _params) {
27
92
  const c = Math.cos(t);
28
93
  const s = Math.sin(t);
29
94
  return {
30
95
  x: c * c * c,
31
- y: s * s * s,
96
+ y: s * s * s
32
97
  };
33
98
  }
34
99
  var astroid = {
35
100
  name: "Astroid",
36
101
  fn: astroidFn,
37
- period: TWO_PI2,
38
- speed: 1.1,
102
+ period: TWO_PI,
103
+ speed: 1.1
39
104
  };
40
105
 
41
106
  // src/curves/deltoid.ts
42
- var TWO_PI3 = Math.PI * 2;
107
+ var TWO_PI2 = Math.PI * 2;
43
108
  function deltoidFn(t, _time, _params) {
44
109
  return {
45
110
  x: 2 * Math.cos(t) + Math.cos(2 * t),
46
- y: 2 * Math.sin(t) - Math.sin(2 * t),
111
+ y: 2 * Math.sin(t) - Math.sin(2 * t)
47
112
  };
48
113
  }
49
114
  var deltoid = {
50
115
  name: "Deltoid",
51
116
  fn: deltoidFn,
52
- period: TWO_PI3,
53
- speed: 0.9,
117
+ period: TWO_PI2,
118
+ speed: 0.9
54
119
  };
55
120
 
56
121
  // src/curves/epicycloid3.ts
57
- var TWO_PI4 = Math.PI * 2;
122
+ var TWO_PI3 = Math.PI * 2;
58
123
  function epicycloid3Fn(t, _time, _params) {
59
124
  return {
60
125
  x: 4 * Math.cos(t) - Math.cos(4 * t),
61
- y: 4 * Math.sin(t) - Math.sin(4 * t),
126
+ y: 4 * Math.sin(t) - Math.sin(4 * t)
62
127
  };
63
128
  }
64
129
  var epicycloid3 = {
65
130
  name: "Epicycloid (n=3)",
66
131
  fn: epicycloid3Fn,
67
- period: TWO_PI4,
68
- speed: 0.75,
132
+ period: TWO_PI3,
133
+ speed: 0.75
69
134
  };
70
135
 
71
136
  // src/curves/epitrochoid7.ts
72
- var TWO_PI5 = Math.PI * 2;
137
+ var TWO_PI4 = Math.PI * 2;
73
138
  function epitrochoid7Fn(t, _time, _params) {
74
139
  const d = 1 + 0.55 * Math.sin(t * 0.5);
75
140
  return {
76
141
  x: 7 * Math.cos(t) - d * Math.cos(7 * t),
77
- y: 7 * Math.sin(t) - d * Math.sin(7 * t),
142
+ y: 7 * Math.sin(t) - d * Math.sin(7 * t)
78
143
  };
79
144
  }
80
145
  function epitrochoid7SkeletonFn(t) {
81
146
  const d = 1.275;
82
147
  return {
83
148
  x: 7 * Math.cos(t) - d * Math.cos(7 * t),
84
- y: 7 * Math.sin(t) - d * Math.sin(7 * t),
149
+ y: 7 * Math.sin(t) - d * Math.sin(7 * t)
85
150
  };
86
151
  }
87
152
  var epitrochoid7 = {
88
153
  name: "Epitrochoid",
89
154
  fn: epitrochoid7Fn,
90
- period: TWO_PI5,
155
+ period: TWO_PI4,
91
156
  speed: 1.4,
92
- skeletonFn: epitrochoid7SkeletonFn,
157
+ skeletonFn: epitrochoid7SkeletonFn
93
158
  };
94
159
 
95
160
  // src/curves/lissajous32.ts
96
- var TWO_PI6 = Math.PI * 2;
161
+ var TWO_PI5 = Math.PI * 2;
97
162
  function lissajous32Fn(t, time, _params) {
98
163
  const phi = time * 0.45;
99
164
  return {
100
165
  x: Math.sin(3 * t + phi),
101
- y: Math.sin(2 * t),
166
+ y: Math.sin(2 * t)
102
167
  };
103
168
  }
104
169
  var lissajous32 = {
105
170
  name: "Lissajous 3:2",
106
171
  fn: lissajous32Fn,
107
- period: TWO_PI6,
172
+ period: TWO_PI5,
108
173
  speed: 2,
109
- skeleton: "live",
174
+ skeleton: "live"
110
175
  };
111
176
 
112
177
  // src/curves/lissajous43.ts
113
- var TWO_PI7 = Math.PI * 2;
178
+ var TWO_PI6 = Math.PI * 2;
114
179
  function lissajous43Fn(t, time, _params) {
115
180
  const phi = time * 0.38;
116
181
  return {
117
182
  x: Math.sin(4 * t + phi),
118
- y: Math.sin(3 * t),
183
+ y: Math.sin(3 * t)
119
184
  };
120
185
  }
121
186
  var lissajous43 = {
122
187
  name: "Lissajous 4:3",
123
188
  fn: lissajous43Fn,
124
- period: TWO_PI7,
189
+ period: TWO_PI6,
125
190
  speed: 1.8,
126
- skeleton: "live",
191
+ skeleton: "live"
127
192
  };
128
193
 
129
194
  // src/curves/lame.ts
130
- var TWO_PI8 = Math.PI * 2;
195
+ var TWO_PI7 = Math.PI * 2;
131
196
  function lameFn(t, time, _params) {
132
197
  const p = 1.75 + 1.25 * Math.sin(time * 0.48);
133
- const c = Math.cos(t),
134
- s = Math.sin(t);
198
+ const c = Math.cos(t), s = Math.sin(t);
135
199
  return {
136
200
  x: Math.sign(c) * Math.pow(Math.abs(c), p),
137
- y: Math.sign(s) * Math.pow(Math.abs(s), p),
201
+ y: Math.sign(s) * Math.pow(Math.abs(s), p)
138
202
  };
139
203
  }
140
204
  var lame = {
141
205
  name: "Lam\xE9 Curve",
142
206
  fn: lameFn,
143
- period: TWO_PI8,
207
+ period: TWO_PI7,
144
208
  speed: 1,
145
- skeleton: "live",
209
+ skeleton: "live"
146
210
  };
147
211
 
148
212
  // src/curves/rose3.ts
149
- var TWO_PI9 = Math.PI * 2;
213
+ var TWO_PI8 = Math.PI * 2;
150
214
  function rose3Fn(t, _time, _params) {
151
215
  const r = Math.cos(3 * t);
152
216
  return {
153
217
  x: r * Math.cos(t),
154
- y: r * Math.sin(t),
218
+ y: r * Math.sin(t)
155
219
  };
156
220
  }
157
221
  var rose3 = {
158
222
  name: "Rose (n=3)",
159
223
  fn: rose3Fn,
160
- period: TWO_PI9,
161
- speed: 1.15,
224
+ period: TWO_PI8,
225
+ speed: 1.15
162
226
  };
163
227
 
164
228
  // src/curves/rose5.ts
165
- var TWO_PI10 = Math.PI * 2;
229
+ var TWO_PI9 = Math.PI * 2;
166
230
  function rose5Fn(t, _time, _params) {
167
231
  const r = Math.cos(5 * t);
168
232
  return {
169
233
  x: r * Math.cos(t),
170
- y: r * Math.sin(t),
234
+ y: r * Math.sin(t)
171
235
  };
172
236
  }
173
237
  var rose5 = {
174
238
  name: "Rose (n=5)",
175
239
  fn: rose5Fn,
176
- period: TWO_PI10,
177
- speed: 1,
240
+ period: TWO_PI9,
241
+ speed: 1
178
242
  };
179
243
 
180
244
  // src/curves/rose52.ts
181
245
  var FOUR_PI = Math.PI * 4;
182
246
  function rose52Fn(t, _time, _params) {
183
- const r = Math.cos((5 / 2) * t);
247
+ const r = Math.cos(5 / 2 * t);
184
248
  return {
185
249
  x: r * Math.cos(t),
186
- y: r * Math.sin(t),
250
+ y: r * Math.sin(t)
187
251
  };
188
252
  }
189
253
  var rose52 = {
190
254
  name: "Rose (n=5/2)",
191
255
  fn: rose52Fn,
192
256
  period: FOUR_PI,
193
- speed: 0.8,
257
+ speed: 0.8
194
258
  };
195
259
 
196
260
  // src/curves/star.ts
197
- var TWO_PI11 = Math.PI * 2;
261
+ var TWO_PI10 = Math.PI * 2;
198
262
  function starFn(t, _time, _params) {
199
- const r =
200
- Math.abs(Math.cos((5 / 2) * t)) +
201
- 0.35 * Math.abs(Math.cos((15 / 2) * t)) +
202
- 0.15 * Math.abs(Math.cos((25 / 2) * t));
263
+ const r = Math.abs(Math.cos(5 / 2 * t)) + 0.35 * Math.abs(Math.cos(15 / 2 * t)) + 0.15 * Math.abs(Math.cos(25 / 2 * t));
203
264
  return {
204
265
  x: r * Math.cos(t),
205
- y: r * Math.sin(t),
266
+ y: r * Math.sin(t)
206
267
  };
207
268
  }
208
269
  var star = {
209
270
  name: "Star",
210
271
  fn: starFn,
211
- period: TWO_PI11,
212
- speed: 1,
272
+ period: TWO_PI10,
273
+ speed: 1
213
274
  };
214
275
 
215
276
  // src/curves/star4.ts
216
- var TWO_PI12 = Math.PI * 2;
277
+ var TWO_PI11 = Math.PI * 2;
217
278
  function star4Fn(t, _time, _params) {
218
- const r =
219
- Math.abs(Math.cos(2 * t)) +
220
- 0.35 * Math.abs(Math.cos(6 * t)) +
221
- 0.15 * Math.abs(Math.cos(10 * t));
279
+ const r = Math.abs(Math.cos(2 * t)) + 0.35 * Math.abs(Math.cos(6 * t)) + 0.15 * Math.abs(Math.cos(10 * t));
222
280
  return {
223
281
  x: r * Math.cos(t),
224
- y: r * Math.sin(t),
282
+ y: r * Math.sin(t)
225
283
  };
226
284
  }
227
285
  var star4 = {
228
286
  name: "Star (4-arm)",
229
287
  fn: star4Fn,
230
- period: TWO_PI12,
231
- speed: 1,
288
+ period: TWO_PI11,
289
+ speed: 1
232
290
  };
233
291
 
234
292
  // src/curves/star7.ts
235
- var TWO_PI13 = Math.PI * 2;
293
+ var TWO_PI12 = Math.PI * 2;
236
294
  function star7Fn(t, _time, _params) {
237
- const r =
238
- Math.abs(Math.cos((7 / 2) * t)) +
239
- 0.35 * Math.abs(Math.cos((21 / 2) * t)) +
240
- 0.15 * Math.abs(Math.cos((35 / 2) * t));
295
+ const r = Math.abs(Math.cos(7 / 2 * t)) + 0.35 * Math.abs(Math.cos(21 / 2 * t)) + 0.15 * Math.abs(Math.cos(35 / 2 * t));
241
296
  return {
242
297
  x: r * Math.cos(t),
243
- y: r * Math.sin(t),
298
+ y: r * Math.sin(t)
244
299
  };
245
300
  }
246
301
  var star7 = {
247
302
  name: "Star (7-arm)",
248
303
  fn: star7Fn,
249
- period: TWO_PI13,
250
- speed: 1,
304
+ period: TWO_PI12,
305
+ speed: 1
251
306
  };
252
307
 
253
308
  // src/curves/index.ts
@@ -265,7 +320,7 @@ var curves = {
265
320
  lissajous32,
266
321
  lissajous43,
267
322
  epicycloid3,
268
- lame,
323
+ lame
269
324
  };
270
325
 
271
326
  exports.artemis2 = artemis2;
@@ -284,4 +339,4 @@ exports.star = star;
284
339
  exports.star4 = star4;
285
340
  exports.star7 = star7;
286
341
  //# sourceMappingURL=index.cjs.map
287
- //# sourceMappingURL=index.cjs.map
342
+ //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/curves/artemis2.ts","../../src/curves/astroid.ts","../../src/curves/deltoid.ts","../../src/curves/epicycloid3.ts","../../src/curves/epitrochoid7.ts","../../src/curves/lissajous32.ts","../../src/curves/lissajous43.ts","../../src/curves/lame.ts","../../src/curves/rose3.ts","../../src/curves/rose5.ts","../../src/curves/rose52.ts","../../src/curves/star.ts","../../src/curves/star4.ts","../../src/curves/star7.ts","../../src/curves/index.ts"],"names":["TWO_PI"],"mappings":"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","file":"index.cjs","sourcesContent":["import type { CurveDef } from \"../types\";\n\nconst TWO_PI = Math.PI * 2;\n\n/**\n * Artemis II free-return lunar trajectory\n * @see https://www.nasa.gov/wp-content/uploads/2025/09/artemis-ii-map-508.pdf\n * a = x-axis asymmetry (widens one lobe),\n * b = y-axis asymmetry,\n * ox = horizontal offset to visually center the shape\n */\nfunction artemis2Fn(t: number, _time: number, _params: Record<string, number>) {\n const a = 0.35,\n b = 0.15,\n ox = 0.175;\n const s = Math.sin(t),\n c = Math.cos(t);\n const denom = 1 + s * s;\n return {\n x: (c * (1 + a * c)) / denom - ox,\n y: (s * c * (1 + b * c)) / denom,\n };\n}\n\n/**\n * Artemis II free-return lunar trajectory curve\n * Traces the path of the Orion spacecraft during the Artemis II mission\n */\nexport const artemis2: CurveDef = {\n name: \"Artemis II\",\n fn: artemis2Fn,\n period: TWO_PI,\n speed: 0.7,\n};\n","import type { CurveDef } from \"../types\";\n\nconst TWO_PI = Math.PI * 2;\n\nfunction astroidFn(t: number, _time: number, _params: Record<string, number>) {\n const c = Math.cos(t);\n const s = Math.sin(t);\n return {\n x: c * c * c,\n y: s * s * s,\n };\n}\n\n/**\n * Astroid curve - a 4-cusped hypocycloid\n * Creates a star-like shape with four sharp corners\n */\nexport const astroid: CurveDef = {\n name: \"Astroid\",\n fn: astroidFn,\n period: TWO_PI,\n speed: 1.1,\n};\n","import type { CurveDef } from \"../types\";\n\nconst TWO_PI = Math.PI * 2;\n\nfunction deltoidFn(t: number, _time: number, _params: Record<string, number>) {\n return {\n x: 2 * Math.cos(t) + Math.cos(2 * t),\n y: 2 * Math.sin(t) - Math.sin(2 * t),\n };\n}\n\n/**\n * Deltoid curve - a 3-cusped hypocycloid\n * Creates a triangular shape with curved sides\n */\nexport const deltoid: CurveDef = {\n name: \"Deltoid\",\n fn: deltoidFn,\n period: TWO_PI,\n speed: 0.9,\n};\n","import type { CurveDef } from \"../types\";\n\nconst TWO_PI = Math.PI * 2;\n\nfunction epicycloid3Fn(t: number, _time: number, _params: Record<string, number>) {\n return {\n x: 4 * Math.cos(t) - Math.cos(4 * t),\n y: 4 * Math.sin(t) - Math.sin(4 * t),\n };\n}\n\n/**\n * Epicycloid with 3 cusps\n * Creates a three-pointed star shape\n */\nexport const epicycloid3: CurveDef = {\n name: \"Epicycloid (n=3)\",\n fn: epicycloid3Fn,\n period: TWO_PI,\n speed: 0.75,\n};\n","import type { CurveDef, Point } from \"../types\";\n\nconst TWO_PI = Math.PI * 2;\n\nfunction epitrochoid7Fn(t: number, _time: number, _params: Record<string, number>) {\n const d = 1.0 + 0.55 * Math.sin(t * 0.5);\n return {\n x: 7 * Math.cos(t) - d * Math.cos(7 * t),\n y: 7 * Math.sin(t) - d * Math.sin(7 * t),\n };\n}\n\nfunction epitrochoid7SkeletonFn(t: number): Point {\n // average of the oscillating range for a stable base shape\n const d = 1.275;\n return {\n x: 7 * Math.cos(t) - d * Math.cos(7 * t),\n y: 7 * Math.sin(t) - d * Math.sin(7 * t),\n };\n}\n\n/**\n * Epitrochoid with 7 lobes and dynamic variation\n * Creates a flower-like pattern with undulating petals\n */\nexport const epitrochoid7: CurveDef = {\n name: \"Epitrochoid\",\n fn: epitrochoid7Fn,\n period: TWO_PI,\n speed: 1.4,\n skeletonFn: epitrochoid7SkeletonFn,\n};\n","import type { CurveDef } from \"../types\";\n\nconst TWO_PI = Math.PI * 2;\n\nfunction lissajous32Fn(t: number, time: number, _params: Record<string, number>) {\n const phi = time * 0.45;\n return {\n x: Math.sin(3 * t + phi),\n y: Math.sin(2 * t),\n };\n}\n\n/**\n * Lissajous curve with frequency ratio 3:2\n * Creates a figure-eight-like pattern with live skeleton\n */\nexport const lissajous32: CurveDef = {\n name: \"Lissajous 3:2\",\n fn: lissajous32Fn,\n period: TWO_PI,\n speed: 2.0,\n skeleton: \"live\",\n};\n","import type { CurveDef } from \"../types\";\n\nconst TWO_PI = Math.PI * 2;\n\nfunction lissajous43Fn(t: number, time: number, _params: Record<string, number>) {\n const phi = time * 0.38;\n return {\n x: Math.sin(4 * t + phi),\n y: Math.sin(3 * t),\n };\n}\n\n/**\n * Lissajous curve with frequency ratio 4:3\n * Creates a complex interweaving pattern with live skeleton\n */\nexport const lissajous43: CurveDef = {\n name: \"Lissajous 4:3\",\n fn: lissajous43Fn,\n period: TWO_PI,\n speed: 1.8,\n skeleton: \"live\",\n};\n","import type { CurveDef } from \"../types\";\n\nconst TWO_PI = Math.PI * 2;\n\nfunction lameFn(t: number, time: number, _params: Record<string, number>) {\n const p = 1.75 + 1.25 * Math.sin(time * 0.48);\n const c = Math.cos(t),\n s = Math.sin(t);\n return {\n x: Math.sign(c) * Math.pow(Math.abs(c), p),\n y: Math.sign(s) * Math.pow(Math.abs(s), p),\n };\n}\n\n/**\n * Lamé curve (superellipse) with time-varying exponent\n * Creates a squircle-like shape that morphs over time\n */\nexport const lame: CurveDef = {\n name: \"Lamé Curve\",\n fn: lameFn,\n period: TWO_PI,\n speed: 1.0,\n skeleton: \"live\",\n};\n","import type { CurveDef } from \"../types\";\n\nconst TWO_PI = Math.PI * 2;\n\nfunction rose3Fn(t: number, _time: number, _params: Record<string, number>) {\n const r = Math.cos(3 * t);\n return {\n x: r * Math.cos(t),\n y: r * Math.sin(t),\n };\n}\n\n/**\n * Rose curve with 3 petals\n * Creates a three-petaled flower pattern\n */\nexport const rose3: CurveDef = {\n name: \"Rose (n=3)\",\n fn: rose3Fn,\n period: TWO_PI,\n speed: 1.15,\n};\n","import type { CurveDef } from \"../types\";\n\nconst TWO_PI = Math.PI * 2;\n\nfunction rose5Fn(t: number, _time: number, _params: Record<string, number>) {\n const r = Math.cos(5 * t);\n return {\n x: r * Math.cos(t),\n y: r * Math.sin(t),\n };\n}\n\n/**\n * Rose curve with 5 petals\n * Creates a five-petaled flower pattern\n */\nexport const rose5: CurveDef = {\n name: \"Rose (n=5)\",\n fn: rose5Fn,\n period: TWO_PI,\n speed: 1.0,\n};\n","import type { CurveDef } from \"../types\";\n\nconst FOUR_PI = Math.PI * 4;\n\nfunction rose52Fn(t: number, _time: number, _params: Record<string, number>) {\n const r = Math.cos((5 / 2) * t);\n return {\n x: r * Math.cos(t),\n y: r * Math.sin(t),\n };\n}\n\n/**\n * Rose curve with n=5/2 that traces 5 petals over two full revolutions\n * The head passes through the center between petals, creating elegant crossing trails.\n */\nexport const rose52: CurveDef = {\n name: \"Rose (n=5/2)\",\n fn: rose52Fn,\n period: FOUR_PI,\n speed: 0.8,\n};\n","import type { CurveDef } from \"../types\";\n\nconst TWO_PI = Math.PI * 2;\n\nfunction starFn(t: number, _time: number, _params: Record<string, number>) {\n const r =\n Math.abs(Math.cos((5 / 2) * t)) +\n 0.35 * Math.abs(Math.cos((15 / 2) * t)) +\n 0.15 * Math.abs(Math.cos((25 / 2) * t));\n return {\n x: r * Math.cos(t),\n y: r * Math.sin(t),\n };\n}\n\n/**\n * 5-pointed star based on Fourier harmonics.\n */\nexport const star: CurveDef = {\n name: \"Star\",\n fn: starFn,\n period: TWO_PI,\n speed: 1.0,\n};\n","import type { CurveDef } from \"../types\";\n\nconst TWO_PI = Math.PI * 2;\n\nfunction star4Fn(t: number, _time: number, _params: Record<string, number>) {\n const r =\n Math.abs(Math.cos(2 * t)) +\n 0.35 * Math.abs(Math.cos(6 * t)) +\n 0.15 * Math.abs(Math.cos(10 * t));\n return {\n x: r * Math.cos(t),\n y: r * Math.sin(t),\n };\n}\n\n/**\n * 4-pointed star based on Fourier harmonics.\n * Same construction as `star` but with base frequency `2t`, producing 4 tips.\n */\nexport const star4: CurveDef = {\n name: \"Star (4-arm)\",\n fn: star4Fn,\n period: TWO_PI,\n speed: 1.0,\n};\n","import type { CurveDef } from \"../types\";\n\nconst TWO_PI = Math.PI * 2;\n\nfunction star7Fn(t: number, _time: number, _params: Record<string, number>) {\n const r =\n Math.abs(Math.cos((7 / 2) * t)) +\n 0.35 * Math.abs(Math.cos((21 / 2) * t)) +\n 0.15 * Math.abs(Math.cos((35 / 2) * t));\n return {\n x: r * Math.cos(t),\n y: r * Math.sin(t),\n };\n}\n\n/**\n * 7-pointed star based on Fourier harmonics.\n * Same construction as `star` but with base frequency `7t/2`, producing 7 tips.\n */\nexport const star7: CurveDef = {\n name: \"Star (7-arm)\",\n fn: star7Fn,\n period: TWO_PI,\n speed: 1.0,\n};\n","// Individual curve exports for tree-shaking\nexport { artemis2 } from \"./artemis2\";\nexport { astroid } from \"./astroid\";\nexport { deltoid } from \"./deltoid\";\nexport { epicycloid3 } from \"./epicycloid3\";\nexport { epitrochoid7 } from \"./epitrochoid7\";\nexport { lissajous32 } from \"./lissajous32\";\nexport { lissajous43 } from \"./lissajous43\";\nexport { lame } from \"./lame\";\nexport { rose3 } from \"./rose3\";\nexport { rose5 } from \"./rose5\";\nexport { rose52 } from \"./rose52\";\nexport { star } from \"./star\";\nexport { star4 } from \"./star4\";\nexport { star7 } from \"./star7\";\n\n// Bulk export for convenience\n// >> Standard\nimport { rose3 } from \"./rose3\";\nimport { rose5 } from \"./rose5\";\nimport { rose52 } from \"./rose52\";\nimport { star } from \"./star\";\nimport { star4 } from \"./star4\";\nimport { star7 } from \"./star7\";\nimport { astroid } from \"./astroid\";\nimport { deltoid } from \"./deltoid\";\nimport { epicycloid3 } from \"./epicycloid3\";\nimport { epitrochoid7 } from \"./epitrochoid7\";\nimport { lissajous32 } from \"./lissajous32\";\nimport { lissajous43 } from \"./lissajous43\";\nimport { lame } from \"./lame\";\n// >> Iconic\nimport { artemis2 } from \"./artemis2\";\n\n/**\n * Collection of all built-in sarmal curves\n * Import individual curves for better tree-shaking\n */\nexport const curves = {\n artemis2,\n epitrochoid7,\n astroid,\n deltoid,\n rose3,\n rose5,\n rose52,\n star,\n star4,\n star7,\n lissajous32,\n lissajous43,\n epicycloid3,\n lame,\n} as const;\nexport type CurveName = keyof typeof curves;\n"]}
1
+ {"version":3,"sources":["../../src/catmull-rom.ts","../../src/curves/artemis2.ts","../../src/curves/astroid.ts","../../src/curves/deltoid.ts","../../src/curves/epicycloid3.ts","../../src/curves/epitrochoid7.ts","../../src/curves/lissajous32.ts","../../src/curves/lissajous43.ts","../../src/curves/lame.ts","../../src/curves/rose3.ts","../../src/curves/rose5.ts","../../src/curves/rose52.ts","../../src/curves/star.ts","../../src/curves/star4.ts","../../src/curves/star7.ts","../../src/curves/index.ts"],"names":["points","TWO_PI"],"mappings":";;;AAMA,IAAM,MAAA,GAAS,IAAI,IAAA,CAAK,EAAA;AAOxB,SAAS,YAAA,CAAa,EAAA,EAAY,EAAA,EAAY,EAAA,EAAY,IAAY,CAAA,EAAmB;AACvF,EAAA,MAAM,KAAK,CAAA,GAAI,CAAA;AACf,EAAA,MAAM,KAAK,EAAA,GAAK,CAAA;AAGhB,EAAA,OACE,GAAA,IACC,IAAI,EAAA,GAAA,CACF,CAAC,KAAK,EAAA,IAAM,CAAA,GAAA,CACZ,IAAI,EAAA,GAAK,CAAA,GAAI,KAAK,CAAA,GAAI,EAAA,GAAK,MAAM,EAAA,GAAA,CACjC,CAAC,KAAK,CAAA,GAAI,EAAA,GAAK,CAAA,GAAI,EAAA,GAAK,EAAA,IAAM,EAAA,CAAA;AAErC;AAcO,SAAS,kBAAA,CAAmBA,SAA6B,CAAA,EAAkB;AAChF,EAAA,MAAM,IAAIA,OAAAA,CAAO,MAAA;AAEjB,EAAA,IAAI,MAAM,CAAA,EAAG;AACX,IAAA,OAAO,EAAE,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAE;AAAA,EACtB;AAEA,EAAA,IAAI,MAAM,CAAA,EAAG;AACX,IAAA,OAAO,EAAE,CAAA,EAAGA,OAAAA,CAAO,CAAC,CAAA,CAAG,CAAC,CAAA,EAAG,CAAA,EAAGA,OAAAA,CAAO,CAAC,CAAA,CAAG,CAAC,CAAA,EAAE;AAAA,EAC9C;AAEA,EAAA,CAAA,GAAA,CAAM,CAAA,GAAI,SAAU,MAAA,IAAU,MAAA;AAE9B,EAAA,MAAM,cAAc,MAAA,GAAS,CAAA;AAC7B,EAAA,IAAI,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,CAAA,GAAI,WAAW,CAAA;AAClC,EAAA,IAAI,KAAK,CAAA,EAAG;AACV,IAAA,CAAA,GAAI,CAAA,GAAI,CAAA;AAAA,EACV;AAEA,EAAA,IAAI,CAAA,GAAA,CAAK,CAAA,GAAI,CAAA,GAAI,WAAA,IAAe,WAAA;AAChC,EAAA,CAAA,GAAI,KAAK,GAAA,CAAI,CAAA,EAAG,KAAK,GAAA,CAAI,CAAA,EAAG,CAAC,CAAC,CAAA;AAE9B,EAAA,MAAM,EAAA,GAAKA,OAAAA,CAAAA,CAAQ,CAAA,GAAI,CAAA,GAAI,KAAK,CAAC,CAAA;AACjC,EAAA,MAAM,EAAA,GAAKA,QAAO,CAAC,CAAA;AACnB,EAAA,MAAM,EAAA,GAAKA,OAAAA,CAAAA,CAAQ,CAAA,GAAI,CAAA,IAAK,CAAC,CAAA;AAC7B,EAAA,MAAM,EAAA,GAAKA,OAAAA,CAAAA,CAAQ,CAAA,GAAI,CAAA,IAAK,CAAC,CAAA;AAE7B,EAAA,OAAO;AAAA,IACL,CAAA,EAAG,YAAA,CAAa,EAAA,CAAG,CAAC,GAAG,EAAA,CAAG,CAAC,CAAA,EAAG,EAAA,CAAG,CAAC,CAAA,EAAG,EAAA,CAAG,CAAC,GAAG,CAAC,CAAA;AAAA,IAC7C,CAAA,EAAG,YAAA,CAAa,EAAA,CAAG,CAAC,GAAG,EAAA,CAAG,CAAC,CAAA,EAAG,EAAA,CAAG,CAAC,CAAA,EAAG,EAAA,CAAG,CAAC,GAAG,CAAC;AAAA,GAC/C;AACF;AA2BO,SAAS,SAAA,CAAUA,SAA6B,IAAA,EAAoC;AACzF,EAAA,IAAIA,OAAAA,CAAO,SAAS,CAAA,EAAG;AACrB,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,+CAAA,EAAkDA,OAAAA,CAAO,MAAM,CAAA,CAAA,CAAG,CAAA;AAAA,EACpF;AAEA,EAAA,MAAM,KAAA,GAAQA,QAAO,CAAC,CAAA;AACtB,EAAA,IAAIA,QAAO,KAAA,CAAM,CAAC,CAAA,KAAM,CAAA,CAAE,CAAC,CAAA,KAAM,KAAA,CAAM,CAAC,CAAA,IAAK,EAAE,CAAC,CAAA,KAAM,KAAA,CAAM,CAAC,CAAC,CAAA,EAAG;AAC/D,IAAA,OAAA,CAAQ,IAAA;AAAA,MACN;AAAA,KACF;AAAA,EACF;AAEA,EAAA,MAAM,MAAA,GAASA,QAAO,MAAA,CAAO,CAAC,GAAG,CAAA,KAAM,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,EAAE,CAAC,CAAC,GAAG,IAAA,CAAK,GAAA,CAAI,EAAE,CAAC,CAAC,CAAC,CAAA,EAAG,CAAC,CAAA;AACrF,EAAA,IAAI,SAAS,CAAA,EAAG;AACd,IAAA,OAAA,CAAQ,IAAA;AAAA,MACN,CAAA,iDAAA,EAAiD,MAAA,CAAO,OAAA,CAAQ,CAAC,CAAC,CAAA,gEAAA;AAAA,KACpE;AAAA,EACF;AAEA,EAAA,MAAM,GAAA,GAAMA,OAAAA,CAAO,GAAA,CAAI,CAAC,CAAC,CAAA,EAAG,CAAC,CAAA,KAAM,CAAC,CAAA,EAAG,CAAC,CAAiB,CAAA;AAEzD,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,MAAM,IAAA,IAAQ,OAAA;AAAA,IACpB,EAAA,EAAI,CAAC,CAAA,KAAc,kBAAA,CAAmB,KAAK,CAAC,CAAA;AAAA,IAC5C,MAAA,EAAQ,MAAA;AAAA,IACR,IAAA,EAAM;AAAA,GACR;AACF;;;ACxHA,IAAM,MAAA,GAA8B;AAAA,EAClC,CAAC,OAAO,KAAK,CAAA;AAAA,EACb,CAAC,OAAO,KAAK,CAAA;AAAA,EACb,CAAC,OAAO,KAAK,CAAA;AAAA,EACb,CAAC,OAAO,KAAK,CAAA;AAAA,EACb,CAAC,OAAO,KAAK,CAAA;AAAA,EACb,CAAC,MAAM,KAAK,CAAA;AAAA,EACZ,CAAC,OAAO,KAAK,CAAA;AAAA,EACb,CAAC,OAAO,KAAK,CAAA;AAAA,EACb,CAAC,OAAO,KAAK,CAAA;AAAA,EACb,CAAC,OAAO,EAAI,CAAA;AAAA,EACZ,CAAC,OAAO,IAAI,CAAA;AAAA,EACZ,CAAC,MAAM,KAAK,CAAA;AAAA,EACZ,CAAC,MAAM,IAAI,CAAA;AAAA,EACX,CAAC,MAAM,IAAI,CAAA;AAAA,EACX,CAAC,MAAM,IAAI,CAAA;AAAA,EACX,CAAC,OAAO,KAAK,CAAA;AAAA,EACb,CAAC,OAAO,KAAK,CAAA;AAAA,EACb,CAAC,OAAO,KAAK,CAAA;AAAA,EACb,CAAC,OAAO,KAAK,CAAA;AAAA,EACb,CAAC,MAAM,KAAK,CAAA;AAAA,EACZ,CAAC,OAAO,KAAK;AACf,CAAA;AAEO,IAAM,QAAA,GAAqB;AAAA,EAChC,GAAG,SAAA,CAAU,MAAA,EAAQ,EAAE,IAAA,EAAM,cAAc,CAAA;AAAA,EAC3C,KAAA,EAAO;AACT;;;AC7BA,IAAM,MAAA,GAAS,KAAK,EAAA,GAAK,CAAA;AAEzB,SAAS,SAAA,CAAU,CAAA,EAAW,KAAA,EAAe,OAAA,EAAiC;AAC5E,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA;AACpB,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA;AACpB,EAAA,OAAO;AAAA,IACL,CAAA,EAAG,IAAI,CAAA,GAAI,CAAA;AAAA,IACX,CAAA,EAAG,IAAI,CAAA,GAAI;AAAA,GACb;AACF;AAMO,IAAM,OAAA,GAAoB;AAAA,EAC/B,IAAA,EAAM,SAAA;AAAA,EACN,EAAA,EAAI,SAAA;AAAA,EACJ,MAAA,EAAQ,MAAA;AAAA,EACR,KAAA,EAAO;AACT;;;ACpBA,IAAMC,OAAAA,GAAS,KAAK,EAAA,GAAK,CAAA;AAEzB,SAAS,SAAA,CAAU,CAAA,EAAW,KAAA,EAAe,OAAA,EAAiC;AAC5E,EAAA,OAAO;AAAA,IACL,CAAA,EAAG,IAAI,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,GAAI,CAAC,CAAA;AAAA,IACnC,CAAA,EAAG,IAAI,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,GAAI,CAAC;AAAA,GACrC;AACF;AAMO,IAAM,OAAA,GAAoB;AAAA,EAC/B,IAAA,EAAM,SAAA;AAAA,EACN,EAAA,EAAI,SAAA;AAAA,EACJ,MAAA,EAAQA,OAAAA;AAAA,EACR,KAAA,EAAO;AACT;;;AClBA,IAAMA,OAAAA,GAAS,KAAK,EAAA,GAAK,CAAA;AAEzB,SAAS,aAAA,CAAc,CAAA,EAAW,KAAA,EAAe,OAAA,EAAiC;AAChF,EAAA,OAAO;AAAA,IACL,CAAA,EAAG,IAAI,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,GAAI,CAAC,CAAA;AAAA,IACnC,CAAA,EAAG,IAAI,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,GAAI,CAAC;AAAA,GACrC;AACF;AAMO,IAAM,WAAA,GAAwB;AAAA,EACnC,IAAA,EAAM,kBAAA;AAAA,EACN,EAAA,EAAI,aAAA;AAAA,EACJ,MAAA,EAAQA,OAAAA;AAAA,EACR,KAAA,EAAO;AACT;;;AClBA,IAAMA,OAAAA,GAAS,KAAK,EAAA,GAAK,CAAA;AAEzB,SAAS,cAAA,CAAe,CAAA,EAAW,KAAA,EAAe,OAAA,EAAiC;AACjF,EAAA,MAAM,IAAI,CAAA,GAAM,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,IAAI,GAAG,CAAA;AACvC,EAAA,OAAO;AAAA,IACL,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAC,IAAI,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,GAAI,CAAC,CAAA;AAAA,IACvC,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAC,IAAI,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,GAAI,CAAC;AAAA,GACzC;AACF;AAEA,SAAS,uBAAuB,CAAA,EAAkB;AAEhD,EAAA,MAAM,CAAA,GAAI,KAAA;AACV,EAAA,OAAO;AAAA,IACL,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAC,IAAI,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,GAAI,CAAC,CAAA;AAAA,IACvC,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAC,IAAI,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,GAAI,CAAC;AAAA,GACzC;AACF;AAMO,IAAM,YAAA,GAAyB;AAAA,EACpC,IAAA,EAAM,aAAA;AAAA,EACN,EAAA,EAAI,cAAA;AAAA,EACJ,MAAA,EAAQA,OAAAA;AAAA,EACR,KAAA,EAAO,GAAA;AAAA,EACP,UAAA,EAAY;AACd;;;AC7BA,IAAMA,OAAAA,GAAS,KAAK,EAAA,GAAK,CAAA;AAEzB,SAAS,aAAA,CAAc,CAAA,EAAW,IAAA,EAAc,OAAA,EAAiC;AAC/E,EAAA,MAAM,MAAM,IAAA,GAAO,IAAA;AACnB,EAAA,OAAO;AAAA,IACL,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,CAAA,GAAI,IAAI,GAAG,CAAA;AAAA,IACvB,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,CAAA,GAAI,CAAC;AAAA,GACnB;AACF;AAMO,IAAM,WAAA,GAAwB;AAAA,EACnC,IAAA,EAAM,eAAA;AAAA,EACN,EAAA,EAAI,aAAA;AAAA,EACJ,MAAA,EAAQA,OAAAA;AAAA,EACR,KAAA,EAAO,CAAA;AAAA,EACP,QAAA,EAAU;AACZ;;;ACpBA,IAAMA,OAAAA,GAAS,KAAK,EAAA,GAAK,CAAA;AAEzB,SAAS,aAAA,CAAc,CAAA,EAAW,IAAA,EAAc,OAAA,EAAiC;AAC/E,EAAA,MAAM,MAAM,IAAA,GAAO,IAAA;AACnB,EAAA,OAAO;AAAA,IACL,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,CAAA,GAAI,IAAI,GAAG,CAAA;AAAA,IACvB,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,CAAA,GAAI,CAAC;AAAA,GACnB;AACF;AAMO,IAAM,WAAA,GAAwB;AAAA,EACnC,IAAA,EAAM,eAAA;AAAA,EACN,EAAA,EAAI,aAAA;AAAA,EACJ,MAAA,EAAQA,OAAAA;AAAA,EACR,KAAA,EAAO,GAAA;AAAA,EACP,QAAA,EAAU;AACZ;;;ACpBA,IAAMA,OAAAA,GAAS,KAAK,EAAA,GAAK,CAAA;AAEzB,SAAS,MAAA,CAAO,CAAA,EAAW,IAAA,EAAc,OAAA,EAAiC;AACxE,EAAA,MAAM,IAAI,IAAA,GAAO,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,OAAO,IAAI,CAAA;AAC5C,EAAA,MAAM,CAAA,GAAI,KAAK,GAAA,CAAI,CAAC,GAClB,CAAA,GAAI,IAAA,CAAK,IAAI,CAAC,CAAA;AAChB,EAAA,OAAO;AAAA,IACL,CAAA,EAAG,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,EAAG,CAAC,CAAA;AAAA,IACzC,CAAA,EAAG,IAAA,CAAK,IAAA,CAAK,CAAC,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA,EAAG,CAAC;AAAA,GAC3C;AACF;AAMO,IAAM,IAAA,GAAiB;AAAA,EAC5B,IAAA,EAAM,eAAA;AAAA,EACN,EAAA,EAAI,MAAA;AAAA,EACJ,MAAA,EAAQA,OAAAA;AAAA,EACR,KAAA,EAAO,CAAA;AAAA,EACP,QAAA,EAAU;AACZ;;;ACtBA,IAAMA,OAAAA,GAAS,KAAK,EAAA,GAAK,CAAA;AAEzB,SAAS,OAAA,CAAQ,CAAA,EAAW,KAAA,EAAe,OAAA,EAAiC;AAC1E,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,GAAI,CAAC,CAAA;AACxB,EAAA,OAAO;AAAA,IACL,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA;AAAA,IACjB,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAC;AAAA,GACnB;AACF;AAMO,IAAM,KAAA,GAAkB;AAAA,EAC7B,IAAA,EAAM,YAAA;AAAA,EACN,EAAA,EAAI,OAAA;AAAA,EACJ,MAAA,EAAQA,OAAAA;AAAA,EACR,KAAA,EAAO;AACT;;;ACnBA,IAAMA,OAAAA,GAAS,KAAK,EAAA,GAAK,CAAA;AAEzB,SAAS,OAAA,CAAQ,CAAA,EAAW,KAAA,EAAe,OAAA,EAAiC;AAC1E,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,GAAI,CAAC,CAAA;AACxB,EAAA,OAAO;AAAA,IACL,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA;AAAA,IACjB,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAC;AAAA,GACnB;AACF;AAMO,IAAM,KAAA,GAAkB;AAAA,EAC7B,IAAA,EAAM,YAAA;AAAA,EACN,EAAA,EAAI,OAAA;AAAA,EACJ,MAAA,EAAQA,OAAAA;AAAA,EACR,KAAA,EAAO;AACT;;;ACnBA,IAAM,OAAA,GAAU,KAAK,EAAA,GAAK,CAAA;AAE1B,SAAS,QAAA,CAAS,CAAA,EAAW,KAAA,EAAe,OAAA,EAAiC;AAC3E,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,GAAA,CAAK,CAAA,GAAI,IAAK,CAAC,CAAA;AAC9B,EAAA,OAAO;AAAA,IACL,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA;AAAA,IACjB,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAC;AAAA,GACnB;AACF;AAMO,IAAM,MAAA,GAAmB;AAAA,EAC9B,IAAA,EAAM,cAAA;AAAA,EACN,EAAA,EAAI,QAAA;AAAA,EACJ,MAAA,EAAQ,OAAA;AAAA,EACR,KAAA,EAAO;AACT;;;ACnBA,IAAMA,QAAAA,GAAS,KAAK,EAAA,GAAK,CAAA;AAEzB,SAAS,MAAA,CAAO,CAAA,EAAW,KAAA,EAAe,OAAA,EAAiC;AACzE,EAAA,MAAM,CAAA,GACJ,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAK,CAAA,GAAI,CAAA,GAAK,CAAC,CAAC,CAAA,GAC9B,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAK,EAAA,GAAK,CAAA,GAAK,CAAC,CAAC,CAAA,GACtC,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAK,EAAA,GAAK,CAAA,GAAK,CAAC,CAAC,CAAA;AACxC,EAAA,OAAO;AAAA,IACL,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA;AAAA,IACjB,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAC;AAAA,GACnB;AACF;AAKO,IAAM,IAAA,GAAiB;AAAA,EAC5B,IAAA,EAAM,MAAA;AAAA,EACN,EAAA,EAAI,MAAA;AAAA,EACJ,MAAA,EAAQA,QAAAA;AAAA,EACR,KAAA,EAAO;AACT;;;ACrBA,IAAMA,QAAAA,GAAS,KAAK,EAAA,GAAK,CAAA;AAEzB,SAAS,OAAA,CAAQ,CAAA,EAAW,KAAA,EAAe,OAAA,EAAiC;AAC1E,EAAA,MAAM,CAAA,GACJ,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,IAAI,CAAC,CAAC,CAAA,GACxB,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,KAAK,GAAA,CAAI,CAAA,GAAI,CAAC,CAAC,CAAA,GAC/B,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAI,EAAA,GAAK,CAAC,CAAC,CAAA;AAClC,EAAA,OAAO;AAAA,IACL,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA;AAAA,IACjB,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAC;AAAA,GACnB;AACF;AAMO,IAAM,KAAA,GAAkB;AAAA,EAC7B,IAAA,EAAM,cAAA;AAAA,EACN,EAAA,EAAI,OAAA;AAAA,EACJ,MAAA,EAAQA,QAAAA;AAAA,EACR,KAAA,EAAO;AACT;;;ACtBA,IAAMA,QAAAA,GAAS,KAAK,EAAA,GAAK,CAAA;AAEzB,SAAS,OAAA,CAAQ,CAAA,EAAW,KAAA,EAAe,OAAA,EAAiC;AAC1E,EAAA,MAAM,CAAA,GACJ,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAK,CAAA,GAAI,CAAA,GAAK,CAAC,CAAC,CAAA,GAC9B,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAK,EAAA,GAAK,CAAA,GAAK,CAAC,CAAC,CAAA,GACtC,IAAA,GAAO,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,GAAA,CAAK,EAAA,GAAK,CAAA,GAAK,CAAC,CAAC,CAAA;AACxC,EAAA,OAAO;AAAA,IACL,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAC,CAAA;AAAA,IACjB,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,CAAC;AAAA,GACnB;AACF;AAMO,IAAM,KAAA,GAAkB;AAAA,EAC7B,IAAA,EAAM,cAAA;AAAA,EACN,EAAA,EAAI,OAAA;AAAA,EACJ,MAAA,EAAQA,QAAAA;AAAA,EACR,KAAA,EAAO;AACT;;;ACcO,IAAM,MAAA,GAAS;AAAA,EACpB,QAAA;AAAA,EACA,YAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA;AAAA,EACA,KAAA;AAAA,EACA,KAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF","file":"index.cjs","sourcesContent":["import type { ControlPoint, Point, CurveDef } from \"./types\";\n\n/**\n * One full loop around the spline maps to the parametric interval `[0, 2π)`,\n * matching the convention for built-in curves.\n */\nconst PERIOD = 2 * Math.PI;\n\n/**\n * Evaluates a one-dimensional Catmull-Rom spline segment given four control values.\n * The parameter `u` ranges from 0 (at `p1`) to 1 (at `p2`).\n * `p0` and `p3` are the phantom neighbours that influence the tangent at each endpoint.\n */\nfunction catmullRom1D(p0: number, p1: number, p2: number, p3: number, u: number): number {\n const u2 = u * u;\n const u3 = u2 * u;\n\n // The standard Catmull-Rom matrix form\n return (\n 0.5 *\n (2 * p1 +\n (-p0 + p2) * u +\n (2 * p0 - 5 * p1 + 4 * p2 - p3) * u2 +\n (-p0 + 3 * p1 - 3 * p2 + p3) * u3)\n );\n}\n\n/**\n * Evaluates a closed Catmull-Rom spline through every point in `points`\n *\n * The spline treats `points` as a **closed loop**\n * The last point wraps back to the first,\n * and each segment uses a phantom predecessor / successor so the\n * curve passes exactly through every control point.\n *\n * @param points At least 1 point. An empty array yields `(0, 0)`. A single point returns that point for every `t`\n * @param t Parametric position along the closed loop. Wraps into `[0, 2π)` automatically, so values outside that range are remapped rather than rejected\n * @returns The `(x, y)` position on the spline at time `t`\n */\nexport function evaluateCatmullRom(points: Array<ControlPoint>, t: number): Point {\n const N = points.length;\n\n if (N === 0) {\n return { x: 0, y: 0 };\n }\n\n if (N === 1) {\n return { x: points[0]![0], y: points[0]![1] };\n }\n\n t = ((t % PERIOD) + PERIOD) % PERIOD;\n\n const segmentSize = PERIOD / N;\n let i = Math.floor(t / segmentSize);\n if (i >= N) {\n i = N - 1;\n }\n\n let u = (t - i * segmentSize) / segmentSize;\n u = Math.max(0, Math.min(1, u));\n\n const p0 = points[(i - 1 + N) % N]!;\n const p1 = points[i]!;\n const p2 = points[(i + 1) % N]!;\n const p3 = points[(i + 2) % N]!;\n\n return {\n x: catmullRom1D(p0[0], p1[0], p2[0], p3[0], u),\n y: catmullRom1D(p0[1], p1[1], p2[1], p3[1], u),\n };\n}\n\n/**\n * The returned curve definition produces a closed Catmull-Rom spline that\n * passes through every point in order, looping back from the last point to the first.\n *\n * @param points Array of control points in **normalized `[−1, 1]` space**,\n * matching the playground's draw-mode coordinate system.\n * ! Must contain at least 3 points.\n * @param opts Optional overrides for the returned `CurveDef`.\n * @param opts.name Display name for the curve. Defaults to `\"drawn\"`.\n * @returns A `CurveDef` with `period: 2π`, `kind: \"drawn\"`, and the spline evaluator as its `fn`.\n * @throws If `points` has fewer than 3 entries.\n *\n * @example\n * ```ts\n * import { createSarmal, drawCurve } from '@sarmal/core'\n *\n * const curve = drawCurve([\n * [-0.5, 0.3],\n * [ 0.2, -0.8],\n * [ 0.7, 0.4],\n * ])\n *\n * createSarmal(canvas, curve)\n * ```\n */\nexport function drawCurve(points: Array<ControlPoint>, opts?: { name?: string }): CurveDef {\n if (points.length < 3) {\n throw new Error(`drawCurve requires at least 3 points, received ${points.length}.`);\n }\n\n const first = points[0]!;\n if (points.every((p) => p[0] === first[0] && p[1] === first[1])) {\n console.warn(\n \"[sarmal].drawCurve: all control points are identical. The curve will be a single point.\",\n );\n }\n\n const maxAbs = points.reduce((m, p) => Math.max(m, Math.abs(p[0]), Math.abs(p[1])), 0);\n if (maxAbs > 2) {\n console.warn(\n `[sarmal].drawCurve: control points extend to ±${maxAbs.toFixed(1)}, which may render off-screen. Coordinates should be in [-1, 1].`,\n );\n }\n\n const pts = points.map(([x, y]) => [x, y] as ControlPoint);\n\n return {\n name: opts?.name ?? \"drawn\",\n fn: (t: number) => evaluateCatmullRom(pts, t),\n period: PERIOD,\n kind: \"drawn\",\n };\n}\n","import type { ControlPoint, CurveDef } from \"../types\";\n\nimport { drawCurve } from \"../catmull-rom\";\n\nconst points: Array<ControlPoint> = [\n [-0.44, -0.45],\n [-0.53, -0.77],\n [-0.82, -0.66],\n [-0.82, -0.18],\n [-0.25, -0.04],\n [0.16, -0.49],\n [-0.03, -0.87],\n [-0.68, -0.94],\n [-0.95, -0.61],\n [-0.87, -0.0],\n [-0.34, 0.21],\n [0.27, -0.04],\n [0.87, 0.06],\n [0.87, 0.57],\n [0.32, 0.66],\n [-0.21, -0.43],\n [-0.43, -0.81],\n [-0.69, -0.84],\n [-0.87, -0.66],\n [-0.9, -0.47],\n [-0.76, -0.35],\n];\n\nexport const artemis2: CurveDef = {\n ...drawCurve(points, { name: \"Artemis II\" }),\n speed: 0.7,\n};\n","import type { CurveDef } from \"../types\";\n\nconst TWO_PI = Math.PI * 2;\n\nfunction astroidFn(t: number, _time: number, _params: Record<string, number>) {\n const c = Math.cos(t);\n const s = Math.sin(t);\n return {\n x: c * c * c,\n y: s * s * s,\n };\n}\n\n/**\n * Astroid curve - a 4-cusped hypocycloid\n * Creates a star-like shape with four sharp corners\n */\nexport const astroid: CurveDef = {\n name: \"Astroid\",\n fn: astroidFn,\n period: TWO_PI,\n speed: 1.1,\n};\n","import type { CurveDef } from \"../types\";\n\nconst TWO_PI = Math.PI * 2;\n\nfunction deltoidFn(t: number, _time: number, _params: Record<string, number>) {\n return {\n x: 2 * Math.cos(t) + Math.cos(2 * t),\n y: 2 * Math.sin(t) - Math.sin(2 * t),\n };\n}\n\n/**\n * Deltoid curve - a 3-cusped hypocycloid\n * Creates a triangular shape with curved sides\n */\nexport const deltoid: CurveDef = {\n name: \"Deltoid\",\n fn: deltoidFn,\n period: TWO_PI,\n speed: 0.9,\n};\n","import type { CurveDef } from \"../types\";\n\nconst TWO_PI = Math.PI * 2;\n\nfunction epicycloid3Fn(t: number, _time: number, _params: Record<string, number>) {\n return {\n x: 4 * Math.cos(t) - Math.cos(4 * t),\n y: 4 * Math.sin(t) - Math.sin(4 * t),\n };\n}\n\n/**\n * Epicycloid with 3 cusps\n * Creates a three-pointed star shape\n */\nexport const epicycloid3: CurveDef = {\n name: \"Epicycloid (n=3)\",\n fn: epicycloid3Fn,\n period: TWO_PI,\n speed: 0.75,\n};\n","import type { CurveDef, Point } from \"../types\";\n\nconst TWO_PI = Math.PI * 2;\n\nfunction epitrochoid7Fn(t: number, _time: number, _params: Record<string, number>) {\n const d = 1.0 + 0.55 * Math.sin(t * 0.5);\n return {\n x: 7 * Math.cos(t) - d * Math.cos(7 * t),\n y: 7 * Math.sin(t) - d * Math.sin(7 * t),\n };\n}\n\nfunction epitrochoid7SkeletonFn(t: number): Point {\n // average of the oscillating range for a stable base shape\n const d = 1.275;\n return {\n x: 7 * Math.cos(t) - d * Math.cos(7 * t),\n y: 7 * Math.sin(t) - d * Math.sin(7 * t),\n };\n}\n\n/**\n * Epitrochoid with 7 lobes and dynamic variation\n * Creates a flower-like pattern with undulating petals\n */\nexport const epitrochoid7: CurveDef = {\n name: \"Epitrochoid\",\n fn: epitrochoid7Fn,\n period: TWO_PI,\n speed: 1.4,\n skeletonFn: epitrochoid7SkeletonFn,\n};\n","import type { CurveDef } from \"../types\";\n\nconst TWO_PI = Math.PI * 2;\n\nfunction lissajous32Fn(t: number, time: number, _params: Record<string, number>) {\n const phi = time * 0.45;\n return {\n x: Math.sin(3 * t + phi),\n y: Math.sin(2 * t),\n };\n}\n\n/**\n * Lissajous curve with frequency ratio 3:2\n * Creates a figure-eight-like pattern with live skeleton\n */\nexport const lissajous32: CurveDef = {\n name: \"Lissajous 3:2\",\n fn: lissajous32Fn,\n period: TWO_PI,\n speed: 2.0,\n skeleton: \"live\",\n};\n","import type { CurveDef } from \"../types\";\n\nconst TWO_PI = Math.PI * 2;\n\nfunction lissajous43Fn(t: number, time: number, _params: Record<string, number>) {\n const phi = time * 0.38;\n return {\n x: Math.sin(4 * t + phi),\n y: Math.sin(3 * t),\n };\n}\n\n/**\n * Lissajous curve with frequency ratio 4:3\n * Creates a complex interweaving pattern with live skeleton\n */\nexport const lissajous43: CurveDef = {\n name: \"Lissajous 4:3\",\n fn: lissajous43Fn,\n period: TWO_PI,\n speed: 1.8,\n skeleton: \"live\",\n};\n","import type { CurveDef } from \"../types\";\n\nconst TWO_PI = Math.PI * 2;\n\nfunction lameFn(t: number, time: number, _params: Record<string, number>) {\n const p = 1.75 + 1.25 * Math.sin(time * 0.48);\n const c = Math.cos(t),\n s = Math.sin(t);\n return {\n x: Math.sign(c) * Math.pow(Math.abs(c), p),\n y: Math.sign(s) * Math.pow(Math.abs(s), p),\n };\n}\n\n/**\n * Lamé curve (superellipse) with time-varying exponent\n * Creates a squircle-like shape that morphs over time\n */\nexport const lame: CurveDef = {\n name: \"Lamé Curve\",\n fn: lameFn,\n period: TWO_PI,\n speed: 1.0,\n skeleton: \"live\",\n};\n","import type { CurveDef } from \"../types\";\n\nconst TWO_PI = Math.PI * 2;\n\nfunction rose3Fn(t: number, _time: number, _params: Record<string, number>) {\n const r = Math.cos(3 * t);\n return {\n x: r * Math.cos(t),\n y: r * Math.sin(t),\n };\n}\n\n/**\n * Rose curve with 3 petals\n * Creates a three-petaled flower pattern\n */\nexport const rose3: CurveDef = {\n name: \"Rose (n=3)\",\n fn: rose3Fn,\n period: TWO_PI,\n speed: 1.15,\n};\n","import type { CurveDef } from \"../types\";\n\nconst TWO_PI = Math.PI * 2;\n\nfunction rose5Fn(t: number, _time: number, _params: Record<string, number>) {\n const r = Math.cos(5 * t);\n return {\n x: r * Math.cos(t),\n y: r * Math.sin(t),\n };\n}\n\n/**\n * Rose curve with 5 petals\n * Creates a five-petaled flower pattern\n */\nexport const rose5: CurveDef = {\n name: \"Rose (n=5)\",\n fn: rose5Fn,\n period: TWO_PI,\n speed: 1.0,\n};\n","import type { CurveDef } from \"../types\";\n\nconst FOUR_PI = Math.PI * 4;\n\nfunction rose52Fn(t: number, _time: number, _params: Record<string, number>) {\n const r = Math.cos((5 / 2) * t);\n return {\n x: r * Math.cos(t),\n y: r * Math.sin(t),\n };\n}\n\n/**\n * Rose curve with n=5/2 that traces 5 petals over two full revolutions\n * The head passes through the center between petals, creating elegant crossing trails.\n */\nexport const rose52: CurveDef = {\n name: \"Rose (n=5/2)\",\n fn: rose52Fn,\n period: FOUR_PI,\n speed: 0.8,\n};\n","import type { CurveDef } from \"../types\";\n\nconst TWO_PI = Math.PI * 2;\n\nfunction starFn(t: number, _time: number, _params: Record<string, number>) {\n const r =\n Math.abs(Math.cos((5 / 2) * t)) +\n 0.35 * Math.abs(Math.cos((15 / 2) * t)) +\n 0.15 * Math.abs(Math.cos((25 / 2) * t));\n return {\n x: r * Math.cos(t),\n y: r * Math.sin(t),\n };\n}\n\n/**\n * 5-pointed star based on Fourier harmonics.\n */\nexport const star: CurveDef = {\n name: \"Star\",\n fn: starFn,\n period: TWO_PI,\n speed: 1.0,\n};\n","import type { CurveDef } from \"../types\";\n\nconst TWO_PI = Math.PI * 2;\n\nfunction star4Fn(t: number, _time: number, _params: Record<string, number>) {\n const r =\n Math.abs(Math.cos(2 * t)) +\n 0.35 * Math.abs(Math.cos(6 * t)) +\n 0.15 * Math.abs(Math.cos(10 * t));\n return {\n x: r * Math.cos(t),\n y: r * Math.sin(t),\n };\n}\n\n/**\n * 4-pointed star based on Fourier harmonics.\n * Same construction as `star` but with base frequency `2t`, producing 4 tips.\n */\nexport const star4: CurveDef = {\n name: \"Star (4-arm)\",\n fn: star4Fn,\n period: TWO_PI,\n speed: 1.0,\n};\n","import type { CurveDef } from \"../types\";\n\nconst TWO_PI = Math.PI * 2;\n\nfunction star7Fn(t: number, _time: number, _params: Record<string, number>) {\n const r =\n Math.abs(Math.cos((7 / 2) * t)) +\n 0.35 * Math.abs(Math.cos((21 / 2) * t)) +\n 0.15 * Math.abs(Math.cos((35 / 2) * t));\n return {\n x: r * Math.cos(t),\n y: r * Math.sin(t),\n };\n}\n\n/**\n * 7-pointed star based on Fourier harmonics.\n * Same construction as `star` but with base frequency `7t/2`, producing 7 tips.\n */\nexport const star7: CurveDef = {\n name: \"Star (7-arm)\",\n fn: star7Fn,\n period: TWO_PI,\n speed: 1.0,\n};\n","// Individual curve exports for tree-shaking\nexport { artemis2 } from \"./artemis2\";\nexport { astroid } from \"./astroid\";\nexport { deltoid } from \"./deltoid\";\nexport { epicycloid3 } from \"./epicycloid3\";\nexport { epitrochoid7 } from \"./epitrochoid7\";\nexport { lissajous32 } from \"./lissajous32\";\nexport { lissajous43 } from \"./lissajous43\";\nexport { lame } from \"./lame\";\nexport { rose3 } from \"./rose3\";\nexport { rose5 } from \"./rose5\";\nexport { rose52 } from \"./rose52\";\nexport { star } from \"./star\";\nexport { star4 } from \"./star4\";\nexport { star7 } from \"./star7\";\n\n// Bulk export for convenience\n// >> Standard\nimport { rose3 } from \"./rose3\";\nimport { rose5 } from \"./rose5\";\nimport { rose52 } from \"./rose52\";\nimport { star } from \"./star\";\nimport { star4 } from \"./star4\";\nimport { star7 } from \"./star7\";\nimport { astroid } from \"./astroid\";\nimport { deltoid } from \"./deltoid\";\nimport { epicycloid3 } from \"./epicycloid3\";\nimport { epitrochoid7 } from \"./epitrochoid7\";\nimport { lissajous32 } from \"./lissajous32\";\nimport { lissajous43 } from \"./lissajous43\";\nimport { lame } from \"./lame\";\n// >> Iconic\nimport { artemis2 } from \"./artemis2\";\n\n/**\n * Collection of all built-in sarmal curves\n * Import individual curves for better tree-shaking\n */\nexport const curves = {\n artemis2,\n epitrochoid7,\n astroid,\n deltoid,\n rose3,\n rose5,\n rose52,\n star,\n star4,\n star7,\n lissajous32,\n lissajous43,\n epicycloid3,\n lame,\n} as const;\nexport type CurveName = keyof typeof curves;\n"]}
@@ -1,38 +1,38 @@
1
- import { C as CurveDef } from "../types-C0b4MPtI.cjs";
2
- export { artemis2 } from "./artemis2.cjs";
3
- export { astroid } from "./astroid.cjs";
4
- export { deltoid } from "./deltoid.cjs";
5
- export { epicycloid3 } from "./epicycloid3.cjs";
6
- export { epitrochoid7 } from "./epitrochoid7.cjs";
7
- export { lissajous32 } from "./lissajous32.cjs";
8
- export { lissajous43 } from "./lissajous43.cjs";
9
- export { lame } from "./lame.cjs";
10
- export { rose3 } from "./rose3.cjs";
11
- export { rose5 } from "./rose5.cjs";
12
- export { rose52 } from "./rose52.cjs";
13
- export { star } from "./star.cjs";
14
- export { star4 } from "./star4.cjs";
15
- export { star7 } from "./star7.cjs";
1
+ import { C as CurveDef } from '../types-BZpzgNau.cjs';
2
+ export { artemis2 } from './artemis2.cjs';
3
+ export { astroid } from './astroid.cjs';
4
+ export { deltoid } from './deltoid.cjs';
5
+ export { epicycloid3 } from './epicycloid3.cjs';
6
+ export { epitrochoid7 } from './epitrochoid7.cjs';
7
+ export { lissajous32 } from './lissajous32.cjs';
8
+ export { lissajous43 } from './lissajous43.cjs';
9
+ export { lame } from './lame.cjs';
10
+ export { rose3 } from './rose3.cjs';
11
+ export { rose5 } from './rose5.cjs';
12
+ export { rose52 } from './rose52.cjs';
13
+ export { star } from './star.cjs';
14
+ export { star4 } from './star4.cjs';
15
+ export { star7 } from './star7.cjs';
16
16
 
17
17
  /**
18
18
  * Collection of all built-in sarmal curves
19
19
  * Import individual curves for better tree-shaking
20
20
  */
21
21
  declare const curves: {
22
- readonly artemis2: CurveDef;
23
- readonly epitrochoid7: CurveDef;
24
- readonly astroid: CurveDef;
25
- readonly deltoid: CurveDef;
26
- readonly rose3: CurveDef;
27
- readonly rose5: CurveDef;
28
- readonly rose52: CurveDef;
29
- readonly star: CurveDef;
30
- readonly star4: CurveDef;
31
- readonly star7: CurveDef;
32
- readonly lissajous32: CurveDef;
33
- readonly lissajous43: CurveDef;
34
- readonly epicycloid3: CurveDef;
35
- readonly lame: CurveDef;
22
+ readonly artemis2: CurveDef;
23
+ readonly epitrochoid7: CurveDef;
24
+ readonly astroid: CurveDef;
25
+ readonly deltoid: CurveDef;
26
+ readonly rose3: CurveDef;
27
+ readonly rose5: CurveDef;
28
+ readonly rose52: CurveDef;
29
+ readonly star: CurveDef;
30
+ readonly star4: CurveDef;
31
+ readonly star7: CurveDef;
32
+ readonly lissajous32: CurveDef;
33
+ readonly lissajous43: CurveDef;
34
+ readonly epicycloid3: CurveDef;
35
+ readonly lame: CurveDef;
36
36
  };
37
37
  type CurveName = keyof typeof curves;
38
38
 
@@ -1,38 +1,38 @@
1
- import { C as CurveDef } from "../types-C0b4MPtI.js";
2
- export { artemis2 } from "./artemis2.js";
3
- export { astroid } from "./astroid.js";
4
- export { deltoid } from "./deltoid.js";
5
- export { epicycloid3 } from "./epicycloid3.js";
6
- export { epitrochoid7 } from "./epitrochoid7.js";
7
- export { lissajous32 } from "./lissajous32.js";
8
- export { lissajous43 } from "./lissajous43.js";
9
- export { lame } from "./lame.js";
10
- export { rose3 } from "./rose3.js";
11
- export { rose5 } from "./rose5.js";
12
- export { rose52 } from "./rose52.js";
13
- export { star } from "./star.js";
14
- export { star4 } from "./star4.js";
15
- export { star7 } from "./star7.js";
1
+ import { C as CurveDef } from '../types-BZpzgNau.js';
2
+ export { artemis2 } from './artemis2.js';
3
+ export { astroid } from './astroid.js';
4
+ export { deltoid } from './deltoid.js';
5
+ export { epicycloid3 } from './epicycloid3.js';
6
+ export { epitrochoid7 } from './epitrochoid7.js';
7
+ export { lissajous32 } from './lissajous32.js';
8
+ export { lissajous43 } from './lissajous43.js';
9
+ export { lame } from './lame.js';
10
+ export { rose3 } from './rose3.js';
11
+ export { rose5 } from './rose5.js';
12
+ export { rose52 } from './rose52.js';
13
+ export { star } from './star.js';
14
+ export { star4 } from './star4.js';
15
+ export { star7 } from './star7.js';
16
16
 
17
17
  /**
18
18
  * Collection of all built-in sarmal curves
19
19
  * Import individual curves for better tree-shaking
20
20
  */
21
21
  declare const curves: {
22
- readonly artemis2: CurveDef;
23
- readonly epitrochoid7: CurveDef;
24
- readonly astroid: CurveDef;
25
- readonly deltoid: CurveDef;
26
- readonly rose3: CurveDef;
27
- readonly rose5: CurveDef;
28
- readonly rose52: CurveDef;
29
- readonly star: CurveDef;
30
- readonly star4: CurveDef;
31
- readonly star7: CurveDef;
32
- readonly lissajous32: CurveDef;
33
- readonly lissajous43: CurveDef;
34
- readonly epicycloid3: CurveDef;
35
- readonly lame: CurveDef;
22
+ readonly artemis2: CurveDef;
23
+ readonly epitrochoid7: CurveDef;
24
+ readonly astroid: CurveDef;
25
+ readonly deltoid: CurveDef;
26
+ readonly rose3: CurveDef;
27
+ readonly rose5: CurveDef;
28
+ readonly rose52: CurveDef;
29
+ readonly star: CurveDef;
30
+ readonly star4: CurveDef;
31
+ readonly star7: CurveDef;
32
+ readonly lissajous32: CurveDef;
33
+ readonly lissajous43: CurveDef;
34
+ readonly epicycloid3: CurveDef;
35
+ readonly lame: CurveDef;
36
36
  };
37
37
  type CurveName = keyof typeof curves;
38
38