在一个以中心点、高度和宽度为参数的矩形内,如何找到椭圆周长上的一个点?

6

我在.NET中有一个矩形,在其中绘制一个椭圆。

我知道该矩形的宽度、高度和中心点。

当然,矩形的中心点也是椭圆的中心点。

我知道如何计算圆上的点,但对于椭圆一无所知。

我有这些参数和一个角度,我需要在椭圆上找到该点,请问有人可以提供公式吗?

我看到有人说需要计算两个半径将会经过的两个点,这两个半径的和将保持不变,并且它们的大小也会相应地改变。

我不知道如何做到这一点,我只有矩形的高度、宽度和中心点以及我想要找到该点的角度。

感谢任何帮助,Shlomi


2
这个问题应该发在http://mathoverflow.net/上。 - Ganesh R.
2
@Ganesh R:并不是所有关于数学的问题都适合在MathOverflow上提问。实际上,SO上人们认为适合在MathOverflow上提问的问题非常少。请阅读其FAQ。 - AakashM
@Shlomi:矩形的边是否平行于坐标轴? - AakashM
是的,这是使用实现的Drawing2D DrawEllipse函数创建的相当简单的椭圆。我创建一个矩形,然后只需绘制椭圆。 矩形的原点由TopLeft点设置,中心始终为矩形的Width/2,Height/2。 - Shlomi Assaf
你在帖子中所说的“angle”是什么意思? - Jacob
1个回答

13

您可以使用极坐标的标准形式来解决问题,其中矩形的宽度和高度分别为wh

alt text

alt text

其中t是弧度制下的角度,aw/2bh/2

因此,要绘制椭圆,只需将t0变化到360度(以弧度为单位,即02pi),并根据您如何分布t,您会得到椭圆上的点。

由于您的矩形不在原点处居中,因此您必须通过矩形中心的坐标进行偏移,例如(Cx,Cy)

const double C_x = 10, C_y = 20, w = 40, h = 50;
for(double t = 0; t <=2*pi; t+=0.01)
{
   double X = C_x+(w/2)*cos(t);
   double Y = C_y+(h/2)*sin(t);
   // Do what you want with X & Y here 
}

如果我只想传递一个给定的X并获得与椭圆相关的Y,我该如何操作?我应该怎么做? - Felipe Mosso
然后可以解出t并将其代入Y(t)中。例如,如果a=1,b=1且您有X=1,则X=a*cos(t)1=1*cos(t),这意味着t=0是一个解。因此,Y(t)=0 - Jacob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接