2016-09-08 6 views
0

Я хочу создать много прямоугольников. Это должно быть сделано автоматически. Как я могу это сделать без ввода тысяч значений в моем коде? Есть ли решение?Как создать случайные прямоугольники (автоматически)?

  • В моем коде я написал каждую точку координат (4 точки каждого прямоугольника) вручную в моем векторе «V».
  • Также как их подключить. "F"
  • И значение каждого прямоугольника. «C»

Мой код

clc 
clear all 
figure; 
V = [0,0;1,0;1,1;0,1;5,5;10,5;10,10;5,10;2,2;4,2;4,4;2,4]; 
F = [1,2,3,4;5,6,7,8;9,10,11,12];%Dieser Vektor sagt mir in welcher Reihenfolge die Punkte 
C = [50;24;99]; 

patch('Faces',F,'Vertices',V,'FaceVertexCData',C,'FaceColor','flat','EdgeColor','none') %Befehl fürs "zeichnen" 
colormap(parula) 
colorbar 
+1

Только образец ** 4 случайных значения **. 1. верхняя левая угловая точка '' 'x'''. 2. верхняя левая угловая точка '' 'y'''. 3. '' 'x-length'''. 3. '' 'y-length'''. Вам просто нужно сделать некоторые проверки. (например, '' 'x0> = 0''',' '' y0> = 0'''; '' 'x0 + x-length <= width''' и т. д.) – sascha

ответ

0

Вы можете использовать следующую функцию для создания случайного прямоугольника, случайно генерации позиции (х, у) для нижнего левого угла, и генерироваться случайным образом ширина и высота -

function rect = createRandomRectangle(maxX, maxY, minHeight, maxHeight, minWidth, maxWidth) 

    bottom = maxY * rand; 
    left = maxX * rand; 

    height = minHeight + rand * (maxHeight - minHeight); 
    width = minWidth + rand * (maxWidth - minWidth); 

    rect = [ 
     left, bottom 
     left, bottom + height 
     left + width, bottom + height 
     left + width, bottom 
    ]; 

end 

Тогда вам просто необходимо позаботиться о создании ваших V, F, C матрицы (по телефону createRandomRectangle в цикле) d строит их.

 Смежные вопросы

  • Нет связанных вопросов^_^