Найти начальную точку (время) каждого цикла в синусоиде

Я пытаюсь достичь синусоиды, постепенно меняющейся от8Hz в2Hz над5 секунды:

Эта форма волны была создана вCool Edit, Я дал ему стартовую частоту8Hzконечная частота2Hz и продолжительность5 секунд. Синусоидальная волна постепенно изменяется от одной частоты к другой в течение заданного времени.

У меня вопрос, как я могу точно найти время начала каждого цикла (выделено красной точкой), используя цикл FOR?

Псевдокод:

time   = 5 //Duration
freq1  = 8 //Start frequency
freq2  = 2 //End frequency

cycles = ( (freq1 + freq2) / 2 ) * time //Total number of cycles

for(i = 0; i < cycles; i++) {
    /* Formula to find start time of each cycle */
}

Ответы на вопрос(1)

Ваш ответ на вопрос