是否有任何代码可以在OpenGL中计算和绘制n面棱镜?它应该像
一样工作void DrawPrism(long sides) {
glNormal3f( ...);
glTexCoord2f(..);
glVertex3f(...);
[...]
}
DrawPrism(5)
基本上我只需要 x - y - 基部边缘的位置。其余的计算由GL完成。
答案 0 :(得分:5)
新答案:
要计算五角大楼顶点的坐标,请查看我在此为您制作的视频:http://www.youtube.com/watch?v=qqu6LknbQsg
要计算五边形的高度,公式为: ^取自Wolfram Alpha
由Kenobi填写: 如上面的视频所述,A,B,C,D,E是五边形的边缘。 F,G,H,I,J是第二个形成棱镜的五边形。 Sin和cos以度为单位。然后我们有以下顶点:
Ax = 0 ; Ay = h/2, ; Az = -1;
Bx = s/2 + s * sin(18) ; By = -h/2 + s*cos(18) ; Bz = -1;
Cx = s/2 ; Cy = -h/2 ; Cz = -1;
Dx = -s/2 ; Dy = -h/2 ; Dz = -1;
Ex = -s/2 - s * sin(18); Ey = -h/2 + s*cos(18) ; Ez = -1;
Fx = 0 ; Fy = h/2, ; Fz = 1;
Gx = s/2 + s * sin(18) ; Gy = -h/2 + s*cos(18) ; Gz = 1;
Hx = s/2 ; Hy = -h/2 ; Hz = 1;
Ix = -s/2 ; Iy = -h/2 ; Iz = 1;
Jx = -s/2 - s * sin(18); Jy = -h/2 + s*cos(18) ; Jz = 1;
然后你只需做
glVertex3f(Ax,Ay,Az);
glVertex3f(Bx,By,Bz);
[...]
编辑:上面的答案(*对于所有多边形,而不仅仅是五边形):
Here是关于如何生成任何2D n-gon ...生成任何3D形状(n-hedron)的 FOR YOU 的视频,您可以将其组合成这些不同的n-gons使用3D对象的数学“网”(骨架结构)并计算角度(所有这些公式都可以通过搜索n-hedron内角公式或n-hedron _____来找到)或者你我可以像绘制这些n-gons一样(在视频中)使用不同颜色的线来模拟阴影(但是你必须将它们转换为3D空间,我知道你可以用c ++来做它所以你很好
无论如何,这是我的视频:http://www.youtube.com/watch?v=CWbTKm3a5Fw
这就是几何网(就像之前所说的那样),你想知道:
这篇文章显示用于计算像n-hedron内角的东西以及什么不是的数学,可能非常有帮助:http://www.kjmaclean.com/Geometry/IcosaDodeca.html
答案 1 :(得分:1)
没有。即使在Glut中也没有创建它的功能。可悲的是,你必须手工制作它。 基本的二次曲面不在基本的OpenGL上。使用GLUT你有一些功能:
http://www.cs.csustan.edu/~rsc/SDSU/Modeling.GLU.GLUT.pdf
但仅此而已。