OpenGL中的n面棱镜代码

Ken*_*obi 2 c++ opengl math

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

void DrawPrism(long sides) {

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

}


DrawPrism(5)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

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

Alb*_*haw 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;
Run Code Online (Sandbox Code Playgroud)

然后你就是这样做的

glVertex3f(Ax,Ay,Az); 
glVertex3f(Bx,By,Bz);
[...]
Run Code Online (Sandbox Code Playgroud)






编辑:上面的答案(*对于所有多边形,而不仅仅是五边形):


是我为你制作的关于如何生成任何2D n-gon ...生成任何3D形状(n-hedron)的视频,您可以使用数学"网"(骨架结构)组合这些不同的n-gons. )3D对象并计算角度(所有这些公式都可以通过搜索n-hedron内角公式或n-hedron _____找到)或者你可以用我绘制这些n-gons的方式绘制它们(在视频)只是使用不同颜色的线条来模拟阴影(但是你必须在3D空间中将它们转换,我知道你可以用c ++来完成它所以你很好.

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




这就是几何网(就像之前所说的那样),你想知道: 在此输入图像描述

这篇文章显示用于计算像n-hedron内角的东西和什么不是的数学,可能非常有用:http://www.kjmaclean.com/Geometry/IcosaDodeca.html