zoukankan      html  css  js  c++  java
  • 三维地形生成

    三维地形生成的相关代码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
  • 相关阅读:
    Jsoup的学习
    String中对字符串进行操作的一些方法
    Httpclient的学习(一)
    初识爬虫见到的两个类 BufferedWriter和 BufferedReader
    ZooKeeper学习笔记(二)——内部原理
    FastDFS安装指南
    基于CentOS6.5的Dubbo及Zookeeper配置
    虚拟机克隆后遇到的网络相关的问题
    ElasticSerach 6.x的安装及配置
    YARN-HA高可用集群搭建
  • 原文地址:https://www.cnblogs.com/wylwyl/p/10267083.html
Copyright © 2011-2022 走看看