在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