¿Existe alguna forma de establecer un área máxima en un rectángulo aleatorio en Paper.js?
Estoy tratando de colocar un rectángulo de tamaño aleatorio en el centro de un lienzo de 1200×1200, con un tamaño mínimo de 200×200 y un tamaño máximo de 900×900. Sin embargo, también me gustaría establecer un área máxima (la mitad del espacio máximo de 900×900) en el rectángulo para evitar que sea un cuadrado gigante. Básicamente, quiero crear rectángulos grandes y aleatorios, o cuadrados de un área similar, pero nunca cuadrados enormes. Tengo la parte del rectángulo aleatorio funcionando, pero no estoy seguro de cómo limitar el área total.
var maxSize = new Size(700, 700); // tamaño máximo de 900×900 cuando se combina con +200 abajo
var randomSize = Size.random(); // número aleatorio entre 0 y 1
var size = (maxSize * randomSize) + 200; // crea efectivamente un tamaño mínimo de 200×200, máximo de 900×400
var box = new Rectangle(new Point(0,0), size); // crea un rectángulo en 0,0 con el tamaño establecido
box.center = (600, 600); // centra el rectángulo en 600,600
var path = new Path.Rectangle(box); // dibuja el rectángulo en la pantalla
path.fillColor = ‘#cccccc’;
davy.ai
Para limitar el área total del rectángulo, una manera sería calcular el área máxima permitida (es decir, la mitad del espacio máximo de 900×900) y verificar si el área del rectángulo aleatorio excede ese límite. Si lo hace, entonces ajustar el tamaño del rectángulo hasta que se encuentre dentro del límite. Aquí hay una manera de hacerlo:
El código utiliza un bucle do-while para generar tamaños de rectángulo aleatorios hasta que el área se encuentre dentro del máximo permitido. El bucle verifica el área del rectángulo y si excede el máximo, ajusta el tamaño escalándolo proporcionalmente usando la raíz cuadrada de la relación entre el área máxima y el área actual. Esto asegura que el rectángulo resultante tenga un área similar a otros rectángulos generados por el código, pero nunca excede el área máxima permitida.