2

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

void DrawPrism(long sides) {

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

}


DrawPrism(5)

在此处输入图像描述

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

4

2 回答 2

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);
[...]






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


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

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




这就是几何网络(前面提到的),以防您想知道: 在此处输入图像描述

这篇文章展示了用于计算诸如面的 n 面体内角之类的数学,可能非常有帮助:http ://www.kjmaclean.com/Geometry/IcosaDodeca.html

于 2013-02-26T16:03:47.680 回答
1

不,即使在 Glut 中也没有创建它的函数。可悲的是,您将不得不手动创建它。基本二次曲线不在基本 OpenGL 上。使用 GLUT 你有一些功能:

http://www.cs.csustan.edu/~rsc/SDSU/Modeling.GLU.GLUT.pdf

但仅此而已。

于 2013-02-26T15:04:03.223 回答