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 解。
浏览和下载 完整代码