让我先解释一下这个想法。实际的数学问题在屏幕截图下方。出于音乐目的,我正在构建一个凹槽算法,其中事件位置由数学函数 F(X) 转换。这些位置在凹槽范围内进行了归一化,所以我基本上处理的是零到一之间的值(这使得凹槽曲线更容易成型——唯一的限制是 x'>=0)。这种凹槽算法接受任何事件位置,并且还通过从数据结构(如时间线音符轨道)中过滤静态音符来工作。为了过滤一定范围内的事件(音频块大小),我需要逆凹槽功能来定位音轨中的音符并将它们转换到凹槽空间中。到目前为止,一切都很好。有用!
简而言之:我使用反函数是因为它镜像到 (y=x)。所以我可以插入一个值 x 并得到一个 y。这个 y 显然可以插入反函数以再次获得第一个 x。
问题:我现在希望能够将凹槽混合到另一个凹槽中,但是通常的线性(提示)混合代码的行为不像我预期的那样。为了更容易,我首先尝试混合到 y=x。
B(x)=alpha*F(x) + (1-alpha)*x;
iB(x)=alpha*iF(x) + (1-alpha)*x;
对于 alpha=1,我们得到完整的曲线。对于 alpha=0,我们得到直线。但是对于 0 到 1 之间的 alpha,B(x) 和 iB(x) 不再镜像(接近,但还不够),F(x) 和 iF(x) 仍然是镜像的。
有没有解决方案(除了将曲线量化为线段)?有什么我应该关注的主题吗?