我正在尝试查找两个椭圆的状态。
我尝试使用以下代码找到两个椭圆的交集:
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);
如果省略号不感兴趣,我会得到虚值解。想象的解决方案可能有两次机会,如下所示:
如何判断椭圆是否相交?如果不相交,椭圆的位置是什么(内部或分开)? 有人可以回复吗?
提前致谢! 马努
最佳答案
假设您已经知道椭圆不相交(即您从 solve()
函数获得了一个虚值解)。
检查椭圆1的中心(x1,x2)
是否在椭圆2内
((x1-c1).^2/a1.^2)+((y1-d1).^2/b1.^2) < 1
其中(c1,d1)
是椭圆2的中心
如果是,则属于第二种情况。
否则,您遇到的是第一种情况。
我们知道这一点是因为
如果 ellipse1 内部的任何部分位于 椭圆2
我们知道两个椭圆不相交,
Then one ellipse must be completely contained in the other
注意:根据此测试,我们不知道哪个椭圆在另一个椭圆内部。
关于matlab - 如何使用 MATLAB 检查一个椭圆是否在另一个椭圆内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56927210/