Я пишу эту программу, которая генерирует фигуру со случайным количеством вершин, и если она изогнута или нет. Сейчас я пытаюсь заполнить эту форму текстом разных форм, шрифтов и ориентаций.
Система, которая у меня есть на данный момент, заключается в том, что при создании нового текстового объекта он принимает прямоугольные angular координаты (x, y width, height) и устанавливает размер шрифта для этой границы. Затем эти границы добавляются в arrayList, который будет перебирать создание нового прямоугольника, чтобы избежать наложения. У меня также есть метод, чтобы гарантировать, что текст может быть создан только внутри основной фигуры, которая использует GeneralPath. Однако в настоящее время я проверяю это с помощью координат щелчка мыши.
Теперь я застрял в том, как на самом деле создать прямоугольник внутри исходной фигуры. У меня была пара идей:
- Создайте случайную точку на JPanel, проверьте, находится ли она внутри фигуры, а затем растяните ее по горизонтали и по вертикали, пока она не достигнет границы формы или существующего текстового элемента. Возьмите самые короткие и создайте прямоугольник. Проблема в том, что с более сложными фигурами он будет генерироваться частично за пределами фигуры.
- Произвольно сгенерируйте прямоугольник со случайными размерами, посмотрите, подходит ли он внутри фигуры без каких-либо пересечений с другими границами текста. Это сработало бы, но это кажется крайне неэффективным, и я могу столкнуться с проблемами с условием уничтожения (у меня изначально был счетчик, где, если он достигнет определенного порога, это означает, что невозможно добавить больше допустимых прямоугольников, но имея полностью рандомизированное поколение может привести к ложным целям)
Есть идеи? Извините, если это плохо сформулировано, надеюсь, изображение объясняет немного больше того, что я имею в виду, фигура просто генерируется случайным образом из программы с небольшим количеством вершин и изогнутой
где синие прямоугольники были нарисованы первыми и находятся в допустимых пространствах, где красные являются недопустимыми, поскольку они генерируются за границей формы или с другими текстовыми границами.