我有一个以 (0,0) 为中心的椭圆,边界矩形是 x = [-5,5],y = [-6,6]。椭圆在 (-5,3)、(-2.5,6)、(2.5,-6) 和 (5,-3) 处与矩形相交
我对椭圆一无所知,但我唯一需要知道的是主轴旋转的角度。
似乎答案必须非常简单,但我只是没有看到它...感谢您的帮助!
如果 (0, 0) 是中心,那么你的椭圆方程是:
F(x, y) = Ax^2 +By^2 + Cxy + D = 0
对于任何给定的椭圆,并非所有系数 A、B、C 和 D 都是唯一确定的。可以将方程乘以任何非零常数并获得相同椭圆的新方程。
你有 4 个点,给你 4 个方程,但由于这些点是两对对称点,这些方程不会是独立的。你会得到 2 个独立的方程。通过使用椭圆与软管点中的矩形相切(这就是我的理解)这一事实,您可以得到另外两个方程。
所以如果 F(x, y) = Ax^2 +By^2 + Cxy + D 你的条件是:
dF/dx = 0 in points (-2.5,6) and (2.5,-6)
dF/dy = 0 in points点 (-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
仍然不是所有 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' = (BA)sin(2φ) + Ccos(2φ)
现在你的问题是:对于什么角度 φ 系数 C' 消失(等于零)
有不止一个角度 φ 因为有不止一个轴。在主轴 B' > A' 的情况下
椭圆的梯度与沿椭圆一侧的边界矩形相交的梯度相同。在您的情况下,这是从 (-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度的角度
我使用类似的方法来解决另一个椭圆问题:
http://successfulsoftware.net/2008/07/18/a-mathematical-digression/
http://successfulsoftware.net/2008/08/25/a-mathematical-digression-revisited/
也可以看看: