@sarmal/core 0.8.0 → 0.9.1
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 +209 -103
- package/dist/auto-init.cjs.map +1 -1
- package/dist/auto-init.d.cts +1 -0
- package/dist/auto-init.d.ts +1 -0
- package/dist/auto-init.js +209 -103
- package/dist/auto-init.js.map +1 -1
- package/dist/curves/artemis2.cjs +26 -0
- package/dist/curves/artemis2.cjs.map +1 -0
- package/dist/curves/artemis2.d.cts +9 -0
- package/dist/curves/artemis2.d.ts +9 -0
- package/dist/curves/artemis2.js +24 -0
- package/dist/curves/artemis2.js.map +1 -0
- package/dist/curves/astroid.cjs +22 -0
- package/dist/curves/astroid.cjs.map +1 -0
- package/dist/curves/astroid.d.cts +9 -0
- package/dist/curves/astroid.d.ts +9 -0
- package/dist/curves/astroid.js +20 -0
- package/dist/curves/astroid.js.map +1 -0
- package/dist/curves/deltoid.cjs +20 -0
- package/dist/curves/deltoid.cjs.map +1 -0
- package/dist/curves/deltoid.d.cts +9 -0
- package/dist/curves/deltoid.d.ts +9 -0
- package/dist/curves/deltoid.js +18 -0
- package/dist/curves/deltoid.js.map +1 -0
- package/dist/curves/epicycloid3.cjs +20 -0
- package/dist/curves/epicycloid3.cjs.map +1 -0
- package/dist/curves/epicycloid3.d.cts +9 -0
- package/dist/curves/epicycloid3.d.ts +9 -0
- package/dist/curves/epicycloid3.js +18 -0
- package/dist/curves/epicycloid3.js.map +1 -0
- package/dist/curves/epitrochoid7.cjs +29 -0
- package/dist/curves/epitrochoid7.cjs.map +1 -0
- package/dist/curves/epitrochoid7.d.cts +9 -0
- package/dist/curves/epitrochoid7.d.ts +9 -0
- package/dist/curves/epitrochoid7.js +27 -0
- package/dist/curves/epitrochoid7.js.map +1 -0
- package/dist/curves/index.cjs +206 -0
- package/dist/curves/index.cjs.map +1 -0
- package/dist/curves/index.d.cts +19 -0
- package/dist/curves/index.d.ts +19 -0
- package/dist/curves/index.js +206 -0
- package/dist/curves/index.js.map +1 -0
- package/dist/curves/lame.cjs +24 -0
- package/dist/curves/lame.cjs.map +1 -0
- package/dist/curves/lame.d.cts +9 -0
- package/dist/curves/lame.d.ts +9 -0
- package/dist/curves/lame.js +22 -0
- package/dist/curves/lame.js.map +1 -0
- package/dist/curves/lissajous32.cjs +22 -0
- package/dist/curves/lissajous32.cjs.map +1 -0
- package/dist/curves/lissajous32.d.cts +9 -0
- package/dist/curves/lissajous32.d.ts +9 -0
- package/dist/curves/lissajous32.js +20 -0
- package/dist/curves/lissajous32.js.map +1 -0
- package/dist/curves/lissajous43.cjs +22 -0
- package/dist/curves/lissajous43.cjs.map +1 -0
- package/dist/curves/lissajous43.d.cts +9 -0
- package/dist/curves/lissajous43.d.ts +9 -0
- package/dist/curves/lissajous43.js +20 -0
- package/dist/curves/lissajous43.js.map +1 -0
- package/dist/curves/rose3.cjs +21 -0
- package/dist/curves/rose3.cjs.map +1 -0
- package/dist/curves/rose3.d.cts +9 -0
- package/dist/curves/rose3.d.ts +9 -0
- package/dist/curves/rose3.js +19 -0
- package/dist/curves/rose3.js.map +1 -0
- package/dist/curves/rose5.cjs +21 -0
- package/dist/curves/rose5.cjs.map +1 -0
- package/dist/curves/rose5.d.cts +9 -0
- package/dist/curves/rose5.d.ts +9 -0
- package/dist/curves/rose5.js +19 -0
- package/dist/curves/rose5.js.map +1 -0
- package/dist/index.cjs +214 -106
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +105 -0
- package/dist/index.d.ts +105 -0
- package/dist/index.js +222 -107
- package/dist/index.js.map +1 -1
- package/dist/types-DX8VfIVK.d.cts +226 -0
- package/dist/types-DX8VfIVK.d.ts +226 -0
- package/package.json +11 -1
package/dist/index.js
CHANGED
|
@@ -199,6 +199,47 @@ var TRAIL_FADE_CURVE = 1.5;
|
|
|
199
199
|
var TRAIL_MAX_OPACITY = 0.88;
|
|
200
200
|
var TRAIL_MIN_WIDTH = 0.5;
|
|
201
201
|
var TRAIL_MAX_WIDTH = 2.5;
|
|
202
|
+
var GRADIENT = {
|
|
203
|
+
bard: ["#a855f7", "#3b82f6", "#14b8a6", "#ec4899"],
|
|
204
|
+
sunset: ["#f97316", "#dc2626", "#9333ea", "#f472b6"],
|
|
205
|
+
ocean: ["#1e3a8a", "#06b6d4", "#22d3ee", "#e0f2fe"],
|
|
206
|
+
ice: ["#1e3a8a", "#67e8f9"],
|
|
207
|
+
fire: ["#7f1d1d", "#fbbf24"],
|
|
208
|
+
forest: ["#14532d", "#86efac"],
|
|
209
|
+
};
|
|
210
|
+
var PRESETS = {
|
|
211
|
+
bard: GRADIENT.bard,
|
|
212
|
+
sunset: GRADIENT.sunset,
|
|
213
|
+
ocean: GRADIENT.ocean,
|
|
214
|
+
ice: GRADIENT.ice,
|
|
215
|
+
fire: GRADIENT.fire,
|
|
216
|
+
forest: GRADIENT.forest,
|
|
217
|
+
};
|
|
218
|
+
function hexToRgb(hex) {
|
|
219
|
+
const n = parseInt(hex.slice(1), 16);
|
|
220
|
+
return { r: n >> 16, g: (n >> 8) & 255, b: n & 255 };
|
|
221
|
+
}
|
|
222
|
+
var lerpRgb = (a, b, t) => ({
|
|
223
|
+
r: Math.round(a.r + (b.r - a.r) * t),
|
|
224
|
+
g: Math.round(a.g + (b.g - a.g) * t),
|
|
225
|
+
b: Math.round(a.b + (b.b - a.b) * t),
|
|
226
|
+
});
|
|
227
|
+
function getPaletteColor(palette, position, timeOffset = 0) {
|
|
228
|
+
if (palette.length === 0) return { r: 255, g: 255, b: 255 };
|
|
229
|
+
if (palette.length === 1) return hexToRgb(palette[0]);
|
|
230
|
+
const cyclePos = (position + timeOffset) % 1;
|
|
231
|
+
const scaled = cyclePos * palette.length;
|
|
232
|
+
const idx = Math.floor(scaled);
|
|
233
|
+
const t = scaled - idx;
|
|
234
|
+
const c1 = hexToRgb(palette[idx % palette.length]);
|
|
235
|
+
const c2 = hexToRgb(palette[(idx + 1) % palette.length]);
|
|
236
|
+
return lerpRgb(c1, c2, t);
|
|
237
|
+
}
|
|
238
|
+
function resolvePalette(palette, trailStyle) {
|
|
239
|
+
if (Array.isArray(palette)) return palette;
|
|
240
|
+
if (palette && palette in PRESETS) return PRESETS[palette];
|
|
241
|
+
return trailStyle === "gradient-animated" ? GRADIENT.bard : GRADIENT.ice;
|
|
242
|
+
}
|
|
202
243
|
function hexToRgbComponents(hex) {
|
|
203
244
|
const n = parseInt(hex.slice(1), 16);
|
|
204
245
|
return `${n >> 16},${(n >> 8) & 255},${n & 255}`;
|
|
@@ -248,6 +289,8 @@ function createRenderer(options) {
|
|
|
248
289
|
headColor: options.headColor ?? "#ffffff",
|
|
249
290
|
headRadius: options.headRadius ?? DEFAULT_HEAD_RADIUS,
|
|
250
291
|
};
|
|
292
|
+
const trailStyle = options.trailStyle ?? "default";
|
|
293
|
+
const palette = resolvePalette(options.palette, trailStyle);
|
|
251
294
|
const trailRgb = hexToRgbComponents(opts.trailColor);
|
|
252
295
|
const dpr = typeof window !== "undefined" ? window.devicePixelRatio || 1 : 1;
|
|
253
296
|
function setupCanvas() {
|
|
@@ -273,6 +316,7 @@ function createRenderer(options) {
|
|
|
273
316
|
let morphResolve = null;
|
|
274
317
|
let morphDurationMs = DEFAULT_MORPH_DURATION_MS;
|
|
275
318
|
let morphAlpha = 0;
|
|
319
|
+
let gradientAnimTime = 0;
|
|
276
320
|
function computeBoundaries(pts) {
|
|
277
321
|
if (pts.length === 0) return null;
|
|
278
322
|
const first = pts[0];
|
|
@@ -384,7 +428,13 @@ function createRenderer(options) {
|
|
|
384
428
|
const l1y = next.y * scale + offsetY + n1.y * halfW1;
|
|
385
429
|
const r1x = next.x * scale + offsetX - n1.x * halfW1;
|
|
386
430
|
const r1y = next.y * scale + offsetY - n1.y * halfW1;
|
|
387
|
-
|
|
431
|
+
if (trailStyle === "default") {
|
|
432
|
+
ctx.fillStyle = `rgba(${trailRgb},${alpha})`;
|
|
433
|
+
} else {
|
|
434
|
+
const timeOffset = trailStyle === "gradient-animated" ? gradientAnimTime * 5e-4 : 0;
|
|
435
|
+
const color = getPaletteColor(palette, progress, timeOffset);
|
|
436
|
+
ctx.fillStyle = `rgba(${color.r},${color.g},${color.b},${alpha})`;
|
|
437
|
+
}
|
|
388
438
|
ctx.beginPath();
|
|
389
439
|
ctx.moveTo(l0x, l0y);
|
|
390
440
|
ctx.lineTo(l1x, l1y);
|
|
@@ -409,6 +459,9 @@ function createRenderer(options) {
|
|
|
409
459
|
const now = performance.now();
|
|
410
460
|
const deltaTime = Math.min((now - lastTime) / 1e3, 1 / 30);
|
|
411
461
|
lastTime = now;
|
|
462
|
+
if (trailStyle === "gradient-animated") {
|
|
463
|
+
gradientAnimTime += deltaTime * 1e3;
|
|
464
|
+
}
|
|
412
465
|
if (engine.morphAlpha !== null) {
|
|
413
466
|
morphAlpha = Math.min(1, morphAlpha + deltaTime / (morphDurationMs / 1e3));
|
|
414
467
|
engine.setMorphAlpha(morphAlpha);
|
|
@@ -597,19 +650,25 @@ function createSVGRenderer(options) {
|
|
|
597
650
|
offsetY = (height - h * scale) / 2 - minY * scale;
|
|
598
651
|
}
|
|
599
652
|
function px(p) {
|
|
600
|
-
return
|
|
653
|
+
return p.x * scale + offsetX;
|
|
601
654
|
}
|
|
602
655
|
function py(p) {
|
|
603
|
-
return
|
|
656
|
+
return p.y * scale + offsetY;
|
|
657
|
+
}
|
|
658
|
+
function pxStr(p) {
|
|
659
|
+
return px(p).toFixed(2);
|
|
660
|
+
}
|
|
661
|
+
function pyStr(p) {
|
|
662
|
+
return py(p).toFixed(2);
|
|
604
663
|
}
|
|
605
664
|
function updateSkeleton(skeleton2) {
|
|
606
665
|
if (skeleton2.length < 2) {
|
|
607
666
|
skeletonPath.setAttribute("d", "");
|
|
608
667
|
return;
|
|
609
668
|
}
|
|
610
|
-
let d = `M${
|
|
669
|
+
let d = `M${pxStr(skeleton2[0])} ${pyStr(skeleton2[0])}`;
|
|
611
670
|
for (let i = 1; i < skeleton2.length; i++) {
|
|
612
|
-
d += ` L${
|
|
671
|
+
d += ` L${pxStr(skeleton2[i])} ${pyStr(skeleton2[i])}`;
|
|
613
672
|
}
|
|
614
673
|
d += " Z";
|
|
615
674
|
skeletonPath.setAttribute("d", d);
|
|
@@ -661,8 +720,8 @@ function createSVGRenderer(options) {
|
|
|
661
720
|
const head = trail[trailCount - 1];
|
|
662
721
|
const x = px(head);
|
|
663
722
|
const y = py(head);
|
|
664
|
-
headCircle.setAttribute("cx", x);
|
|
665
|
-
headCircle.setAttribute("cy", y);
|
|
723
|
+
headCircle.setAttribute("cx", String(x));
|
|
724
|
+
headCircle.setAttribute("cy", String(y));
|
|
666
725
|
}
|
|
667
726
|
let animationId = null;
|
|
668
727
|
let lastTime = 0;
|
|
@@ -815,9 +874,9 @@ function createSarmalSVG(container, curveDef, options) {
|
|
|
815
874
|
return createSVGRenderer({ container, engine, ...rendererOpts });
|
|
816
875
|
}
|
|
817
876
|
|
|
818
|
-
// src/curves.ts
|
|
877
|
+
// src/curves/artemis2.ts
|
|
819
878
|
var TWO_PI2 = Math.PI * 2;
|
|
820
|
-
function
|
|
879
|
+
function artemis2Fn(t, _time, _params) {
|
|
821
880
|
const a = 0.35,
|
|
822
881
|
b = 0.15,
|
|
823
882
|
ox = 0.175;
|
|
@@ -829,21 +888,16 @@ function artemis2(t, _time, _params) {
|
|
|
829
888
|
y: (s * c * (1 + b * c)) / denom,
|
|
830
889
|
};
|
|
831
890
|
}
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
x: 7 * Math.cos(t) - d * Math.cos(7 * t),
|
|
843
|
-
y: 7 * Math.sin(t) - d * Math.sin(7 * t),
|
|
844
|
-
};
|
|
845
|
-
}
|
|
846
|
-
function astroid(t, _time, _params) {
|
|
891
|
+
var artemis2 = {
|
|
892
|
+
name: "Artemis II",
|
|
893
|
+
fn: artemis2Fn,
|
|
894
|
+
period: TWO_PI2,
|
|
895
|
+
speed: 0.7,
|
|
896
|
+
};
|
|
897
|
+
|
|
898
|
+
// src/curves/astroid.ts
|
|
899
|
+
var TWO_PI3 = Math.PI * 2;
|
|
900
|
+
function astroidFn(t, _time, _params) {
|
|
847
901
|
const c = Math.cos(t);
|
|
848
902
|
const s = Math.sin(t);
|
|
849
903
|
return {
|
|
@@ -851,47 +905,104 @@ function astroid(t, _time, _params) {
|
|
|
851
905
|
y: s * s * s,
|
|
852
906
|
};
|
|
853
907
|
}
|
|
854
|
-
|
|
908
|
+
var astroid = {
|
|
909
|
+
name: "Astroid",
|
|
910
|
+
fn: astroidFn,
|
|
911
|
+
period: TWO_PI3,
|
|
912
|
+
speed: 1.1,
|
|
913
|
+
};
|
|
914
|
+
|
|
915
|
+
// src/curves/deltoid.ts
|
|
916
|
+
var TWO_PI4 = Math.PI * 2;
|
|
917
|
+
function deltoidFn(t, _time, _params) {
|
|
855
918
|
return {
|
|
856
919
|
x: 2 * Math.cos(t) + Math.cos(2 * t),
|
|
857
920
|
y: 2 * Math.sin(t) - Math.sin(2 * t),
|
|
858
921
|
};
|
|
859
922
|
}
|
|
860
|
-
|
|
861
|
-
|
|
923
|
+
var deltoid = {
|
|
924
|
+
name: "Deltoid",
|
|
925
|
+
fn: deltoidFn,
|
|
926
|
+
period: TWO_PI4,
|
|
927
|
+
speed: 0.9,
|
|
928
|
+
};
|
|
929
|
+
|
|
930
|
+
// src/curves/epicycloid3.ts
|
|
931
|
+
var TWO_PI5 = Math.PI * 2;
|
|
932
|
+
function epicycloid3Fn(t, _time, _params) {
|
|
862
933
|
return {
|
|
863
|
-
x:
|
|
864
|
-
y:
|
|
934
|
+
x: 4 * Math.cos(t) - Math.cos(4 * t),
|
|
935
|
+
y: 4 * Math.sin(t) - Math.sin(4 * t),
|
|
865
936
|
};
|
|
866
937
|
}
|
|
867
|
-
|
|
868
|
-
|
|
938
|
+
var epicycloid3 = {
|
|
939
|
+
name: "Epicycloid (n=3)",
|
|
940
|
+
fn: epicycloid3Fn,
|
|
941
|
+
period: TWO_PI5,
|
|
942
|
+
speed: 0.75,
|
|
943
|
+
};
|
|
944
|
+
|
|
945
|
+
// src/curves/epitrochoid7.ts
|
|
946
|
+
var TWO_PI6 = Math.PI * 2;
|
|
947
|
+
function epitrochoid7Fn(t, _time, _params) {
|
|
948
|
+
const d = 1 + 0.55 * Math.sin(t * 0.5);
|
|
869
949
|
return {
|
|
870
|
-
x:
|
|
871
|
-
y:
|
|
950
|
+
x: 7 * Math.cos(t) - d * Math.cos(7 * t),
|
|
951
|
+
y: 7 * Math.sin(t) - d * Math.sin(7 * t),
|
|
952
|
+
};
|
|
953
|
+
}
|
|
954
|
+
function epitrochoid7SkeletonFn(t) {
|
|
955
|
+
const d = 1.275;
|
|
956
|
+
return {
|
|
957
|
+
x: 7 * Math.cos(t) - d * Math.cos(7 * t),
|
|
958
|
+
y: 7 * Math.sin(t) - d * Math.sin(7 * t),
|
|
872
959
|
};
|
|
873
960
|
}
|
|
874
|
-
|
|
961
|
+
var epitrochoid7 = {
|
|
962
|
+
name: "Epitrochoid",
|
|
963
|
+
fn: epitrochoid7Fn,
|
|
964
|
+
period: TWO_PI6,
|
|
965
|
+
speed: 1.4,
|
|
966
|
+
skeletonFn: epitrochoid7SkeletonFn,
|
|
967
|
+
};
|
|
968
|
+
|
|
969
|
+
// src/curves/lissajous32.ts
|
|
970
|
+
var TWO_PI7 = Math.PI * 2;
|
|
971
|
+
function lissajous32Fn(t, time, _params) {
|
|
875
972
|
const phi = time * 0.45;
|
|
876
973
|
return {
|
|
877
974
|
x: Math.sin(3 * t + phi),
|
|
878
975
|
y: Math.sin(2 * t),
|
|
879
976
|
};
|
|
880
977
|
}
|
|
881
|
-
|
|
978
|
+
var lissajous32 = {
|
|
979
|
+
name: "Lissajous 3:2",
|
|
980
|
+
fn: lissajous32Fn,
|
|
981
|
+
period: TWO_PI7,
|
|
982
|
+
speed: 2,
|
|
983
|
+
skeleton: "live",
|
|
984
|
+
};
|
|
985
|
+
|
|
986
|
+
// src/curves/lissajous43.ts
|
|
987
|
+
var TWO_PI8 = Math.PI * 2;
|
|
988
|
+
function lissajous43Fn(t, time, _params) {
|
|
882
989
|
const phi = time * 0.38;
|
|
883
990
|
return {
|
|
884
991
|
x: Math.sin(4 * t + phi),
|
|
885
992
|
y: Math.sin(3 * t),
|
|
886
993
|
};
|
|
887
994
|
}
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
995
|
+
var lissajous43 = {
|
|
996
|
+
name: "Lissajous 4:3",
|
|
997
|
+
fn: lissajous43Fn,
|
|
998
|
+
period: TWO_PI8,
|
|
999
|
+
speed: 1.8,
|
|
1000
|
+
skeleton: "live",
|
|
1001
|
+
};
|
|
1002
|
+
|
|
1003
|
+
// src/curves/lame.ts
|
|
1004
|
+
var TWO_PI9 = Math.PI * 2;
|
|
1005
|
+
function lameFn(t, time, _params) {
|
|
895
1006
|
const p = 1.75 + 1.25 * Math.sin(time * 0.48);
|
|
896
1007
|
const c = Math.cos(t),
|
|
897
1008
|
s = Math.sin(t);
|
|
@@ -900,71 +1011,58 @@ function lame(t, time, _params) {
|
|
|
900
1011
|
y: Math.sign(s) * Math.pow(Math.abs(s), p),
|
|
901
1012
|
};
|
|
902
1013
|
}
|
|
1014
|
+
var lame = {
|
|
1015
|
+
name: "Lam\xE9 Curve",
|
|
1016
|
+
fn: lameFn,
|
|
1017
|
+
period: TWO_PI9,
|
|
1018
|
+
speed: 1,
|
|
1019
|
+
skeleton: "live",
|
|
1020
|
+
};
|
|
1021
|
+
|
|
1022
|
+
// src/curves/rose3.ts
|
|
1023
|
+
var TWO_PI10 = Math.PI * 2;
|
|
1024
|
+
function rose3Fn(t, _time, _params) {
|
|
1025
|
+
const r = Math.cos(3 * t);
|
|
1026
|
+
return {
|
|
1027
|
+
x: r * Math.cos(t),
|
|
1028
|
+
y: r * Math.sin(t),
|
|
1029
|
+
};
|
|
1030
|
+
}
|
|
1031
|
+
var rose3 = {
|
|
1032
|
+
name: "Rose (n=3)",
|
|
1033
|
+
fn: rose3Fn,
|
|
1034
|
+
period: TWO_PI10,
|
|
1035
|
+
speed: 1.15,
|
|
1036
|
+
};
|
|
1037
|
+
|
|
1038
|
+
// src/curves/rose5.ts
|
|
1039
|
+
var TWO_PI11 = Math.PI * 2;
|
|
1040
|
+
function rose5Fn(t, _time, _params) {
|
|
1041
|
+
const r = Math.cos(5 * t);
|
|
1042
|
+
return {
|
|
1043
|
+
x: r * Math.cos(t),
|
|
1044
|
+
y: r * Math.sin(t),
|
|
1045
|
+
};
|
|
1046
|
+
}
|
|
1047
|
+
var rose5 = {
|
|
1048
|
+
name: "Rose (n=5)",
|
|
1049
|
+
fn: rose5Fn,
|
|
1050
|
+
period: TWO_PI11,
|
|
1051
|
+
speed: 1,
|
|
1052
|
+
};
|
|
1053
|
+
|
|
1054
|
+
// src/curves/index.ts
|
|
903
1055
|
var curves = {
|
|
904
|
-
artemis2
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
speed: 1.4,
|
|
915
|
-
skeletonFn: epitrochoid7Skeleton,
|
|
916
|
-
},
|
|
917
|
-
astroid: {
|
|
918
|
-
name: "Astroid",
|
|
919
|
-
fn: astroid,
|
|
920
|
-
period: TWO_PI2,
|
|
921
|
-
speed: 1.1,
|
|
922
|
-
},
|
|
923
|
-
deltoid: {
|
|
924
|
-
name: "Deltoid",
|
|
925
|
-
fn: deltoid,
|
|
926
|
-
period: TWO_PI2,
|
|
927
|
-
speed: 0.9,
|
|
928
|
-
},
|
|
929
|
-
rose5: {
|
|
930
|
-
name: "Rose (n=5)",
|
|
931
|
-
fn: rose5,
|
|
932
|
-
period: TWO_PI2,
|
|
933
|
-
speed: 1,
|
|
934
|
-
},
|
|
935
|
-
rose3: {
|
|
936
|
-
name: "Rose (n=3)",
|
|
937
|
-
fn: rose3,
|
|
938
|
-
period: TWO_PI2,
|
|
939
|
-
speed: 1.15,
|
|
940
|
-
},
|
|
941
|
-
lissajous32: {
|
|
942
|
-
name: "Lissajous 3:2",
|
|
943
|
-
fn: lissajous32,
|
|
944
|
-
period: TWO_PI2,
|
|
945
|
-
speed: 2,
|
|
946
|
-
skeleton: "live",
|
|
947
|
-
},
|
|
948
|
-
lissajous43: {
|
|
949
|
-
name: "Lissajous 4:3",
|
|
950
|
-
fn: lissajous43,
|
|
951
|
-
period: TWO_PI2,
|
|
952
|
-
speed: 1.8,
|
|
953
|
-
skeleton: "live",
|
|
954
|
-
},
|
|
955
|
-
epicycloid3: {
|
|
956
|
-
name: "Epicycloid (n=3)",
|
|
957
|
-
fn: epicycloid3,
|
|
958
|
-
period: TWO_PI2,
|
|
959
|
-
speed: 0.75,
|
|
960
|
-
},
|
|
961
|
-
lame: {
|
|
962
|
-
name: "Lam\xE9 Curve",
|
|
963
|
-
fn: lame,
|
|
964
|
-
period: TWO_PI2,
|
|
965
|
-
speed: 1,
|
|
966
|
-
skeleton: "live",
|
|
967
|
-
},
|
|
1056
|
+
artemis2,
|
|
1057
|
+
epitrochoid7,
|
|
1058
|
+
astroid,
|
|
1059
|
+
deltoid,
|
|
1060
|
+
rose5,
|
|
1061
|
+
rose3,
|
|
1062
|
+
lissajous32,
|
|
1063
|
+
lissajous43,
|
|
1064
|
+
epicycloid3,
|
|
1065
|
+
lame,
|
|
968
1066
|
};
|
|
969
1067
|
|
|
970
1068
|
// src/index.ts
|
|
@@ -974,6 +1072,23 @@ function createSarmal(canvas, curveDef, options) {
|
|
|
974
1072
|
return createRenderer({ canvas, engine, ...rendererOpts });
|
|
975
1073
|
}
|
|
976
1074
|
|
|
977
|
-
export {
|
|
1075
|
+
export {
|
|
1076
|
+
artemis2,
|
|
1077
|
+
astroid,
|
|
1078
|
+
createEngine,
|
|
1079
|
+
createRenderer,
|
|
1080
|
+
createSVGRenderer,
|
|
1081
|
+
createSarmal,
|
|
1082
|
+
createSarmalSVG,
|
|
1083
|
+
curves,
|
|
1084
|
+
deltoid,
|
|
1085
|
+
epicycloid3,
|
|
1086
|
+
epitrochoid7,
|
|
1087
|
+
lame,
|
|
1088
|
+
lissajous32,
|
|
1089
|
+
lissajous43,
|
|
1090
|
+
rose3,
|
|
1091
|
+
rose5,
|
|
1092
|
+
};
|
|
978
1093
|
//# sourceMappingURL=index.js.map
|
|
979
1094
|
//# sourceMappingURL=index.js.map
|