跳至內容

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 解。

< OpenGL 程式設計

瀏覽和下載 完整程式碼
華夏公益教科書