gpt4 book ai didi

c++ - 在三次贝塞尔曲线上找到给定 X 的 Y?

转载 作者:IT老高 更新时间:2023-10-28 23:19:55 28 4
gpt4 key购买 nike

我需要一种方法,在给定 x 坐标的情况下,我可以在三次贝塞尔曲线上找到 Y 坐标。

我遇到很多地方告诉我将其视为三次函数,然后尝试找到根,我理解。然而,三次贝塞尔曲线的方程是(对于 x 坐标):

X(t) = (1-t)^3 * X0 + 3*(1-t)^2 * t * X1 + 3*(1-t) * t^2 * X2 + t ^3 * X3

让我感到困惑的是 (1-t) 值的添加。例如,如果我用一些随机数填充 X 值:

400 = (1-t)^3 * 100 + 3*(1-t)^2 * t * 600 + 3*(1-t) * t^2 * 800 + t^3 * 800

然后重新排列:

800t^3 + 3*(1-t)*800t^2 + 3*(1-t)^2*600t + (1-t)^3*100 -400 = 0

我仍然不知道 (1-t) 系数的值。当 (1-t) 仍然未知时,我应该如何解方程?

最佳答案

三次贝塞尔曲线有三种常用的表达方式。

第一个 x 作为 t 的函数

x(t) = sum( f_i(t) x_i )
= (1-t)^3 * x0 + 3*(1-t)^2 * t * x1 + 3*(1-t) * t^2 * x2 + t^3 * x3

其次,y 是 x 的函数

y(x) = sum( f_i(x) a_i )
= (1-x)^3 * y0 + 3*(1-x)^2 * x * y1 + 3*(1-x) * x^2 * y2 + x^3 * y3

前两个在数学上是相同的,只是对变量使用了不同的名称。

根据您的描述“在三次贝塞尔曲线上找到 Y 坐标,并在其上给出 x 坐标。”我猜你有一个使用第二个方程的问题正在尝试重新排列第一个方程来帮助你解决它,而你应该使用第二个方程。如果是这种情况,则无需重新排列或求解 - 只需插入 x 值即可获得解决方案。

你可能有第三种情况的方程,这是丑陋和困难的情况。这是 x 和 y 参数都是第三个变量 t 的三次贝塞尔曲线。

x(t) = sum( f_i(t) x_i )
y(t) = sum( f_i(t) y_i )

如果这是你的情况。告诉我,我可以详细说明您需要做些什么来解决它。

关于c++ - 在三次贝塞尔曲线上找到给定 X 的 Y?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11302937/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com