Точки из повернутого прямоугольника

MediumML coding
06:00
Лучше работает на десктопе
NumPyVectorizationGeometryRotation Matrix
Реальный собес00:14:08-00:42:402026-03-04 18-33-00.movСтраница собеса
Кадр с условием задачи 1
Кроп кадра с собеседования

Нужно преобразовать deterministic samples из [0, 1] x [0, 1] в точки внутри повернутого прямоугольника.

Прямоугольник задан центром, шириной, высотой и углом поворота в радианах. Каждый sample (u, v) сначала переводится в локальные координаты прямоугольника, затем поворачивается и сдвигается в центр.

В реальном собеседовании samples генерировались через NumPy RNG. В тренажере они передаются явно, чтобы автотесты были детерминированными.

Сигнатура

def rotated_rectangle_points(
    center: list[float],
    width: float,
    height: float,
    angle_rad: float,
    samples: list[list[float]],
) -> list[list[float]]:

Верните координаты, округленные до 6 знаков после запятой.

Примеры

Пример 1

Вход:
center = [0,0]
width = 2
height = 2
angle_rad = 0
samples = [[0,0],[0.5,0.5],[1,1]]
Выход:[[-1,-1],[0,0],[1,1]]

Без поворота это обычный axis-aligned rectangle

Пример 2

Вход:
center = [1,2]
width = 2
height = 4
angle_rad = 1.5707963267948966
samples = [[0.5,0.5],[1,0.5],[0.5,1]]
Выход:[[1,2],[1,3],[-1,2]]

Поворот на 90 градусов вокруг центра

Пример 3

Вход:
center = [1,-1]
width = 4
height = 2
angle_rad = 0.7853981633974483
samples = [[0.5,0.5],[1,0.5],[0.5,1]]
Выход:[[1,-1],[2.414214,0.414214],[0.292893,-0.292893]]

Поворот на 45 градусов

Консоль
Нажмите Run или Ctrl+Enter для запуска