三维地形生成

三维地形生成的相关代码matlab

 1 function terrain()
 2 n=9;%递归次数
 3 H=2;%设置初始正方形四顶点值
 4 t=0.2;%控制地貌形态
 5 delta=0.01;%初始随机位移偏移量,控制地貌形态
 6 size=2^n+1;
 7 S=zeros(size,size);%设置size*size的初始方阵
 8 S(1,1)=H+sqrt(1-2^(2*t-2))*normrnd(0,1)*delta;%赋初始高度值
 9 S(1,size)=H+sqrt(1-2^(2*t-2))*normrnd(0,1)*delta;
10 S(size,1)=H+sqrt(1-2^(2*t-2))*normrnd(0,1)*delta;
11 S(size,size)=H+sqrt(1-2^(2*t-2))*normrnd(0,1)*delta;
12 x1=1;
13 y1=1;
14 x2=size;
15 y2=size;
16 depth=0;
17 S=fractal(S,x1,y1,x2,y2,depth,t,delta);%调用子函数,传递参数
18 x=1:size;
19 y=1:size;
20 [X,Y]=meshgrid(x,y);
21 hidden off;
22 surf(X,Y,S);
23 Smin=min(min(S));
24 Smax=max(max(S));
25 axis([0 size 0 size Smin Smax]);
26 grid off;
27 %box off
28 colormap(gray);
29 shading interp;
30 %material default;
31
32
33 function S=fractal(S,x1,y1,x2,y2,depth,t,delta)%子函数调用,返回矩阵S
34 if round((x2+x1)/2)==(x2+x1)/2
35 S((x1+x2)/2,(y2+y1)/2)=(S(x1,y1)+S(x1,y2)+S(x2,y1)+S(x2,y2))/4+2^(-depth*t)*sqrt(1-2^(2*t-2))*normrnd(0,1)*delta;
36 S((x1+x2)/2,y1)=(S(x1,y1)+S(x1,y2))/2+2^(-depth*t)*sqrt(1-2^(2*t-2))*normrnd(0,1)*delta;
37 S(x1,(y2+y1)/2)=(S(x1,y1)+S(x2,y2))/2+2^(-depth*t)*sqrt(1-2^(2*t-2))*normrnd(0,1)*delta;
38 S((x1+x2)/2,y2)=(S(x2,y1)+S(x2,y2))/2+2^(-depth*t)*sqrt(1-2^(2*t-2))*normrnd(0,1)*delta;
39 S(x2,(y2+y1)/2)=(S(x1,y2)+S(x2,y1))/2+2^(-depth*t)*sqrt(1-2^(2*t-2))*normrnd(0,1)*delta;
40 depth=depth+1;
41 S=fractal(S,x1,y1,(x1+x2)/2,(y2+y1)/2,depth,t,delta);%连续四次递归,分别计算上下左右四个正方形的高度,至今还不是很明白它的详细计算过程和规律,如有高手,请赐教
42 S=fractal(S,(x1+x2)/2,y1,x2,(y2+y1)/2,depth,t,delta);
43 S=fractal(S,(x1+x2)/2,(y2+y1)/2,x2,y2,depth,t,delta);
44 S=fractal(S,x1,(y2+y1)/2,(x1+x2)/2,y2,depth,t,delta);
45 end

原文地址:https://www.cnblogs.com/wylwyl/p/10267083.html

时间: 2024-10-13 17:49:55

三维地形生成的相关文章

关于生成三维地形

本以为<OpenGL游戏编程>中的地形生成算法很高大上,但最近几天因为在看<3D地形编程>,整本书介绍的都是跟地形相关的内容,而<OpenGL游戏编程>中所述地形算法正是最简单的那种,仅仅是<3D地形编程>入门级的算法(硬渲染算法),由LOD.CLOD算法生成的地形是为了渲染大型室外场景的.<OpenGL游戏编程>这本书如今称得上是看明白了,介绍的更多的是OpenGL API和OpenGL程序机制,比较基础,纯粹是堆积木式的开发.总的来说,算法层

《逐梦旅程 WINDOWS游戏编程之从零开始》笔记9——游戏摄像机&amp;三维地形的构建

