Encontre o ponto inicial (tempo) de cada ciclo em uma onda senoidal

Estou tentando alcançar onda senoidal gradualmente mudando de8Hz para2Hz sobre5 segundos:

Essa forma de onda foi produzida emEdição legal. Eu dei uma frequência inicial de8Hz, uma frequência final de2Hz e uma duração de5 segundos. A onda senoidal muda gradualmente de uma frequência para outra ao longo do tempo determinado.

Minha pergunta é: como posso encontrar com precisão o horário de início de cada ciclo (destacado com um ponto vermelho) usando um loop FOR?

Pseudo-código:

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 */
}

questionAnswers(1)

yourAnswerToTheQuestion