Я новичок в C ++, и я пытаюсь понять Класс SineWave из набора инструментов для синтеза. описание говорит:
This class computes and saves a static sine "table" that can be shared by multiple instances. It has an interface similar to the WaveLoop class but inherits from the Generator class. Output values are computed using linear interpolation.
Итак, я думаю, что это не вычисляет синус вообще? Если он использует линейную интерполяцию между верхней и нижней точками синусоидальной волны, разве это не треугольная волна? Может кто-нибудь объяснить, что делает расчет?
Если вы посмотрите на реализация, вы увидите, что конструктор рассчитывает sin
на полигоне 0.0
в 1.0
по шагам 1.0 / TABLE_SIZE
, где TABLE_SIZE
является 2048
по умолчанию. Затем выполняется линейная интерполяция между этими значениями. Это близко приближает функцию синуса.
Других решений пока нет …