在 C++ 中从正弦波创建三角波

Moo*_*293 1 c++ geometry trigonometry wave

我很难找出如何从正弦波形成三角形(不是锯齿)波。

我了解如何为方波创建它:

if( sineValue >= 0 )
        value = amp;
    else
        value = -amp;
Run Code Online (Sandbox Code Playgroud)

但我不确定如何改变它以适应三角波。

com*_*ble 6

我错过了这个问题,这是一个非常酷的数学技巧:

asin(cos(x))/1.5708 <-- 单击此处查看图表

与正弦相同:

   Acos(Sin(x))/1.5708 // is a square version of sin(x)
Run Code Online (Sandbox Code Playgroud)

devider 的精确值是那个孩子的东西,1.5708....

  • 精确值是“M_PI_2”。 (2认同)

Oli*_*rth 5

三角波是方波的积分。因此,您需要随时间对方波进行积分(求和):

if (sineValue >= 0)
{
    value += delta;
}
else
{
    value -= delta;
}
Run Code Online (Sandbox Code Playgroud)

请注意,这可以更简洁地写为:

value += (sineValue >= 0) ? delta : -delta;
Run Code Online (Sandbox Code Playgroud)

  • 在这种情况下,为什么还要打扰正弦波数据?从头开始构建三角波更容易。但这只是强调@Tomalak Geret'kal 向 OP 提出的问题...... (3认同)