Базовая проверка
Если ваш прямоугольник не повернут, проблема ограничена проверкой, находится ли точка (x, y) в некотором диапазоне
(rectangle.x, rectangle.x + rectangle.width)
(rectangle.y, rectangle.y + rectangle.height)
Добавление вращения
Когда прямоугольник вращается, вы можете сделать обратное вращение, чтобы привести точку в «не повернутое состояние» и выполнить предыдущую проверку.
Как «развернуть» точку
Хорошо. Если ваш прямоугольник повернут на 27º, «разворот» должен быть -27º (от той же точки вращения).
Как повернуть точку с учетом точки вращения?
Ну, вы должны:
- Переведите вещь, чтобы сделать (0,0) центральную точку: это так, переведите исходную точку (-x, -y), где (x, y) - точка вращения
- применить вращение к началу координат (см. Раздел ниже)
- отменить первое преобразование (translate (x, y), где (x, y) - точка вращения
Вращение по месту происхождения
Вы должны сделать матричное умножение Ax. Где A - это матрица, а x - это вектор (x, y) точки поворота.
Матрица А построена таким образом