我有一个宽 x 高的矩形。
在该矩形内是另一个旋转 ϴ 度的矩形,该矩形始终在 -45 到 45 度之间,并且与外部矩形共享相同的中心。我需要找到 w 和 h 以使内部矩形的面积最大化。
这是一个(贫民窟)图像来说明一点。不过,我认为矩形的角可能应该是接触的?
这是我要编写的函数的原型:
SizeD GetMaxRectangleSize(double outerWidth, double outerHeight, float angle)
SizeD 只是一个具有双精度宽和高的结构。
感谢评论让我朝着正确的方向前进!
我的解决方案虽然在数学上可能不是最优的,但假设如果内部矩形的所有四个角都落在外部矩形上,那么面积将被最大化。
所以:
H = wSin(ϴ) + hCos(ϴ)
W = wCos(ϴ) + hSin(ϴ)
求解 w 和 h 并代入得出:
h = (HCos(ϴ) - WSin(ϴ))/(cos(ϴ)^2 - sin(ϴ)^2)
w = (WCos(ϴ) - HSin(ϴ))/(cos(ϴ)^2 - sin(ϴ)^2)
这恰好适用于 ϴ = [0,45),并且 (-45,0] 的行为应该相同。