第21章 游戏摄像机的构建 之前的程序示例,都是通过封装的DirectInput类来处理键盘和鼠标的输入,对应地改变我们人物模型的世界矩阵来达到移动物体,改变观察点的效果.其实我们的观察方向乃至观察点都是没有变的,变的只是我们3D人物的位置.说白了就是用D3DXMatrixLookAtLH在资源初始化时固定住视角,在程序运行过程中接收到消息并改变三维人物模型的世界矩阵而已.这章的主要内容就是创建出一个可以在三维空间中自由移动的摄像机类,我们准备给这个摄像机类取名为CameraClass. 设计摄

OSGEARTH三维地形开源项目

第一章   OSGEarth介绍 第二章   OSGEarth编译环境配置 OSGEarth的编译环境配置随着版本的不同.运行平台的不同,也有很大的差异.本章主要以Windows XP SP3(x86)为平台,Visual Studio 2010 为编译环境来介绍OSGEarth2.0的变异环境配置. 第一节  OSGEarth V2.0相关资源 OSGEarth的相关资源可以通过其官方网站(http://www.osgearth.org/wiki/Downloads)获取(所有资源文件均在关盘

OpenGL ES学习笔记(二)&mdash;&mdash;平滑着色、自适应宽高及三维图像生成

首先申明下,本文为笔者学习<OpenGL ES应用开发实践指南(Android卷)>的笔记,涉及的代码均出自原书,如有需要,请到原书指定源码地址下载. <Android学习笔记--OpenGL ES的基本用法.绘制流程与着色器编译>中实现了OpenGL ES的Android版HelloWorld,并且阐明了OpenGL ES的绘制流程,以及编译着色器的流程及注意事项.本文将从现实世界中图形显示的角度,说明OpenGL ES如何使得图像在移动设备上显示的更加真实.首先,物体有各种颜色

ArcEngine下SceneControl叠加影像数据(构建三维地形)

加载完TIN数据后,需要在三维物体上描绘细节,即纹理:建立DEM表面点与纹理空间点的关系,即纹理映射.叠加影像数据就是把影像看作纹理,将其贴在地形表面,让其具有地形起伏的三维效果. 这里与GlobeControl下三维场景的构建有所不同,在前面的博文中我们提到过,globe下图层主要有三种类型:Floating.Draped.Elevation(浮动.叠加和高程图层),即只需要设置图层的属性即可,叠加图层与浮动图层从高程图层获取高程值.SceneControl中实现影像的叠加,参照ArcScen

Day3:关于地形生成

---恢复内容开始--- 今天桃子好像还是没什么动静,不过媳妇倒是有一点见红~ 希望这是马上要出来的前兆了~ 桃子都已经晃点我俩好多回了~ 已经都快习惯来她这个狼来了的征兆了~ -------------------------------任性的分割线--------------------------------- 因为想做一个类似<Minecraft>的游戏,所以各种找关于地形生成的算法~ 虽然之前弄得那个柏林噪音的算法可以,但是欠缺太多东西了~ 不知道是不是我太钻牛角尖了~ 对应该如何制

ue4读取灰度生成三维地形mesh

新建ue c++工程. 在Build.cs中添加"ProceduralMeshComponent"模块. 在 uproject中添加"ProceduralMeshComponent"模块. 原文地址:https://www.cnblogs.com/gucheng/p/10116857.html

cinder读取灰度图生成三维地形

本文链接 https://www.cnblogs.com/gucheng/p/10519596.html 原文地址:https://www.cnblogs.com/gucheng/p/10519596.html

3dmax导入地形数据DEM制作三维地形

工具准备      1.BIGEMAP地图下载器 2.3DMAX软件 3.global mapper Global mepper 下载地址:http://www.bigemap.com/Home/Product/index.html 资料准备 下载你需要 区域的DEM数据和 卫星影像数据. 影像须使用BIGEMAP地图下载器中Google Earth无偏移影像,并具有无Google小水印.免封IP.影像更新更快等特点. 首先在图源列表中选中Google Earth图源,只有此图源可实现高清卫星图