在给定其边界矩形的情况下,如何找到椭圆的主轴的旋转角度?
我有一个以(0,0)为中心的椭圆,边界矩形是x = [-5,5],y = [-6,6]。椭圆在(-5,3),(-2.5,6),(2.5,-6)和(5,-3)处与矩形相交
我对椭圆一无所知,但我唯一需要知道的是主轴旋转的角度。
答案似乎必须非常简单,但我只是看不到...谢谢帮助!
解决方案
椭圆的坡度与沿椭圆的一侧具有边界矩形的相交的坡度相同。在情况下,这是椭圆上侧从(-2.5,6)到(5,-3)的线。那条线的垂直下落为9,水平走向为7.5.
因此,我们得到了以下直角三角形。
(-2.5,6) *----- |\x | \ | \ 9 | \ | \ | x\ +------* (5,-3) 7.5
我们要寻找的角度是x,这两个位置都相同。
我们可以将其计算为:
-1 tan (9/7.5)
这给我们带来了-50.19度的角度
如果(0,0)是中心,则椭圆方程为:
F(x,y)= Ax ^ 2 + By ^ 2 + Cxy + D = 0
对于任何给定的椭圆,并非唯一确定所有系数A,B,C和D。可以将方程乘以任何非零常数,并获得具有相同椭圆的新方程。
我们拥有4个点,为我们提供4个方程,但是由于这些点是两对对称点,因此这些方程将不会独立。我们将获得2个独立方程式。通过使用以下事实,可以得到另外2个等式,即椭圆与软管点中的矩形相切(这就是我的理解方式)。
因此,如果F(x,y)= Ax ^ 2 + By ^ 2 + Cxy + D条件是:
dF / dx = 0(-2.5,6)和(2.5,-6)点
dF / dy = 0(-5,3)和(5,-3)点
这是我们得到的四个线性方程式
F(5, -3) = 5^2 * A + (-3)^2 * B + (-15) * C + D = 0 F(2.5, -6) = (2.5)^2 * A + (-6)^2 * B + (-15) * C + D = 0 dF(2.5, -6)/dx = 2*(2.5) * A + (-6) * C = 0 dF(5, -3)/dy = 2*(-3) * B + 5 * C = 0
经过一些清洁:
25A + 9B - 15C + D = 0 //1 6.25A + 36B - 15C + D = 0 //2 5A - 6C = 0 //3 - 6B + 5C = 0 //4
仍然不是所有的四个方程都是独立的,这是一件好事。该集合是齐次的,如果它们是独立的,则将得到唯一但无用的解决方案A = 0,B = 0,C = 0,D = 0。
正如我之前所说,系数不是唯一确定的,因此我们可以根据自己的喜好设置系数之一,并摆脱一个方程式。例如
25A + 9B - 15C = 1 //1 5A - 6C = 0 //3 - 6B + 5C = 0 //4
从中得出:A = 4/75,B = 1/27,C = 2/45(D当然是-1)
现在,要确定角度,请应用坐标变换:
x = ξcos(φ) - ηsin(φ) y = ξsin(φ) + ηcos(φ)
(我只是忍不住使用这些字母:))
到方程F(x,y)= 0
F(x(ξ, η), y(ξ, η)) = G(ξ, η) = A (ξ^2cos^2(φ) + η^2sin^2(φ) - 2ξηcos(φ)sin(φ)) + B (ξ^2sin^2(φ) + η^2cos^2(φ) + 2ξηcos(φ)sin(φ)) + C (ξ^2cos(φ)sin(φ) - η^2cos(φ)sin(φ) + ξη(cos^2(φ) - sin^2(φ))) + D
使用这两个身份:
2cos(φ)sin(φ) = sin(2φ) cos^2(φ) - sin^2(φ) = cos(2φ)
我们将得到在G(,)中乘积的系数C'为:
C'=(B-A)sin(2)+ Ccos(2)
现在问题是:什么角度系数C'消失(等于零)
角度不止一个,因为轴不止一个。如果主轴B'> A'
- 设置椭圆的角度= 0
- 计算交叉点的4个点
- 算出计算出的相交点与所需相交点之间的误差(即将4个距离相加)。
- 如果误差太大,请使用割线法或者牛顿-拉普森法计算出椭圆的新角度,然后转到2.
我使用了类似的方法来解决另一个椭圆问题:
http://successfulsoftware.net/2008/07/18/a-mathematical-digression/
http://successfulsoftware.net/2008/08/25/a-mathematical-digression-revisited/
也可以看看:
http://en.wikipedia.org/wiki/Secant_method
http://en.wikipedia.org/wiki/Newton_Rhapson