三次贝塞尔曲线 - 给定 X 得到 Y

发布于 2024-12-17 02:22:56 字数 445 浏览 2 评论 0原文

我有一条三次贝塞尔曲线,其中给出了第一个点和最后一个点(即 P0(0,0) 和 P3(1,1))。 另外两点定义如下:cubic-bezier(0.25, 0.1, 0.25, 1.0) (X1, Y1, X2, Y2,并且这些值不得分别小于或大于 0 或 1)
现在,假设只有一个,我需要做什么才能获取给定 X 的 Y 坐标? (我知道在某些情况下可能有多个值,但让我们把它们放在一边。我在这里不是做火箭科学,我只是希望能够每秒多次获得 Y 来进行转换)

我设法挖掘这个:给定 x 三次贝塞尔曲线的 y 坐标 ,但我不明白 xTarget 代表什么。
哦,这也不是任何家庭作业,我只是对互联网上没有关于三次贝塞尔曲线的可理解的东西感到有点恼火。

I have a cubic bezier curve where the first and last points are given (namely P0(0,0) and P3(1,1)).
The other two points are defined like this: cubic-bezier(0.25, 0.1, 0.25, 1.0) (X1, Y1, X2, Y2, also those values must not be smaller or larger than 0 or 1, respectively)
Now what would I have to do to get the Y coordinate for a given X, assuming there's only one? (I know that under certain circumstances there can be multiple values, but let's just put them aside. I'm not doing rocket science over here, I just want to be able to get Y multiple times per second to do transitions)

I managed to dig up this: y coordinate for a given x cubic bezier, but I don't understand what xTarget stands for.
Oh, also this is no homework whatsoever, I'm just a bit annoyed at the fact that there's no comprehensible stuff about cubic bezier curves on the internet.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

揽清风入怀 2024-12-24 02:22:56

如果你有

P0 = (X0,Y0)
P1 = (X1,Y1)
P2 = (X2,Y2)
P3 = (X3,Y3)

那么对于 [0,1] 中的任何 t 你会得到坐标给定的曲线上的一个点

X(t) = (1-t)^3 * X0 + 3*(1-t)^2 * t * X1 + 3*(1-t) * t^2 * X2 + t^3 * X3
Y(t) = (1-t)^3 * Y0 + 3*(1-t)^2 * t * Y1 + 3*(1-t) * t^2 * Y2 + t^3 * Y3

如果你给定一个 x > 值,那么您需要找到 [0,1] 中的哪些 t 值对应于曲线上的该点,然后使用这些 t值来查找 y 坐标。

在上面的 X(t) 方程中,将左侧设置为您的 x 值,并代入 X0X1 >、X2X3。这给你留下了一个带有变量t的三次多项式。您求解 t,然后将该 t 值代入 Y(t) 方程以获得 y协调。

求解三次多项式很棘手,但可以通过仔细使用其中一种方法来求解三次多项式来完成多项式。

If you have

P0 = (X0,Y0)
P1 = (X1,Y1)
P2 = (X2,Y2)
P3 = (X3,Y3)

Then for any t in [0,1] you get a point on the curve given by the coordinates

X(t) = (1-t)^3 * X0 + 3*(1-t)^2 * t * X1 + 3*(1-t) * t^2 * X2 + t^3 * X3
Y(t) = (1-t)^3 * Y0 + 3*(1-t)^2 * t * Y1 + 3*(1-t) * t^2 * Y2 + t^3 * Y3

If you are given an x value, then you need to find which t values in [0,1] correspond to that point on the curve, then use those t values to find the y coordinate.

In the X(t) equation above, set the left side to your x value and plug in X0, X1, X2, X3. This leaves you with a cubic polynomial with variable t. You solve this for t, then plug that t value into the Y(t) equation to get the y coordinate.

Solving the cubic polynomial is tricky but can be done by carefully using one of the methods to solve a cubic polynomial.

飞烟轻若梦 2024-12-24 02:22:56

示例三次贝塞尔曲线

P0 是曲线中 t=0 的第一个点
P3 是曲线中 t=1 的最后一个点
P1 和 P2 是您的控制点。

examples of Cubic bezier curve

P0 is your first point in the curve where t=0
P3 is your last point in the curve where t=1
P1 and P2 are your control points.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文