Maths101问题-有谁知道如何计算包含给定矩形的椭圆(宽/高)。显然,没有单一的椭圆-我正在寻找一种算法,它将给我提供各种宽度/高度组合-或者可能是椭圆的最小面积?它是为图形用户界面设计的,所以一个美观的高/宽比例才是我想要的。
提前谢谢。
发布于 2009-01-11 19:05:30
以原点为中心的椭圆的方程式为
(x/A)^2 + (y/B)^2 = 1
现在,如果你想用月食包围一个矩形的MxN,你可以把它的中心移到坐标的原点。右上角的坐标是(M/2,N/2)
,替换为椭圆方程,您可以使用一个公式来求解给定A的B(或给定B的A)。
如果你有一个4x2的矩形,右上角的坐标是(2,1),替换你有的(2/A)^2 + (1/B)^2 = 1
,那么如果B的A=4
解算得到B=1/sqrt(1-(1/2)^2)
。
发布于 2009-06-12 23:49:21
通过实验,我发现由一个比内部矩形大的矩形定义的椭圆是有效的。因此,将sqrt(2)传递给此函数,您将获得适当的矩形:
RectangleF boundingEllipse = GetScaledRectangle(innerRect,Convert.ToSingle(Math.Sqrt(2d);
RectangleF GetScaledRectangle(RectangleF rect,float scale) {浮点宽度= rect.Width * scale;浮点高度= rect.Height * scale;
float gap = width - rect.Width;
float left = rect.Left - (gap / 2f);
gap = height - rect.Height;
float top = rect.Top - (gap / 2f);
return new RectangleF(left, top, width, height);
}
发布于 2009-01-11 19:03:58
假设你指的是外接(这比“封闭”更精确),你可以读到how to circumscribe a rectangle here。从那里,你可以像Alnitak所说的那样,将它拉伸成矩形。
https://stackoverflow.com/questions/433371
复制相似问题