当前位置:  开发笔记 > 人工智能 > 正文

椭圆边界矩形

如何解决《椭圆边界矩形》经验,为你挑选了3个好方法。

Maths101问题 - 有没有人知道如何计算将包围给定矩形的椭圆(宽度/高度).显然没有单个椭圆 - 我是在一个能给我各种宽度/高度组合的算法之后 - 或者也许是椭圆的最小区域?这是一个GUI,所以我正在寻找一个美观的高度/宽度比例.

提前致谢.



1> Alnitak..:

如果你给椭圆提供与矩形相同的纵横比,你可以根据你想要的是一个包围正方形的圆然后拉伸,就像你已经将正方形转换为所需的矩形一样.

对于半边长度= 1的正方形,圆的半径将为sqrt(2).

因此,从0到360' 扫描theta,椭圆的坐标点将是:

x = cos(theta)*sqrt(2)*rect.width + x.center;

y = sin(theta)*sqrt(2)*rect.height + y.center;

其中rect.width和rect.height是相关边的宽.


太棒了.要绝对清楚,只需将矩形的尺寸乘以sqrt(2)即可得到边界椭圆的尺寸.

2> setec..:

    椭圆公式为(x/A)^ 2 +(y/B)^ 2 = 1,其中A和B为椭圆的半径

    矩形边是Rw和Rh

    让我们假设我们想要与矩形具有相同比例的椭圆; 然后,如果我们将圆形(A = B,Rq = Rh)成像并挤压它,我们很好地保持椭圆A/B的比率与矩形边Rw/Rh的比率相同;

这导致我们遵循以下方程组:
(x/A)^ 2 +(y/B)^ 2 = 1
A/B = Rw/Rh

让我们解决它:A = B*(Rw/Rh)
(Rh/2B)^ 2 +(Rh/2B)^ 2 = 1
Rh = sqrt(2)*B

最终解决方案:
A = Rw/sqrt(2)
B = Rh/sqrt(2)

示例:
ellipse http://i55.tinypic.com/sxhlc0.gif



3> Ismael..:

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

(x/A)^2 + (y/B)^2 = 1

现在,如果你想用一个日食包围一个MxN矩形,你可以将它的中心移动到坐标原点.右上角的坐标是(M/2,N/2),在椭圆方程中替换你有一个公式,你可以用它来解A给定A(或给定的B).

如果你有一个4x2的矩形,那么右上角的坐标是(2,1),取而代之的是(2/A)^2 + (1/B)^2 = 1,如果A=4求解B则给出B=1/sqrt(1-(1/2)^2).

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有