@sarmal/core 0.10.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auto-init.cjs +189 -94
- package/dist/auto-init.cjs.map +1 -1
- package/dist/auto-init.d.cts +1 -2
- package/dist/auto-init.d.ts +1 -2
- package/dist/auto-init.js +188 -93
- package/dist/auto-init.js.map +1 -1
- package/dist/curves/artemis2.cjs +10 -7
- package/dist/curves/artemis2.d.cts +1 -1
- package/dist/curves/artemis2.d.ts +1 -1
- package/dist/curves/artemis2.js +9 -6
- package/dist/curves/astroid.cjs +4 -4
- package/dist/curves/astroid.d.cts +1 -1
- package/dist/curves/astroid.d.ts +1 -1
- package/dist/curves/astroid.js +3 -3
- package/dist/curves/deltoid.cjs +4 -4
- package/dist/curves/deltoid.d.cts +1 -1
- package/dist/curves/deltoid.d.ts +1 -1
- package/dist/curves/deltoid.js +3 -3
- package/dist/curves/epicycloid3.cjs +4 -4
- package/dist/curves/epicycloid3.d.cts +1 -1
- package/dist/curves/epicycloid3.d.ts +1 -1
- package/dist/curves/epicycloid3.js +3 -3
- package/dist/curves/epitrochoid7.cjs +5 -5
- package/dist/curves/epitrochoid7.d.cts +1 -1
- package/dist/curves/epitrochoid7.d.ts +1 -1
- package/dist/curves/epitrochoid7.js +4 -4
- package/dist/curves/index.cjs +32 -28
- package/dist/curves/index.cjs.map +1 -1
- package/dist/curves/index.d.cts +25 -13
- package/dist/curves/index.d.ts +25 -13
- package/dist/curves/index.js +44 -28
- package/dist/curves/index.js.map +1 -1
- package/dist/curves/lame.cjs +6 -5
- package/dist/curves/lame.d.cts +1 -1
- package/dist/curves/lame.d.ts +1 -1
- package/dist/curves/lame.js +5 -4
- package/dist/curves/lissajous32.cjs +4 -4
- package/dist/curves/lissajous32.d.cts +1 -1
- package/dist/curves/lissajous32.d.ts +1 -1
- package/dist/curves/lissajous32.js +3 -3
- package/dist/curves/lissajous43.cjs +4 -4
- package/dist/curves/lissajous43.d.cts +1 -1
- package/dist/curves/lissajous43.d.ts +1 -1
- package/dist/curves/lissajous43.js +3 -3
- package/dist/curves/rose3.cjs +4 -4
- package/dist/curves/rose3.d.cts +1 -1
- package/dist/curves/rose3.d.ts +1 -1
- package/dist/curves/rose3.js +3 -3
- package/dist/curves/rose5.cjs +4 -4
- package/dist/curves/rose5.d.cts +1 -1
- package/dist/curves/rose5.d.ts +1 -1
- package/dist/curves/rose5.js +3 -3
- package/dist/index.cjs +216 -108
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +69 -34
- package/dist/index.d.ts +69 -34
- package/dist/index.js +233 -108
- package/dist/index.js.map +1 -1
- package/dist/types-BW0bpL1Z.d.cts +290 -0
- package/dist/types-BW0bpL1Z.d.ts +290 -0
- package/package.json +1 -1
- package/dist/types-DcyISvnH.d.cts +0 -230
- package/dist/types-DcyISvnH.d.ts +0 -230
package/dist/curves/index.js
CHANGED
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
// src/curves/artemis2.ts
|
|
2
2
|
var TWO_PI = Math.PI * 2;
|
|
3
3
|
function artemis2Fn(t, _time, _params) {
|
|
4
|
-
const a = 0.35,
|
|
5
|
-
|
|
4
|
+
const a = 0.35,
|
|
5
|
+
b = 0.15,
|
|
6
|
+
ox = 0.175;
|
|
7
|
+
const s = Math.sin(t),
|
|
8
|
+
c = Math.cos(t);
|
|
6
9
|
const denom = 1 + s * s;
|
|
7
10
|
return {
|
|
8
|
-
x: c * (1 + a * c) / denom - ox,
|
|
9
|
-
y: s * c * (1 + b * c) / denom
|
|
11
|
+
x: (c * (1 + a * c)) / denom - ox,
|
|
12
|
+
y: (s * c * (1 + b * c)) / denom,
|
|
10
13
|
};
|
|
11
14
|
}
|
|
12
15
|
var artemis2 = {
|
|
13
16
|
name: "Artemis II",
|
|
14
17
|
fn: artemis2Fn,
|
|
15
18
|
period: TWO_PI,
|
|
16
|
-
speed: 0.7
|
|
19
|
+
speed: 0.7,
|
|
17
20
|
};
|
|
18
21
|
|
|
19
22
|
// src/curves/astroid.ts
|
|
@@ -23,14 +26,14 @@ function astroidFn(t, _time, _params) {
|
|
|
23
26
|
const s = Math.sin(t);
|
|
24
27
|
return {
|
|
25
28
|
x: c * c * c,
|
|
26
|
-
y: s * s * s
|
|
29
|
+
y: s * s * s,
|
|
27
30
|
};
|
|
28
31
|
}
|
|
29
32
|
var astroid = {
|
|
30
33
|
name: "Astroid",
|
|
31
34
|
fn: astroidFn,
|
|
32
35
|
period: TWO_PI2,
|
|
33
|
-
speed: 1.1
|
|
36
|
+
speed: 1.1,
|
|
34
37
|
};
|
|
35
38
|
|
|
36
39
|
// src/curves/deltoid.ts
|
|
@@ -38,14 +41,14 @@ var TWO_PI3 = Math.PI * 2;
|
|
|
38
41
|
function deltoidFn(t, _time, _params) {
|
|
39
42
|
return {
|
|
40
43
|
x: 2 * Math.cos(t) + Math.cos(2 * t),
|
|
41
|
-
y: 2 * Math.sin(t) - Math.sin(2 * t)
|
|
44
|
+
y: 2 * Math.sin(t) - Math.sin(2 * t),
|
|
42
45
|
};
|
|
43
46
|
}
|
|
44
47
|
var deltoid = {
|
|
45
48
|
name: "Deltoid",
|
|
46
49
|
fn: deltoidFn,
|
|
47
50
|
period: TWO_PI3,
|
|
48
|
-
speed: 0.9
|
|
51
|
+
speed: 0.9,
|
|
49
52
|
};
|
|
50
53
|
|
|
51
54
|
// src/curves/epicycloid3.ts
|
|
@@ -53,14 +56,14 @@ var TWO_PI4 = Math.PI * 2;
|
|
|
53
56
|
function epicycloid3Fn(t, _time, _params) {
|
|
54
57
|
return {
|
|
55
58
|
x: 4 * Math.cos(t) - Math.cos(4 * t),
|
|
56
|
-
y: 4 * Math.sin(t) - Math.sin(4 * t)
|
|
59
|
+
y: 4 * Math.sin(t) - Math.sin(4 * t),
|
|
57
60
|
};
|
|
58
61
|
}
|
|
59
62
|
var epicycloid3 = {
|
|
60
63
|
name: "Epicycloid (n=3)",
|
|
61
64
|
fn: epicycloid3Fn,
|
|
62
65
|
period: TWO_PI4,
|
|
63
|
-
speed: 0.75
|
|
66
|
+
speed: 0.75,
|
|
64
67
|
};
|
|
65
68
|
|
|
66
69
|
// src/curves/epitrochoid7.ts
|
|
@@ -69,14 +72,14 @@ function epitrochoid7Fn(t, _time, _params) {
|
|
|
69
72
|
const d = 1 + 0.55 * Math.sin(t * 0.5);
|
|
70
73
|
return {
|
|
71
74
|
x: 7 * Math.cos(t) - d * Math.cos(7 * t),
|
|
72
|
-
y: 7 * Math.sin(t) - d * Math.sin(7 * t)
|
|
75
|
+
y: 7 * Math.sin(t) - d * Math.sin(7 * t),
|
|
73
76
|
};
|
|
74
77
|
}
|
|
75
78
|
function epitrochoid7SkeletonFn(t) {
|
|
76
79
|
const d = 1.275;
|
|
77
80
|
return {
|
|
78
81
|
x: 7 * Math.cos(t) - d * Math.cos(7 * t),
|
|
79
|
-
y: 7 * Math.sin(t) - d * Math.sin(7 * t)
|
|
82
|
+
y: 7 * Math.sin(t) - d * Math.sin(7 * t),
|
|
80
83
|
};
|
|
81
84
|
}
|
|
82
85
|
var epitrochoid7 = {
|
|
@@ -84,7 +87,7 @@ var epitrochoid7 = {
|
|
|
84
87
|
fn: epitrochoid7Fn,
|
|
85
88
|
period: TWO_PI5,
|
|
86
89
|
speed: 1.4,
|
|
87
|
-
skeletonFn: epitrochoid7SkeletonFn
|
|
90
|
+
skeletonFn: epitrochoid7SkeletonFn,
|
|
88
91
|
};
|
|
89
92
|
|
|
90
93
|
// src/curves/lissajous32.ts
|
|
@@ -93,7 +96,7 @@ function lissajous32Fn(t, time, _params) {
|
|
|
93
96
|
const phi = time * 0.45;
|
|
94
97
|
return {
|
|
95
98
|
x: Math.sin(3 * t + phi),
|
|
96
|
-
y: Math.sin(2 * t)
|
|
99
|
+
y: Math.sin(2 * t),
|
|
97
100
|
};
|
|
98
101
|
}
|
|
99
102
|
var lissajous32 = {
|
|
@@ -101,7 +104,7 @@ var lissajous32 = {
|
|
|
101
104
|
fn: lissajous32Fn,
|
|
102
105
|
period: TWO_PI6,
|
|
103
106
|
speed: 2,
|
|
104
|
-
skeleton: "live"
|
|
107
|
+
skeleton: "live",
|
|
105
108
|
};
|
|
106
109
|
|
|
107
110
|
// src/curves/lissajous43.ts
|
|
@@ -110,7 +113,7 @@ function lissajous43Fn(t, time, _params) {
|
|
|
110
113
|
const phi = time * 0.38;
|
|
111
114
|
return {
|
|
112
115
|
x: Math.sin(4 * t + phi),
|
|
113
|
-
y: Math.sin(3 * t)
|
|
116
|
+
y: Math.sin(3 * t),
|
|
114
117
|
};
|
|
115
118
|
}
|
|
116
119
|
var lissajous43 = {
|
|
@@ -118,17 +121,18 @@ var lissajous43 = {
|
|
|
118
121
|
fn: lissajous43Fn,
|
|
119
122
|
period: TWO_PI7,
|
|
120
123
|
speed: 1.8,
|
|
121
|
-
skeleton: "live"
|
|
124
|
+
skeleton: "live",
|
|
122
125
|
};
|
|
123
126
|
|
|
124
127
|
// src/curves/lame.ts
|
|
125
128
|
var TWO_PI8 = Math.PI * 2;
|
|
126
129
|
function lameFn(t, time, _params) {
|
|
127
130
|
const p = 1.75 + 1.25 * Math.sin(time * 0.48);
|
|
128
|
-
const c = Math.cos(t),
|
|
131
|
+
const c = Math.cos(t),
|
|
132
|
+
s = Math.sin(t);
|
|
129
133
|
return {
|
|
130
134
|
x: Math.sign(c) * Math.pow(Math.abs(c), p),
|
|
131
|
-
y: Math.sign(s) * Math.pow(Math.abs(s), p)
|
|
135
|
+
y: Math.sign(s) * Math.pow(Math.abs(s), p),
|
|
132
136
|
};
|
|
133
137
|
}
|
|
134
138
|
var lame = {
|
|
@@ -136,7 +140,7 @@ var lame = {
|
|
|
136
140
|
fn: lameFn,
|
|
137
141
|
period: TWO_PI8,
|
|
138
142
|
speed: 1,
|
|
139
|
-
skeleton: "live"
|
|
143
|
+
skeleton: "live",
|
|
140
144
|
};
|
|
141
145
|
|
|
142
146
|
// src/curves/rose3.ts
|
|
@@ -145,14 +149,14 @@ function rose3Fn(t, _time, _params) {
|
|
|
145
149
|
const r = Math.cos(3 * t);
|
|
146
150
|
return {
|
|
147
151
|
x: r * Math.cos(t),
|
|
148
|
-
y: r * Math.sin(t)
|
|
152
|
+
y: r * Math.sin(t),
|
|
149
153
|
};
|
|
150
154
|
}
|
|
151
155
|
var rose3 = {
|
|
152
156
|
name: "Rose (n=3)",
|
|
153
157
|
fn: rose3Fn,
|
|
154
158
|
period: TWO_PI9,
|
|
155
|
-
speed: 1.15
|
|
159
|
+
speed: 1.15,
|
|
156
160
|
};
|
|
157
161
|
|
|
158
162
|
// src/curves/rose5.ts
|
|
@@ -161,14 +165,14 @@ function rose5Fn(t, _time, _params) {
|
|
|
161
165
|
const r = Math.cos(5 * t);
|
|
162
166
|
return {
|
|
163
167
|
x: r * Math.cos(t),
|
|
164
|
-
y: r * Math.sin(t)
|
|
168
|
+
y: r * Math.sin(t),
|
|
165
169
|
};
|
|
166
170
|
}
|
|
167
171
|
var rose5 = {
|
|
168
172
|
name: "Rose (n=5)",
|
|
169
173
|
fn: rose5Fn,
|
|
170
174
|
period: TWO_PI10,
|
|
171
|
-
speed: 1
|
|
175
|
+
speed: 1,
|
|
172
176
|
};
|
|
173
177
|
|
|
174
178
|
// src/curves/index.ts
|
|
@@ -182,9 +186,21 @@ var curves = {
|
|
|
182
186
|
lissajous32,
|
|
183
187
|
lissajous43,
|
|
184
188
|
epicycloid3,
|
|
185
|
-
lame
|
|
189
|
+
lame,
|
|
186
190
|
};
|
|
187
191
|
|
|
188
|
-
export {
|
|
192
|
+
export {
|
|
193
|
+
artemis2,
|
|
194
|
+
astroid,
|
|
195
|
+
curves,
|
|
196
|
+
deltoid,
|
|
197
|
+
epicycloid3,
|
|
198
|
+
epitrochoid7,
|
|
199
|
+
lame,
|
|
200
|
+
lissajous32,
|
|
201
|
+
lissajous43,
|
|
202
|
+
rose3,
|
|
203
|
+
rose5,
|
|
204
|
+
};
|
|
205
|
+
//# sourceMappingURL=index.js.map
|
|
189
206
|
//# sourceMappingURL=index.js.map
|
|
190
|
-
//# sourceMappingURL=index.js.map
|
package/dist/curves/index.js.map
CHANGED
|
@@ -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/index.ts"],"names":["TWO_PI"],"mappings":"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","file":"index.js","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","// 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\";\n\n// Bulk export for convenience\nimport type { CurveDef } from \"../types\";\nimport { artemis2 } from \"./artemis2\";\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\";\nimport { rose3 } from \"./rose3\";\nimport { rose5 } from \"./rose5\";\n\n/**\n * Collection of all built-in sarmal curves\n * Import individual curves for better tree-shaking\n */\nexport const curves: Record<string, CurveDef> = {\n artemis2,\n epitrochoid7,\n astroid,\n deltoid,\n rose5,\n rose3,\n lissajous32,\n lissajous43,\n epicycloid3,\n lame,\n};\n"]}
|
|
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/index.ts"],"names":["TWO_PI"],"mappings":"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","file":"index.js","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","// 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\";\n\n// Bulk export for convenience\n// >> Standard\nimport { rose3 } from \"./rose3\";\nimport { rose5 } from \"./rose5\";\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 rose5,\n rose3,\n lissajous32,\n lissajous43,\n epicycloid3,\n lame,\n} as const;\nexport type CurveName = keyof typeof curves;\n"]}
|
package/dist/curves/lame.cjs
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
|
|
3
3
|
// src/curves/lame.ts
|
|
4
4
|
var TWO_PI = Math.PI * 2;
|
|
5
5
|
function lameFn(t, time, _params) {
|
|
6
6
|
const p = 1.75 + 1.25 * Math.sin(time * 0.48);
|
|
7
|
-
const c = Math.cos(t),
|
|
7
|
+
const c = Math.cos(t),
|
|
8
|
+
s = Math.sin(t);
|
|
8
9
|
return {
|
|
9
10
|
x: Math.sign(c) * Math.pow(Math.abs(c), p),
|
|
10
|
-
y: Math.sign(s) * Math.pow(Math.abs(s), p)
|
|
11
|
+
y: Math.sign(s) * Math.pow(Math.abs(s), p),
|
|
11
12
|
};
|
|
12
13
|
}
|
|
13
14
|
var lame = {
|
|
@@ -15,9 +16,9 @@ var lame = {
|
|
|
15
16
|
fn: lameFn,
|
|
16
17
|
period: TWO_PI,
|
|
17
18
|
speed: 1,
|
|
18
|
-
skeleton: "live"
|
|
19
|
+
skeleton: "live",
|
|
19
20
|
};
|
|
20
21
|
|
|
21
22
|
exports.lame = lame;
|
|
22
23
|
//# sourceMappingURL=lame.cjs.map
|
|
23
|
-
//# sourceMappingURL=lame.cjs.map
|
|
24
|
+
//# sourceMappingURL=lame.cjs.map
|
package/dist/curves/lame.d.cts
CHANGED
package/dist/curves/lame.d.ts
CHANGED
package/dist/curves/lame.js
CHANGED
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
var TWO_PI = Math.PI * 2;
|
|
3
3
|
function lameFn(t, time, _params) {
|
|
4
4
|
const p = 1.75 + 1.25 * Math.sin(time * 0.48);
|
|
5
|
-
const c = Math.cos(t),
|
|
5
|
+
const c = Math.cos(t),
|
|
6
|
+
s = Math.sin(t);
|
|
6
7
|
return {
|
|
7
8
|
x: Math.sign(c) * Math.pow(Math.abs(c), p),
|
|
8
|
-
y: Math.sign(s) * Math.pow(Math.abs(s), p)
|
|
9
|
+
y: Math.sign(s) * Math.pow(Math.abs(s), p),
|
|
9
10
|
};
|
|
10
11
|
}
|
|
11
12
|
var lame = {
|
|
@@ -13,9 +14,9 @@ var lame = {
|
|
|
13
14
|
fn: lameFn,
|
|
14
15
|
period: TWO_PI,
|
|
15
16
|
speed: 1,
|
|
16
|
-
skeleton: "live"
|
|
17
|
+
skeleton: "live",
|
|
17
18
|
};
|
|
18
19
|
|
|
19
20
|
export { lame };
|
|
20
21
|
//# sourceMappingURL=lame.js.map
|
|
21
|
-
//# sourceMappingURL=lame.js.map
|
|
22
|
+
//# sourceMappingURL=lame.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
|
|
3
3
|
// src/curves/lissajous32.ts
|
|
4
4
|
var TWO_PI = Math.PI * 2;
|
|
@@ -6,7 +6,7 @@ function lissajous32Fn(t, time, _params) {
|
|
|
6
6
|
const phi = time * 0.45;
|
|
7
7
|
return {
|
|
8
8
|
x: Math.sin(3 * t + phi),
|
|
9
|
-
y: Math.sin(2 * t)
|
|
9
|
+
y: Math.sin(2 * t),
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
12
|
var lissajous32 = {
|
|
@@ -14,9 +14,9 @@ var lissajous32 = {
|
|
|
14
14
|
fn: lissajous32Fn,
|
|
15
15
|
period: TWO_PI,
|
|
16
16
|
speed: 2,
|
|
17
|
-
skeleton: "live"
|
|
17
|
+
skeleton: "live",
|
|
18
18
|
};
|
|
19
19
|
|
|
20
20
|
exports.lissajous32 = lissajous32;
|
|
21
21
|
//# sourceMappingURL=lissajous32.cjs.map
|
|
22
|
-
//# sourceMappingURL=lissajous32.cjs.map
|
|
22
|
+
//# sourceMappingURL=lissajous32.cjs.map
|
|
@@ -4,7 +4,7 @@ function lissajous32Fn(t, time, _params) {
|
|
|
4
4
|
const phi = time * 0.45;
|
|
5
5
|
return {
|
|
6
6
|
x: Math.sin(3 * t + phi),
|
|
7
|
-
y: Math.sin(2 * t)
|
|
7
|
+
y: Math.sin(2 * t),
|
|
8
8
|
};
|
|
9
9
|
}
|
|
10
10
|
var lissajous32 = {
|
|
@@ -12,9 +12,9 @@ var lissajous32 = {
|
|
|
12
12
|
fn: lissajous32Fn,
|
|
13
13
|
period: TWO_PI,
|
|
14
14
|
speed: 2,
|
|
15
|
-
skeleton: "live"
|
|
15
|
+
skeleton: "live",
|
|
16
16
|
};
|
|
17
17
|
|
|
18
18
|
export { lissajous32 };
|
|
19
19
|
//# sourceMappingURL=lissajous32.js.map
|
|
20
|
-
//# sourceMappingURL=lissajous32.js.map
|
|
20
|
+
//# sourceMappingURL=lissajous32.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
|
|
3
3
|
// src/curves/lissajous43.ts
|
|
4
4
|
var TWO_PI = Math.PI * 2;
|
|
@@ -6,7 +6,7 @@ function lissajous43Fn(t, time, _params) {
|
|
|
6
6
|
const phi = time * 0.38;
|
|
7
7
|
return {
|
|
8
8
|
x: Math.sin(4 * t + phi),
|
|
9
|
-
y: Math.sin(3 * t)
|
|
9
|
+
y: Math.sin(3 * t),
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
12
|
var lissajous43 = {
|
|
@@ -14,9 +14,9 @@ var lissajous43 = {
|
|
|
14
14
|
fn: lissajous43Fn,
|
|
15
15
|
period: TWO_PI,
|
|
16
16
|
speed: 1.8,
|
|
17
|
-
skeleton: "live"
|
|
17
|
+
skeleton: "live",
|
|
18
18
|
};
|
|
19
19
|
|
|
20
20
|
exports.lissajous43 = lissajous43;
|
|
21
21
|
//# sourceMappingURL=lissajous43.cjs.map
|
|
22
|
-
//# sourceMappingURL=lissajous43.cjs.map
|
|
22
|
+
//# sourceMappingURL=lissajous43.cjs.map
|
|
@@ -4,7 +4,7 @@ function lissajous43Fn(t, time, _params) {
|
|
|
4
4
|
const phi = time * 0.38;
|
|
5
5
|
return {
|
|
6
6
|
x: Math.sin(4 * t + phi),
|
|
7
|
-
y: Math.sin(3 * t)
|
|
7
|
+
y: Math.sin(3 * t),
|
|
8
8
|
};
|
|
9
9
|
}
|
|
10
10
|
var lissajous43 = {
|
|
@@ -12,9 +12,9 @@ var lissajous43 = {
|
|
|
12
12
|
fn: lissajous43Fn,
|
|
13
13
|
period: TWO_PI,
|
|
14
14
|
speed: 1.8,
|
|
15
|
-
skeleton: "live"
|
|
15
|
+
skeleton: "live",
|
|
16
16
|
};
|
|
17
17
|
|
|
18
18
|
export { lissajous43 };
|
|
19
19
|
//# sourceMappingURL=lissajous43.js.map
|
|
20
|
-
//# sourceMappingURL=lissajous43.js.map
|
|
20
|
+
//# sourceMappingURL=lissajous43.js.map
|
package/dist/curves/rose3.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
|
|
3
3
|
// src/curves/rose3.ts
|
|
4
4
|
var TWO_PI = Math.PI * 2;
|
|
@@ -6,16 +6,16 @@ function rose3Fn(t, _time, _params) {
|
|
|
6
6
|
const r = Math.cos(3 * t);
|
|
7
7
|
return {
|
|
8
8
|
x: r * Math.cos(t),
|
|
9
|
-
y: r * Math.sin(t)
|
|
9
|
+
y: r * Math.sin(t),
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
12
|
var rose3 = {
|
|
13
13
|
name: "Rose (n=3)",
|
|
14
14
|
fn: rose3Fn,
|
|
15
15
|
period: TWO_PI,
|
|
16
|
-
speed: 1.15
|
|
16
|
+
speed: 1.15,
|
|
17
17
|
};
|
|
18
18
|
|
|
19
19
|
exports.rose3 = rose3;
|
|
20
20
|
//# sourceMappingURL=rose3.cjs.map
|
|
21
|
-
//# sourceMappingURL=rose3.cjs.map
|
|
21
|
+
//# sourceMappingURL=rose3.cjs.map
|
package/dist/curves/rose3.d.cts
CHANGED
package/dist/curves/rose3.d.ts
CHANGED
package/dist/curves/rose3.js
CHANGED
|
@@ -4,16 +4,16 @@ function rose3Fn(t, _time, _params) {
|
|
|
4
4
|
const r = Math.cos(3 * t);
|
|
5
5
|
return {
|
|
6
6
|
x: r * Math.cos(t),
|
|
7
|
-
y: r * Math.sin(t)
|
|
7
|
+
y: r * Math.sin(t),
|
|
8
8
|
};
|
|
9
9
|
}
|
|
10
10
|
var rose3 = {
|
|
11
11
|
name: "Rose (n=3)",
|
|
12
12
|
fn: rose3Fn,
|
|
13
13
|
period: TWO_PI,
|
|
14
|
-
speed: 1.15
|
|
14
|
+
speed: 1.15,
|
|
15
15
|
};
|
|
16
16
|
|
|
17
17
|
export { rose3 };
|
|
18
18
|
//# sourceMappingURL=rose3.js.map
|
|
19
|
-
//# sourceMappingURL=rose3.js.map
|
|
19
|
+
//# sourceMappingURL=rose3.js.map
|
package/dist/curves/rose5.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
"use strict";
|
|
2
2
|
|
|
3
3
|
// src/curves/rose5.ts
|
|
4
4
|
var TWO_PI = Math.PI * 2;
|
|
@@ -6,16 +6,16 @@ function rose5Fn(t, _time, _params) {
|
|
|
6
6
|
const r = Math.cos(5 * t);
|
|
7
7
|
return {
|
|
8
8
|
x: r * Math.cos(t),
|
|
9
|
-
y: r * Math.sin(t)
|
|
9
|
+
y: r * Math.sin(t),
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
12
|
var rose5 = {
|
|
13
13
|
name: "Rose (n=5)",
|
|
14
14
|
fn: rose5Fn,
|
|
15
15
|
period: TWO_PI,
|
|
16
|
-
speed: 1
|
|
16
|
+
speed: 1,
|
|
17
17
|
};
|
|
18
18
|
|
|
19
19
|
exports.rose5 = rose5;
|
|
20
20
|
//# sourceMappingURL=rose5.cjs.map
|
|
21
|
-
//# sourceMappingURL=rose5.cjs.map
|
|
21
|
+
//# sourceMappingURL=rose5.cjs.map
|
package/dist/curves/rose5.d.cts
CHANGED
package/dist/curves/rose5.d.ts
CHANGED
package/dist/curves/rose5.js
CHANGED
|
@@ -4,16 +4,16 @@ function rose5Fn(t, _time, _params) {
|
|
|
4
4
|
const r = Math.cos(5 * t);
|
|
5
5
|
return {
|
|
6
6
|
x: r * Math.cos(t),
|
|
7
|
-
y: r * Math.sin(t)
|
|
7
|
+
y: r * Math.sin(t),
|
|
8
8
|
};
|
|
9
9
|
}
|
|
10
10
|
var rose5 = {
|
|
11
11
|
name: "Rose (n=5)",
|
|
12
12
|
fn: rose5Fn,
|
|
13
13
|
period: TWO_PI,
|
|
14
|
-
speed: 1
|
|
14
|
+
speed: 1,
|
|
15
15
|
};
|
|
16
16
|
|
|
17
17
|
export { rose5 };
|
|
18
18
|
//# sourceMappingURL=rose5.js.map
|
|
19
|
-
//# sourceMappingURL=rose5.js.map
|
|
19
|
+
//# sourceMappingURL=rose5.js.map
|