三维随机分形地形生成(14)

发布时间:2021-06-07

COpenGLView 有一个 RenderScene 虚成员,我们在 CFractalExampleView 里重载之。这里将完成主要的绘制工作。函数先检查 Rendering type 的设定。当设为 2D mesh/lines or 1D midpoint displacement 时,工作由 RenderScene 完成。否则,别的函数被调用。 CFractalExampleViewe::OnViewDialog 生成 View Options 对话框,并处理设置及在 CFractalExampleView 与对话框类间提取数据。

CFractalExampleView::OnInitialUpdate 管理设置所有 CFractalExamleView 成员变量为其默认值(含对话框值)。

实际上关于代码是如何工作的并没有太多可解释的地方。我假定你是一个能干的程序员,且我已经尽力给代码加上详细的注释。如果你不熟悉 OpenGL ,注意 gl 开头的函数都是 OpenGL API 调用,详见 VC++ 的帮助文档或 Blue Book 。

有一个特性是刚开始加进代码中的。在 FractalExampleView.cpp 文件中,有一个名为

DEF_HIGHT_VALUE 的预处理常量。它传给 fractmod.c 文件中的分形生成函数,用来缩放高度值。其实它应该是由 View Options 对话框控制的变量。尽管加上这个特性好了。

关键代码:

1、Square步的端点值平均算法(fractmod.c)

2、Diamond步的端点值平均算法(fractmod.c)

3、使用Square-Diamond算法进行分形数组填充(fractmod.c)

4、地形排列的边界拼接算法

z = -1.f * (float) (tile-1);

for (i=0; i<tile; i++) {

x = -1.f * (float) (tile-1);

for (j=0; j<tile; j++) {

glPushMatrix ();

glTranslatef (x, 0.f, z);

draw2DFractArrayAsLines (surfFA, size);

glPopMatrix ();

x += 2.f;

}

三维随机分形地形生成(14).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219