问题描述
所以我的工作是创建一个opengl程序,该程序可以将点转换为球体几何并正确连接它们。 第一项任务是使用给定的控制点和ospline的实现来创建非洲形状。 我没有找到对ospline的任何引用,所以在这里:
OSpline是2个抛物线之间的插值,给它4个点,它从3-3个点创建2个抛物线并线性插值中间2:
我为实现创建了一个desmos页面,因此您可以看到如何计算它: https://www.desmos.com/calculator/2ftend6wbp
现在,这在大多数地方都适用,但显然我对此有疑问:
左为结果。正确的是它的外观。 坐标并不完全正确,但是应该给出右侧的粗略形状。
现在的问题是,当在右上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应该等于中间点。剩下的我留给你。祝你好运。