- function createExponentialSteps(millis, numSteps, base) {
- const steps = [];
- const exponentialFactor = Math.pow(base, 1 / numSteps);
- let sum = 0;
-
- for (let i = 0; i < numSteps - 1; i++) {
- const step = millis * Math.pow(exponentialFactor, i);
- steps.push(step);
- sum += step;
- }
-
- // Calculate the duration of the last step to ensure the total sum is equal to milliseconds
- const lastStep = millis - sum;
- steps.push(lastStep);
-
- return steps;
- }
-
- // Usage example
- const milliseconds = 5000;
- const numSteps = 5;
- const base = 0.5;
- const exponentialSteps = createExponentialSteps(milliseconds, numSteps, base);
- console.log(exponentialSteps);
-
- // output
- [
- 2664.84375,
- 1776.5625,
- 1184.375,
- 789.5833333333333,
- 525.4166666666667
- ]