如何在2D(C#)中找到线与椭圆相交的点

I_r*_*SVC 2 c# math geometry trigonometry ellipse

我需要找到一条线(其原点是椭圆'中心)与2D中的椭圆相交...我可以很容易地在圆上找到一个点,因为我知道角度F和圆'半径(R):

x = x0 + R * cosF
y = y0 + R * sinF
Run Code Online (Sandbox Code Playgroud)

但是我无法想象我应该如何处理椭圆...我知道它的尺寸(A和B),但找到参数T的方法是什么?!

x = x0 + A * cosT
y = y0 + B * sinT
Run Code Online (Sandbox Code Playgroud)

据我所知,参数T(T角)离F角不远(在某些情况下大约+ -15度),但我无法计算如何计算它!

如果有一颗善良的心灵,请帮我解决这个问题......

Ser*_*rge 7

驻留在0,0的椭圆的标准方程是:

1 = (x)^2 / (a)    +  (y)^2 / (b)
Run Code Online (Sandbox Code Playgroud)

其中a是水平轴上直径的1/2,而b是垂直轴上直径的1/2.

你有一条线,假设一个等式:

y = (m)(x - x0) + y0
Run Code Online (Sandbox Code Playgroud)

所以,让我们即插即用!

1 = (x)^2 / (a)   +   (m(x - x0) + y0)^2 / (b)

1 = x^2 / a  +  (mx + (y0 - mx0))^2 / b

1 = x^2 / a  +  (m^2 * x^2 + 2mx*(y0 - mx0) + (y0 - mx0)^2) / b

1 = x^2 / a  + (m^2 x^2) / b + (2mx*(y0 - mx0) + (y0^2 - 2y0mx0 + m^2*x0^2)) / b

1 = ((x^2 * b) / (a * b)) + ((m^2 * x^2 * a) / (a * b)) + (2mxy0 - 2m^2xx0)/b + (y0^2 - 2y0mx0 + m^2*x0^2)/b

1 = ((bx^2 + am^2x^2)/(ab)) + (x*(2my0 - 2m^2x0))/b + (y0^2 - 2y0mx0 + m^2*x0^2)/b

0 = x^2*((b + a*m^2)/(ab)) + x*((2my0 - 2m^2x0)/b) + (((y0^2 - 2y0mx0 + m^2*x0^2)/b) - 1)
Run Code Online (Sandbox Code Playgroud)

最后一个等式遵循标准二次方程的形式.

所以只需使用二次公式,即:

((b + a*m^2)/(ab))
((2my0 - 2m^2x0)/b)
and 
(((y0^2 - 2y0mx0 + m^2*x0^2)/b) - 1)
Run Code Online (Sandbox Code Playgroud)

获得交叉点的X值; 然后,将这些值插入到原始线方程中以获得Y值.

祝好运!