-
Notifications
You must be signed in to change notification settings - Fork 0
/
1d.ts
118 lines (84 loc) · 3 KB
/
1d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
import { linStep, log, root } from "../helpers.js";
export const lin = (initial: number, length: number, points: number): number[] => {
const stepLength = linStep(length, points - 1);
let numbers: number[] = [];
for (let i = 0, n = initial; i < points; i++, n += stepLength) {
numbers.push(n);
}
return numbers;
};
export const scalable = (initial: number, factor: number, points: number): number[] => {
let numbers: number[] = [];
for (let i = 0, n = initial; i < points; i++, n *= factor) {
numbers.push(n);
}
return numbers;
};
export const exp = (initialBase: number, exp: number, points: number): number[] => {
let numbers: number[] = [];
for (let b = initialBase, i = 0; i < points; b = Math.pow(b, exp), i++) {
numbers.push(b);
}
return numbers;
};
export const expCyclic = (initialBase: number, exponent: number, points: number, cycles: number): number[] => {
const curve: number[] = exp(initialBase, exponent, points);
let cycle: number[] = [...curve, ...curve.slice(1, -1).reverse()];
let numbers: number[] = [];
for (let c = 0; c < cycles; c++) {
numbers.push(...cycle);
}
numbers.push(initialBase);
return numbers;
};
export const expSeq = (base: number, initialExp: number, points: number, expIncrement = 1): number[] => {
let numbers: number[] = [];
for (let exp = initialExp, i = 0; i < points; exp += expIncrement, i++) {
numbers.push(Math.pow(base, exp));
}
return numbers;
};
export const expSeqAdditive = (base: number, initialExp: number, points: number, expIncrement = 1): number[] => {
let numbers: number[] = [];
for (let exp = initialExp, sum = 0, i = 0; i < points; exp += expIncrement, i++) {
const num = Math.pow(base, exp);
sum += num;
numbers.push(sum);
}
return numbers;
};
export const expRoot = (x: number, exp: number): number[] => {
const base = root(x, exp);
return scalable(base, base, exp);
};
export const expLog = (x: number, base: number): number[] => {
const exp = log(x, base);
return scalable(base, base, exp);
};
export const alt = (a: number, b: number, cycles: number, valCount = 1): number[] => {
const iterations = cycles * 2;
let numbers: number[] = [];
for (let i = 0; i < iterations; i++) {
const val = i % 2 === 0 ? a : b;
for (let ii = 0; ii < valCount; ii++) {
numbers.push(val);
}
}
return numbers;
};
export const sin = (x: number, points: number, cycles: number): number[] => {
const steps = points - 1;
const angle = Math.PI / 2;
const angleStep = angle / steps;
let a = 0;
let numbers: number[] = [];
for (let c = 0; c < cycles; c++) {
for (let i = 0, aStep = angleStep; i < 2; i++, aStep *= -1) {
for (let ii = 0; ii < steps; ii++, a += aStep) {
numbers.push(x * Math.sin(a));
}
}
}
numbers.push(x * Math.sin(a));
return numbers;
};