[英]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)
,然后通過將phi
和theta
入方程式來計算new (x',y',z')
。 在進行任何細分之前,您還應該對初始二十面體執行此步驟
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.