Aln*_*tak 24
如果你给椭圆提供与矩形相同的纵横比,你可以根据你想要的是一个包围正方形的圆然后拉伸,就像你已经将正方形转换为所需的矩形一样.
对于半边长度= 1的正方形,圆的半径将为sqrt(2).
因此,从0到360' 扫描theta,椭圆的坐标点将是:
其中rect.width和rect.height是相关边的半宽.
set*_*tec 21
这导致我们遵循以下方程组:
(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
以原点为中心的椭圆方程为
(x/A)^2 + (y/B)^2 = 1
Run Code Online (Sandbox Code Playgroud)
现在,如果你想用一个日食包围一个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).