我想在OpenGl中画一个圆柱体。我找到了这个算法,但我无法理解它。 。圆柱算法
http://paulbourke.net/miscellaneous/sphere_cylinder/
“鉴于两个垂直矢量A和B中的一个可绕气缸的每个边缘创建顶点因此,对于4顶点面的顶点可能被给出的以下其中theta2 - theta1是一些适当的小角度决定了逼近的粗糙度。“
我怎样才能找到A和B?我正在使用glm。可以glm计算交叉产品?
我想在OpenGl中画一个圆柱体。我找到了这个算法,但我无法理解它。 。圆柱算法
http://paulbourke.net/miscellaneous/sphere_cylinder/
“鉴于两个垂直矢量A和B中的一个可绕气缸的每个边缘创建顶点因此,对于4顶点面的顶点可能被给出的以下其中theta2 - theta1是一些适当的小角度决定了逼近的粗糙度。“
我怎样才能找到A和B?我正在使用glm。可以glm计算交叉产品?
A和B构成正交(优选正交)笛卡尔2D坐标系的基础。把它们想象成X轴和Y轴。回想一下,对于圆形的参数方程是
p(t) = r (X cos(t) + Y sin(t))
现在具有A,B替换X和Y,和你有一个圆柱体的圆形横截面的方程。为了使它你垂直于A和B,即C = A×B
p(s, t) = s * C + r (A cos(t) + B sin(t))
是的,glm可以构建交叉产品矩阵,请参阅GLM API(glm::gtx::matrix_cross_product::matrixCross3
和glm::gtx::matrix_cross_product::matrixCross4
)。
有回答的弦数上挤出通过该载体的气缸:
有多种方式创建这两个向量时,它们通常需要形成与圆柱轴不共线的任何向量。该矢量与圆柱轴(P2-P1)的叉积给出了一个矢量(A say),将该新矢量与该轴的叉积给出另一个矢量(B)。然后这两个垂直向量被归一化。
所以让我们一步一步:
进一步了解交叉积可以读取here
在他的笔记之下他已经链接了一个C源代码文件,显示了如何去做。 – ChrisWue
[我的问题在这里](http://stackoverflow.com/questions/12274863/how-to-trap-my-surface-patches-to-prevent-the-background-from-bleeding-through)有Postscript的源代码计算圆柱体上的面的顶点。 –