正弦波から三角形(のこぎり波ではない)の波を形成する方法を見つけるのに苦労しています。
方形波用に作成する方法を理解しています。
if( sineValue >= 0 )
value = amp;
else
value = -amp;
しかし、三角波に対応するためにこれを変更する方法がわかりません。
正弦波から三角形(のこぎり波ではない)の波を形成する方法を見つけるのに苦労しています。
方形波用に作成する方法を理解しています。
if( sineValue >= 0 )
value = amp;
else
value = -amp;
しかし、三角波に対応するためにこれを変更する方法がわかりません。
三角波は方形波の積分です。したがって、時間の経過とともに方形波を積分(合計)する必要があります。
if (sineValue >= 0)
{
value += delta;
}
else
{
value -= delta;
}
これは、より簡潔に次のように記述できることに注意してください。
value += (sineValue >= 0) ? delta : -delta;
私はこの質問を逃しました、ここに非常にクールな数学のトリックがあります:
asin(cos(x))/1.5708 <-グラフを表示するにはこれをクリックしてください
サインと同じ:
Acos(Sin(x))/1.5708 // is a square version of sin(x)
deviderの正確な値は、その子供、1.5708のようなものです。
正弦波の導関数の符号を使用して、次のような三角波を生成できます。
if (sineValue - oldSineValue >= 0)
{
value += delta;
}
else
{
value -= delta;
}
oldSineValue = sineValue;
三角波に必要な振幅を与えるためにデルタを選択する必要があります。これはもちろん、正弦波の周波数とサンプリングレートに依存します。
この方法の利点は、三角波と正弦波の位相が同じである、つまりピークとゼロ交差が一致することです。