带有正确抛物线的OSpline实现

问题描述

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

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

enter image description here

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

现在,这在大多数地方都适用,但显然我对此有疑问:

enter image description here

左为结果。正确的是它的外观。 坐标并不完全正确,但是应该给出右侧的粗略形状。

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

解决方案是,这三个点也可以定义一个抛物线形状,如下所示: 插值抛物线会给我正确的结果。

但是由于y在这样的抛物线中有2个值,因此我将不得不完全不同地计算它。 而且我还必须检查一下我是否需要横向精确的抛物线。

我想知道是否有一种方法可以对此进行检查,或者我可以使用另一个可以为我解决此问题的坐标系吗?

解决方法

我今天已经完成了这部分任务,因此,“我会尽力为您提供指导,但我不会告诉您全部解决方案。

抛物线上的点的公式为S(t)= A(t-t_i)^ 2 + B(t-t_i)+C。您似乎将A,B和C解释为数字,但他们应该是向量! (这样就给出了一个隐式方程,因此“ y可以得到2个值”)此外,您的数学解决方案似乎过于复杂。我得到了一个更简单的方程式。

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

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

这很明显,但是C应该等于中间点。剩下的我留给你。祝你好运。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...