公式,圆的周长与矩形的角相交

Formula, Circle's perimeter intersects with corners of rectangle

注:关于圆的一切都是未知的。只知道矩形的宽度和高度。

我设计了一个公式来确定圆的直径,无论矩形的比例是多少(或者至少如果宽度大于高度),圆的周长都与矩形的底部两个角相交).公式如下,其中W指矩形的宽度,H指矩形的高度:

X = W / H
Diameter = ((X/4) + (1/X)) * W

有没有人知道更多 eloquent 的计算方法,或者是否有已知的算法可以更有效地做到这一点?

设圆心为(0, 0),直径为D,长方形的宽为W,高为H,点(±W/2,D/2 − H) 应该位于圆上,毕达哥拉斯认为当且仅当

(W/2)2 + (D/2 − H)2 = (D/2)2.

展开二项式,两边减去(D/2)2,得到

W2/4 − D H + H2 = 0.

通过在两边加上 D H 再除以 H 来求解 D,我们得到

D = W2/(4 H) + H.

在代码中可能如下所示。

double diameter(double width, double height) {
  return width * width / (4 * height) + height;
}