有一个需求需要要生成地貌一样的随机地形图,首先我通过在固定大小的矩形面板上生成多个大小不一的矩形,然后赋予每个矩形随机的高度,然后再进行滤波得到想要的地形图。
先直接贴一段代码,看看是如何在面板上生成多个大小不一的矩形的。
t = 1;
rec_num = 10;%矩形的个数
ah = 56;
x = 112 - 112*rand(1,1);%为了让矩形在112*112范围内
y = 112 - 112*rand(1,1);
w = rand(1)*(112-x)-1;
h = rand(1)*(112-y)-1;
b =[x y w h];
rectangle('Position', b)
a{t} =b;
flag =1;
while flag ==1
x = 112 - 112*rand(1,1);
y = 112 - 112*rand(1,1);
w = rand(1)*(112-x)-1;
h = rand(1)*(112-y)-1;
b =[x y w h];
num = 0;
for j = 1:t
if ~rectint(b,a{j})%交集的面积为0
num = num +1;
end
end
if num == t
hold on;
rectangle('Position', b)
t = t+1;
a{t} =b;
end
if t == rec_num
break
end
end
效果图如下
版权声明:本文为fengzhongluoleidehua原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。