【问题标题】:Is it possible to get the y value of a cubic bezier curve based on the x value?是否可以根据 x 值获得三次贝塞尔曲线的 y 值?
【发布时间】:2017-11-08 06:38:08
【问题描述】:

我正在使用贝塞尔曲线来表示音频的波形数据。然后我想在 x 坐标处对波进行采样并获取 y 坐标,以便我可以将其转换为 PCM 数据。现在,由于贝塞尔曲线是用参数方程表示的,这可能会带来问题,因为可能有多个 y 值和一个 x 值,但是对于我要采样的曲线,我可以保证它们满足函数的标准,只有它们仍然被表示为 para-度量上。所以我的问题是,有没有办法根据 x 值直接对 y 值进行采样?如果不是这样,最好的方法是什么?我现在最好的想法是沿着曲线移动,直到达到所需的 x 值,然后使用该 y 值,但这感觉缓慢且效率低下。谢谢。

【问题讨论】:

  • 不知道贝塞尔曲线方程的细节,我想你只需用 x 来求解 t 的 x 的参数方程,然后将该值代入 y 的方程.我更大的问题是为什么要使用贝塞尔曲线来模拟音频?您想要实现什么目标?您知道傅里叶变换和音频的频谱特性吗?

标签: audio bezier sampling pcm cubic-bezier


【解决方案1】:

是的,这是可能的,但它有点复杂。您必须在给定的 x 处求解 t,然后从 t 计算 y。这可以用 newton-raphson 方法来近似。这个链接更好地解释了如何实现它:http://greweb.me/2012/02/bezier-curve-based-easing-functions-from-concept-to-implementation/

另一种选择是使用显式贝塞尔曲线,而不是参数贝塞尔曲线。明确表示 y 是 x 的函数(即 y=f(x))。与 x 和 y 都是 t 的函数的参数方程相反(即 x=f(t) 和 y=f(t))。只要控制点的 x 值均匀分布,曲线就是显式的,您可以假设 x=t。

编辑:我应该指出,我对等距 x 坐标的说法意味着 x=t 过于简化。如果 x 坐标在 0 和 1 之间均匀分布,则为真。否则,您需要将 x 坐标转换为 0 和 1 之间的值。例如,如果 x 坐标均匀分布并位于 3、4、5 处, 6 然后 t = (x - 3) / (6 - 3)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-10
    • 2012-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    • 2012-01-19
    相关资源
    最近更新 更多