繁体   English   中英

如何在c ++中用OpenGL绘制3D超椭圆

[英]How to draw a 3D super-ellipse with OpenGL in c++

要在C ++中使用OpenGL创建3D Sphere,我使用此函数:

glutWireSphere(GLdouble radius, GLint slices, GLint stacks);

我的代码运行得很好并显示了一个旋转的线球。
但我不知道如何编写一个绘制超椭圆的函数。

我知道超椭圆的公式:

超椭圆

如何使用此公式绘制3D超椭圆?

对于s1=s2=1您仍然可以使用glutWireSphere 应用变换矩阵使(1,0,0)转换为(rx,0,0)(0,1,0)转换为(0,ry,0) ,将(0,0,1)转换为(0,0,rz) 然后简单地用glutWireSphere(1,...,...)绘制身份领域。 我认为glScalef(rx,ry,rz)会做到这一点。

对于一般情况,您需要使用glBegin / glEnd或glDrawArrays自己生成几何。 看一下这个问题的一些线索。

您需要改变的一件事:

完成后,将所有顶点标准化以平滑表面。 如果你不这样做,你将获得更高分辨率的二十面体而不是球体。

而不是归一化,将(x,y,z)转换为(phi, theta, R) ,然后通过将phitheta入方程式来计算new (x',y',z') 在进行任何细分之前,您还应该对初始二十面体执行此步骤

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM