跳至内容

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 编程

浏览和下载 完整代码
华夏公益教科书