具有正确抛物线的 OSpline 实现

OSpline implementation with correct parabolas

所以我的作业是创建一个可以将点转换为球体几何体并正确连接它们的opengl程序。 第一项任务是使用给定的控制点和 ospline 的实现来创建非洲的形状。 我还没有找到对 ospline 的任何引用,所以这里是:

OSpline是2条抛物线之间的插值,你给它4个点,它从3-3个点创建2条抛物线并线性插值中间2:

我为我的实现创建了一个desmos页面,所以你可以看到我是如何计算它的: https://www.desmos.com/calculator/2ftend6wbp

现在这对大多数部分都很有效,但显然我有一个问题:

左边是结果。正确的是它应该看起来的样子。 坐标不完全正确,但它应该给出右边那个的大致形状。

现在的问题是,当您在右上角的 3 个点上创建抛物线时,它会像预期的那样创建一个正常的 U 形抛物线,因为在此实现中 y 不能有 2 个值。

解决方法是这3个点也可以定义这样的抛物线:⊃ 对该抛物线进行插值会得到正确的结果。

但由于 y 在抛物线中有 2 个值,我将不得不以完全不同的方式计算它。 而且我还必须以某种方式检查我是否需要那个精确的抛物线。

我想知道是否有办法检查这个问题,或者我可以使用另一个坐标系来解决这个问题吗?

我今天完成了这部分任务,所以会尽力指导你,但我不会告诉你我的整个解决方案。

抛物线上 pont 的公式是 S(t) = A(t-t_i)^2 + B(t-t_i) + C。您似乎解释了 A、B、和 C 作为数字,但它们应该是向量! (这样它给出了一个隐式方程,所以“y 可以得到 2 个值”)而且你的数学解决方案似乎太复杂了。我得到了一个更简单的点等式。

假设您要包含在抛物线中的三个点的索引分别为 -1、0 和 1。

要得到 A、B 和 C,您应该考虑 t = 0 的情况,(在这种情况下,方程式应该给出三个点中的中间一个)当 t = -1 时,(它给出第一点),当 t = 1 时(给出最后一点)。在这三个等式中,您可以表达每个变量。

有点明显,但C应该等于中点。我会把剩下的留给你。祝你好运。