首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >矩形的椭圆边界

矩形的椭圆边界
EN

Stack Overflow用户
提问于 2009-01-11 18:29:32
回答 3查看 24K关注 0票数 20

Maths101问题-有谁知道如何计算包含给定矩形的椭圆(宽/高)。显然,没有单一的椭圆-我正在寻找一种算法,它将给我提供各种宽度/高度组合-或者可能是椭圆的最小面积?它是为图形用户界面设计的,所以一个美观的高/宽比例才是我想要的。

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-01-11 19:05:30

以原点为中心的椭圆的方程式为

代码语言:javascript
复制
(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)

票数 9
EN

Stack Overflow用户

发布于 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;

代码语言:javascript
复制
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);

}

票数 2
EN

Stack Overflow用户

发布于 2009-01-11 19:03:58

假设你指的是外接(这比“封闭”更精确),你可以读到how to circumscribe a rectangle here。从那里,你可以像Alnitak所说的那样,将它拉伸成矩形。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/433371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档