C# 波形表达式平滑/线性控制

C# 波形表达式平滑/线性控制,c#,math,expression,curve,maxscript,C#,Math,Expression,Curve,Maxscript,我如何创建一个函数来控制波的圆度,以便在圆波>线性波>反向圆波之间转换 我已经做了一个函数来创建一个反弹波,但是我觉得可能有一个更有效的方法来编写这个函数。您可以在下图中看到,如果我将平滑度值传递给函数-1,它将被反转,0将是线性的,1.0将创建圆波。这些值之间的任何值都只是它们之间的转换 您将在下面的函数中看到,我将向函数传递以下属性。。。 waveWidth:控制单个波的宽度 minVal:波在Y轴上的起始位置 maxVal:控制波浪的总高度,减去最小值 numSamples:沿曲线绘制的

我如何创建一个函数来控制波的圆度,以便在圆波>线性波>反向圆波之间转换

我已经做了一个函数来创建一个反弹波,但是我觉得可能有一个更有效的方法来编写这个函数。您可以在下图中看到,如果我将平滑度值传递给函数-1,它将被反转,0将是线性的,1.0将创建圆波。这些值之间的任何值都只是它们之间的转换

您将在下面的函数中看到,我将向函数传递以下属性。。。 waveWidth:控制单个波的宽度 minVal:波在Y轴上的起始位置 maxVal:控制波浪的总高度,减去最小值 numSamples:沿曲线绘制的点数 平滑度:“尚未实现”,但将控制上述内容

fn BuildBounceArc waveWidth:10 minVal:0 maxVal:10 numSamples:20 smoothness:1.0 =
(
    for i = 0 to numSamples do
    (
        ang = i * 180.0 / numSamples
        posZ = abs(sin(ang)) * (maxVal - minVal) + minVal
        posX = 1.0 * i / numSamples * waveWidth

        -- The line below is for plotting the points visually
        --point pos:[posX, 0, posZ] size:.5 wirecolor:green name:("ang_" + ang as string)
    )
)

也许mathexchange适合您的问题图像中的曲线看起来像不同度量的圆(绿色:欧几里德,基数2;粉色:曼哈顿,基数1;黄色:可能基数1/2)。如果这是你想要的,只要查一下相应的公式,你就可以帮我算出黄色弧线的方程式。我可以算出剩下的。那可能是
y=(r^0.5-|x^0.5)^2
。你可以用
e=2^平滑度计算指数。也许mathexchange是一个适合你的问题的网。图像中的曲线在不同的度量中看起来像圆圈(绿色:欧几里德,基数2;粉色:曼哈顿,基数1;黄色:可能基数1/2)。如果这是你想要的,只要查一下相应的公式,你就可以帮我算出黄色弧线的方程式。我可以算出剩下的。那可能是
y=(r^0.5-|x^0.5)^2
。您可以使用
e=2^平滑度计算指数。