1

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

4

1 回答 1

0

是的,这是可能的,但它有点复杂。您必须在给定的 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)。

于 2017-11-08T22:18:27.007 回答