gpt4 book ai didi

c++ - OpenGL中n面棱镜的代码

转载 作者:搜寻专家 更新时间:2023-10-31 00:16:50 25 4
gpt4 key购买 nike

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

void DrawPrism(long sides) {

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

}


DrawPrism(5)

enter image description here

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

最佳答案

新答案:

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

要计算五边形的高度,公式为:enter image description here^检索自Wolfram Alpha






Kenobi 的 FILL:如上面视频中所述,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 边形的视频...要生成任何 3D 形状(n 面体),你可以使用数学方法将这些不同的 n 边形组合起来3D 对象的“网”(骨架结构)并计算角度(所有这些公式都可以通过搜索 n 面体内角公式或 n 面体 _____ 找到)或者您可以按照我画的方式绘制它们这些 n 边形(在视频中)只是使用不同颜色的线条来模拟阴影(但你必须在 3D 空间中转动它们,我知道你可以在 c++ 中做到这一点,所以你没问题。

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




如果您想知道,这就是几何网(前面提到过): enter image description here

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

关于c++ - OpenGL中n面棱镜的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15092161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com