Moo*_*293 1 c++ geometry trigonometry wave
我很难找出如何从正弦波形成三角形(不是锯齿)波。
我了解如何为方波创建它:
if( sineValue >= 0 )
value = amp;
else
value = -amp;
Run Code Online (Sandbox Code Playgroud)
但我不确定如何改变它以适应三角波。
我错过了这个问题,这是一个非常酷的数学技巧:
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....
三角波是方波的积分。因此,您需要随时间对方波进行积分(求和):
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)