Я думаю, у вас есть проблемы с тем, как он выполняется
Your Example:
const array1 = [1, 2, 3, 4];
const reducer = (previous, current) => previous + current;
// 1 + 2 + 3 + 4
console.log(array1.reduce(reducer));
// expected output: 10
// 5 + 1 + 2 + 3 + 4
console.log(array1.reduce(reducer, 5));`enter code here`
// expected output: 15
Как вы говорите, почему он не уменьшается при первом применении .reduce.
поэтому, когда вы применяете .reduce, он не изменяет исходный массив, а возвращает вновь созданный массив. Таким образом, редуктор применяется к вновь созданному массиву, а не к исходному массиву (array1)
Таким образом, вы можете проверить вывод с помощью следующий код может очистить ваше сомнение:
const array1 = [1, 2, 3, 4];
const reducer = (accumulator, currentValue) =>
{
console.log("Data is"+accumulator +' '+ currentValue);
return accumulator + currentValue;
}
// 1 + 2 + 3 + 4
console.log(array1.reduce(reducer));
// expected output: 10
// 5 + 1 + 2 + 3 + 4
console.log(array1.reduce(reducer, 5));
// expected output: 15
где аккумулятор - это значение, которое он возвращает из функции редуктора. currentValue - текущее значение вашего массива.
Если вы используете C ++ / CLI, вот пример , в котором используется WPF четыре (то есть фурье;) отображение.
Он ссылается на этот сайт ] ( заархивировано ), в котором содержится значительная информация о том, о чем вы спрашиваете, вот схема с конкретной страницы;
Как мы разделяем звук на частоты? Наши уши делают это механические средства, математики делают это используя преобразования Фурье, и компьютеры делают это с помощью БПФ.
- Физика звука
- Гармонический осциллятор
- Выборка звуков
- Анализ Фурье
- Комплексные числа
- Цифровое преобразование Фурье
- БПФ
Аххх, я нашел это ( в архиве ) через несколько минут это нативный анализатор C ++. Включен код, который поможет вам начать работу.
С моей точки зрения ... проверить этот сайт: http://nehe.gamedev.net/
действительно хорошая информация и учебные пособия по использованию OpenGL
. Edit: http://www.opengl.org/code/
Для части анализа музыки вы должны изучить основу ряда Фурье, а затем выбрать бесплатную реализацию алгоритма DFFT (цифрового быстрого преобразования Фурье).
Вы пытаетесь написать свой собственный аудио / музыкальный проигрыватель? Возможно, вам следует попробовать написать плагин для существующего плеера, чтобы вы могли сосредоточиться на графике, а не на мелочах кодеков, dsp и устройств вывода звука.
Я знаю, что WinAMP и Foobar имеют API для плагинов визуализации. Я уверен, что Windows Media Player и iTunes также имеют их. Просто выберите медиаплеер и начните читать. Некоторые из них могут даже иметь существующие плагины OpenGL, с которых вы можете начать, чтобы вы могли сосредоточиться на чистом OpenGL.
Если вы только после некоторого базового 3D или ускоренного 2D, то я бы порекомендовал приобрести копию " Beginning OpenGL Game Programming [Dave Astle] ", которая охватывает основы OpenGL в C ++.
Вы можете найти реализацию алгоритмов БПФ и другая полезная информация в Числовые рецепты в книге C . Книга бесплатная AFAIK. Существует также книга Числовые рецепты в C ++ .
Мой подход к созданию BeatHarness ( http://www.beatharness.com ):
теперь у вас есть несколько хороших переменных для использования в вашей графике дисплей. Например, покажите картинку, на которой размер умножен на низкие частоты - это даст вам картинку, увеличивающую долю. Оттуда это ваше собственное воображение! :)