(显然,我不被允许发布图片,请在此链接中查看图像)http://img191.imageshack.us/img191/6863/18720019.jpg
我已经能够计算每个环在样条线上每个点的顶点,但它们都在同一平面上,即相同的角度。我需要根据它们的“腿”(例如A和B对C)将它们旋转。
我已经考虑了这个问题,并想到了以下解决办法:
- 两条线段可以看作是两个向量(在图示A和B中)
- 角落(在图示C中)是需要计算顶点环的地方
- 我需要找到所有顶点所在平面
- 然后可以使用此平面(=向量?)从中心点C计算新的向量
- 并使用半径* sin和cos找到它们的x、y、z
然而,我对数学部分非常困惑。我读过点积但不知道如何在这种情况下应用。
有人可以指点我吗?
【编辑】 为了提供更多关于情况的信息:
我需要构建一个浮点缓冲区,其中-每组3个-描述顶点位置,并将通过OpenGL ES连接,给定另一个缓冲区与索引以形成多边形。
为了赋予管的形状,我首先创建了一个浮点数组,其中-每组3个-描述三维空间中的控制点。
然后,我将控制点与一个分段密度变量一起传递给一个函数,该函数使用这些控制点创建CatmullRom样条,并以另一个浮点数组的形式返回,其中-再次以3组为单位-描述catmull rom样条的顶点。在每个这些顶点上,我想创建一个环形顶点,其密度(每个环的平滑程度/顶点数)也可能不同。
所有以前的顶点(控制点和描述catmull rom样条的顶点)都被丢弃了。
只有形成管道环的顶点将被传递到OpenGL,然后连接这些顶点形成最终的管道。
我已经能够创建catmullrom样条,并在其顶点位置创建环,但它们都在相同角度的平面上,而不是沿着样条路径。