OpenGL 程式設計/二次曲面
外觀
二次曲面是一種使用數學方程建立簡單形狀(如球體或圓柱體)的方法。
二次曲面通常使用 GLU(OpenGL 實用程式)庫繪製。但是,在本教程中,我們以可移植性為目標,特別是移動裝置,在移動裝置上,GLU 可能不可用,或者僅適用於 OpenGL 1.x,因此我們將自己實現它。此外,我們對僅僅呼叫幾個函式有更好的理解 :)
我們可以以不同的方式繪製二次曲面
- 實心 / 線框
- 正面朝外 / 朝內
你可能會問“我怎麼才能解出三個變數的方程?!”。好吧,答案是使用網格定義 x 和 y,並計算 z。
有兩種主要方法來繪製 x 和 y 值的網格
- 方形網格:沿 x 軸生成 N 個點,對於每個點,沿 y 軸生成 M 個點。這與二維 C 陣列中使用的經典雙重迴圈相同。
- 圓盤網格:定義一個圓半徑 N 次,並在圓上計算 M 個點(使用 cos/sin)。
兩種方法都會在視覺上產生不同的結果。
在求解方程時,我們將遇到兩種形式
- : z 直接計算
- : 有 3 種情況
- EQUATION 為 0,有一個解 (0)
- EQUATION 為負數,沒有解
- 否則,z 有兩個解, 和
方程 :
因此 :
因此,對於每個 (x,y) 點(除了 z = 0 時)都有兩個 z 解。
瀏覽和下載 完整程式碼 