在OpenGL中有没有用于计算和绘制n面棱镜的代码?它应该像

void DrawPrism(long sides) {

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

}


DrawPrism(5)

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

最佳答案

新答案:

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

要计算五边形的高度,公式为:
^取自Wolfram Alpha



填写Kenobi:
如上面的视频中所述,A,B,C,D,E是五边形的边缘。 F,G,H,I,J是一起形成棱镜的第二个五边形。正弦和余弦以度为单位。然后我们有以下顶点:

  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)的视频,您可以使用数学“net”将这些不同的n-gons组成( 3D对象的骨架结构)并计算 Angular (所有这些公式都可以通过搜索n面体内角公式或n面体_____找到),也可以像我绘制这些n边形一样绘制它们(在视频中)只是使用不同的彩色线来模拟阴影(但是您必须在3D空间中将其旋转,我知道您可以在c++中进行此操作,所以您还可以。

无论如何,这是我的视频:http://www.youtube.com/watch?v=CWbTKm3a5Fw

如果您想知道的话,这就是“几何网”(之前称为):

本文展示了用于计算诸如面孔的n面体内角之类的数学运算以及不该作的运算,可能会非常有用:http://www.kjmaclean.com/Geometry/IcosaDodeca.html

10-05 23:50