簡體   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