разделить единичный квадрат на n прямоугольников из случайно сгенерированных координат

Описание

Единичный прямоугольник имеет координаты (0,0), (0,1), (1,0) и (1,1). Случайное число для оси x и другое случайное число для оси y генерируется в диапазоне от 0 до 1. Таким образом, они составляют случайную координату.

Предположим, что случайная координата равна (M, N). Таким образом, он подразделяет единицу площади на 4 под прямоугольника. Позволяет маркировать их по часовой стрелке, как эта картина- http://bit.ly/15TsSw6.
Чтобы определить площадь этих под прямоугольников, я использовал

void area1(double a[],double ax[],double ay[])
{
ax[0]=M;
ay[0]=1-N;
a[0]= ax[0]*ay[0]; //area of first block

ax[1]=1-M;
ay[1]=ay[0];
a[1]=ax[1]*ay[1]; //area of second block

ax[2]=ax[1];
ay[2]=N;
a[2]=ax[2]*ay[2]; //area of third block

ax[3]=M;
ay[3]=N;
a[3]=ax[3]*ay[3]; //area of fourth block

cout<<endl;
}

Вот моя проблема:

Теперь пусть другой набор координат генерируется случайным образом. Он разделит один из этих под прямоугольников на 4 блока. Этот процесс будет продолжаться 100 раз. И каждый раз, когда случайно сгенерированные координаты разбивают прямоугольник рядом с ним на (3j + 1) под прямоугольники (см. Рисунок: http://bit.ly/11xyTOb).
Как я могу каждый раз вычислять площадь под прямоугольников? [Отредактировано]

0

Решение

алгоритм может быть что-то вроде этого.
вам понадобится рекурсивная функция
количество кормов = 1 в начале

void calculatearea(coordinates of 4 corners of the rectangle,count)
{
if count < 100
{
calculate area of the rectangle;
generate random numbers;
generate corners of the 4 new rectangles;
for each new rectangle i
{
calculatearea(corners of rectangle i, count+1);
}
}
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]