如何使用MATLAB检查一个椭圆在另一个椭圆内?

时间:2019-07-08 00:54:37

标签: matlab geometry ellipse

我正在尝试查找两个椭圆的状态。

我尝试使用以下代码找到两个椭圆的交点:

syms x y
a=4;
b=2;
ellipse1 = ((x+10).^2/a.^2)+(y.^2/b.^2)==1;
a1=6;
b1=5;
ellipse2 = ((x-10).^2/a1.^2)+(y.^2/b1.^2)==1;
c = solve(ellipse1,ellipse2);

dX = double(c.x);
dY = double(c.y);

如果省略号不有趣,我得到虚值解。如下所示,有两种可能的假想解决方案:

Seperated Ellipses

One ellipse is inside the another

如何找到椭圆相交或不相交?如果不相交,椭圆(内部或分隔)的位置将是什么? 任何人都可以回复吗?

提前谢谢! Manu

1 个答案:

答案 0 :(得分:3)

假设您已经知道椭圆不相交(即您从solve()函数获得了一个假想的值解)。

检查ellipse1的中心(x1,x2)是否在ellipse2内

((x1-c1).^2/a1.^2)+((y1-d1).^2/b1.^2) < 1

其中(c1,d1) ellipse2

的中心
  • 如果是,您有第二种情况。

  • 否则,您就有第一种情况。

我们知道这一点是因为

  • 如果 ellipse1 内部的任何部分在内部 ellipse2

  • ,我们知道两个椭圆不相交,

  

那么一个椭圆必须完全包含在另一个椭圆中

注意:根据该测试,我们不知道哪个椭圆在另一个椭圆内。