OpenGL中的n面棱镜代码

时间:2013-02-26 14:54:16

标签: c++ math opengl

是否有任何代码可以在OpenGL中计算和绘制n面棱镜?它应该像

一样工作
void DrawPrism(long sides) {

 glNormal3f( ...);
 glTexCoord2f(..);
 glVertex3f(...);
 [...]

}


DrawPrism(5)

enter image description here

基本上我只需要 x - y - 基部边缘的位置。其余的计算由GL完成。

2 个答案:

答案 0 :(得分:5)

新答案:

要计算五角大楼顶点的坐标,请查看我在此为您制作的视频:http://www.youtube.com/watch?v=qqu6LknbQsg

要计算五边形的高度,公式为:enter image description here ^取自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




这就是几何网(就像之前所说的那样),你想知道: enter image description here

这篇文章显示用于计算像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

但仅此而已。