基于OpenGL的分形山三维模拟生成技术

计算机图形学课的大作业一枚

如图(a),将原来的线段换作一个三角形,与二维方法一样,取三条边的中点,分别加以随机的扰动值,连接各点,得到了四个不同形态的三角形。对这四个三角形重复以上步骤,随着迭代次数的增加,所得到的几何体也越来越接近山的形状。

基于OpenGL的分形山三维模拟生成技术

基于OpenGL的分形山三维模拟生成技术

然而,在实际应用中,上述算法却存在着致命的缺陷。

基于OpenGL的分形山三维模拟生成技术

如图,这是一次迭代后的情形。注意到,新生成的四个三角形分别为△DEF,△AEF,△BDF,△CDE,其中位于中间位置的△DEF,与其他三个三角形 均有公共边。这也就意味着,这三条公共边将会被两次赋予随机扰动值,致使下一次迭代生成的山具有明显“断层”,极为不美观。

基于OpenGL的分形山三维模拟生成技术

基于OpenGL的分形山三维模拟生成技术

因此,我们对上述算法进行了一些改进。如图:

基于OpenGL的分形山三维模拟生成技术

基本型由三角形改为正方形。正方形的对角线BD将正方形一分为二,得到了两个三角形,△ABD和△BCD。迭代的方式也有所改变:

  1. ① 对于正方形ABCD,找出它的中心点M,对其高度进行随机扰动。
  2. ② 其余各点高度不变,连接MD,MB,ME,MF,MG,MH以及EH和FG。
  3. ③ 得到四个新的正方形AEMH,EBFM,MFCG和HMGD,对这四个正方形重复执行步骤①,②。

经过上述迭代数次后,也可以得到和旧算法近乎一样的结果。并且大幅度减少了运算次数和系统开销。

迭代完成后,只需要从生成的各点坐标的数组中直接取值进行绘制即可。

基于OpenGL的分形山三维模拟生成技术

基于OpenGL的分形山三维模拟生成技术

0
打赏
135
65
下载
0
吐槽

- 评论

  • 加载中,请稍候…
我要吐槽