幅×高さの長方形があります。
その長方形内には、常に -45 ~ 45 度の ϴ 度だけ回転した別の長方形があり、外側の長方形と同じ中心を共有します。内側の長方形の面積が最大になるように w と h を見つける必要があります。
これは、少し説明するための (ゲットー) 画像です。ただし、長方形の角はおそらく接触しているはずだと思いますか?
私が書きたい関数のプロトタイプは次のとおりです。
SizeD GetMaxRectangleSize(double outerWidth, double outerHeight, float angle)
SizeD は、幅と高さが double の単なる構造体です。
私を正しい方向に導いてくれたコメントに感謝します!
私の解決策は、おそらく数学的には最適ではありませんが、内側の四角形の四隅すべてが外側の四角形に収まると、面積が最大化されると仮定することでした。
したがって:
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] も同じように動作するはずです。