当两个椭圆都旋转时,找到一个椭圆与另一个椭圆的交点 [英] Finding Intersection of an ellipse with another ellipse when both are rotated
问题描述
第一个椭圆的等式=>
(((x*cos(A)+y*sin(A)-H1)^2)/(a1^2))+(((x*sin(A)-y*cos(A)-K1)^2)/(b1^2))=1
第二个椭圆的等式=>
(((x*cos(B)+y*sin(B)-H2)^2)/(a2^2))+(((x*sin(B)-y*cos(B)-K2)^2)/(b2^2))=1
我知道椭圆会在
I know that the ellipse will intersect at
- 一个点
- 两点
- 三点
- 四点
- 根本没有路口
是否有一组通用的方程式可以解决相同的问题.
推荐答案
可以通过查找3x3对称矩阵的特征值来完成,而无需(明确地)求解四次.
It can be done by finding the eigenvalues of a 3x3 symmetric matrix, without (explicitly) solving quartics.
肯尼思·希尔(Kenneth J. Hill)在Graphics Gems V中有一篇论文,标题为基于矩阵的椭圆几何.该论文的大部分内容都可以在Google的书籍中找到,但作者的摘要是1995年从新闻组sci.math和comp.graphics.algorithms存档的.您可以在
There is a paper in Graphics Gems V by Kenneth J. Hill titled Matrix-based Ellipse Geometry. Most of that paper is available on Google books, but there is a summary by the author archived from newsgroups sci.math and comp.graphics.algorithms in 1995. You can find it here--look about 2/3 of the way down the page.
关键思想是,如果放置圆锥形,则任何二维圆锥形不仅是椭圆形,而且矩阵形式如下:
The key idea is that if you put the conics, any 2d conic not just ellipses, in matrix form like this:
[ A B D ] [ x ]
[x y 1] [ B C E ] [ y ] = [ 0 ]
[ D E F ] [ 1 ]
或 transpose(X).C.X = 0
,那么您就可以玩一些游戏了. C
被称为圆锥的特征矩阵.
or transpose(X).C.X = 0
, then you can play some games. C
is called the characteristic matrix of the conic.
因此,如果 C1
和 C2
是椭圆的特征矩阵,并且 xi
是交点,则 xi
是任何圆锥曲线与特征矩阵 C1 +λC2
的交点.如果将lambda选择为特征值,则 C1 + lambda C2
是简并的,可以解释为一组线.剩下的就是将从退化特征矩阵中提取的线与原始椭圆相交,并排除无关的解.
So if C1
and C2
are characteristic matrices of your ellipses, and xi
is an intersection point, then xi
is an intersection point of any conic with a characteristic matrix C1 + lambda C2
. If lambda is chosen as an eigenvalue, then C1 + lambda C2
is degenerate and can be interpreted as a set of lines. All that is left is intersect the lines extracted from the degenerate characteristic matrices with the original ellipses and throwing out extraneous solutions.
这篇关于当两个椭圆都旋转时,找到一个椭圆与另一个椭圆的交点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!