Задать вопрос
@dron_andron

Как предотвратить выход нарисованного прямоугольника за границы области?

Генерирую прямоугольники под случайным углом.

Размер картинки 640*480. Генерю центр в этих пределах и длины с шириной в пределах от 150 до 250. Как предотвратить выход за границы? Нужно, чтобы полностью лежал внутри. Код функции, генерирующей координаты прямоугольника:

def create_rect():
    x, y = (np.random.randint(0, 640), np.random.randint(0, 480))
    w = np.random.randint(150, 250)
    h = np.random.randint(150, 250)
    angle = rand_angle()
    rotmat = np.array([[np.cos(angle), -np.sin(angle)],
                       [np.sin(angle), np.cos(angle)]])
    rectangle = np.array([[x-w/2, y-h/2],
                     [x+w/2, y-h/2],
                     [x+w/2, y+h/2],
                     [x-w/2, y+h/2]]).T

    rot_rect = rotmat @ rectangle

    x1y1 = (rot_rect[0][0], rot_rect[1][0])
    x2y2 = (rot_rect[0][1], rot_rect[1][1])
    x3y3 = (rot_rect[0][2], rot_rect[1][2])
    x4y4 = (rot_rect[0][3], rot_rect[1][3])
    return x1y1, x2y2, x3y3, x4y4


636f75e17cfb5290760048.png
  • Вопрос задан
  • 82 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
Alexandroppolus
@Alexandroppolus
кодир
сначала определи w, h, angle
вычисли W и H - размеры ограничивающего прямоугольника (неповернутого прямоугольника, в который вписан твой прямоугольник)
потом определи центр
x, y = (np.random.randint(W/2, 640-W/2), np.random.randint(H/2, 480-H/2))

то есть x - от W/2 до 640-W/2, если я правильно понял что такое np.random.randint
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы