Во-первых, мы позаботимся о тривиальном случае, когда угол равен нулю или кратен пи / 2. Тогда самый большой прямоугольник совпадает с исходным прямоугольником.
Как правило, внутренний прямоугольник будет иметь 3 точки на границах внешнего прямоугольника. Если это не так, то его можно переместить так, чтобы одна вершина была внизу, а одна вершина была слева. Затем вы можете увеличить внутренний прямоугольник, пока одна из двух оставшихся вершин не достигнет границы.
Назовем стороны внешнего прямоугольника R1 и R2. Без ограничения общности можно считать, что R1 <= R2. Если мы назовем стороны внутреннего прямоугольника H и W, то у нас есть </p>
H cos a + W sin a <= R1
H sin a + W cos a <= R2
Поскольку у нас есть как минимум 3 точки на границах, по крайней мере, одно из этих неравенств должно фактически быть равенством. Давайте использовать первый. Легко увидеть, что:
W = (R1 - H cos a) / sin a
и поэтому область
A = H W = H (R1 - H cos a) / sin a
Мы можем взять производную по. H и требует, чтобы оно равнялось 0:
dA/dH = ((R1 - H cos a) - H cos a) / sin a
Решая для H и используя выражение для W выше, мы находим, что:
H = R1 / (2 cos a)
W = R1 / (2 sin a)
Подстановка этого во второе неравенство становится после некоторой манипуляции
R1 (tan a + 1/tan a) / 2 <= R2
Коэффициент в левой части всегда равен по крайней мере 1. Если неравенство выполнено, то у нас есть решение. Если оно не выполняется, то решение является тем, которое удовлетворяет обоим неравенствам как равенствам. Другими словами: это прямоугольник, который касается всех четырех сторон внешнего прямоугольника. Это линейная система с 2 неизвестными, которая легко решается:
H = (R2 cos a - R1 sin a) / cos 2a
W = (R1 cos a - R2 sin a) / cos 2a
Исходя из исходных координат, получаем:
x1 = x4 = W sin a cos a
y1 = y2 = R2 sin a - W sin^2 a
x2 = x3 = x1 + H
y3 = y4 = y2 + W