要在C ++中使用OpenGL创建3D Sphere,我使用此功能:
glutWireSphere(GLdouble radius, GLint slices, GLint stacks);
我的代码运行得非常好并且显示了一个旋转的线球 但我不知道如何编写一个绘制超椭圆的函数。
我知道超椭圆的公式:
如何使用此公式绘制3D超椭圆?
答案 0 :(得分:3)
对于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自己生成几何。看看this question的一些线索。
您需要改变的一件事:
完成后,将所有顶点标准化以平滑曲面。 如果你不这样做,你将只获得更高分辨率的二十面体而不是球体。
取代规范化,将(x,y,z)
转换为(phi, theta, R)
,然后通过将(x',y',z')
和phi
替换为等式来计算新的theta
。在进行任何细分之前,您还应该对初始二十面体执行此步骤