发现问题的几何(最小)之间的距离两个任意椭圆非常困难。找到所有固定的一般问题点(最小/最大/鞍,不少于12分)确实被解决,但是算法的复杂和需要数千如果不是数以百万计的实现操作一次。
函数distanceEllipseEllipse()是基于一个更实用的算法自己限制到最小值的距离函数。它是基于反复寻找一个点和一个椭圆之间的距离,可以做分析(见我的其他帖子,distanceEllipsePoints.m)。该算法本身不是很健壮(经常发现一个局部最小值,这不是* *真正的距离)。
这个函数执行算法4倍,4种不同的初始值,从而大大提高了其鲁棒性。一些数值试验(与蛮力搜索)已经表明,真正的最小距离是在95%以上的情况下返回。实现的算法,用MATLAB JIT-accelerator可以加速到最大的程度,这使得它非常快,适合处理大型数据集需要这个计算。
这是一个描述的算法的实现
Ik-Sung金:“一个算法寻找两个之间的距离
%椭圆”。Commun。韩国的数学。Soc。21(2006),第三,pp.559 - 567。
一个copy-pastable例子(也在头的m文件):
% Ellipse1 Ellipse2(=圆)
一个= (2.0 - 1.0);
b = (0.5 - 1.0);
c = {(0, 0, 0), (2 2 0)};%的中心位置
u = {(1,0,0), (1,0,0)};%都面向在xy平面
v = {(0,1,0) (0,1,0)};%更容易想象他们
%画出椭圆
f = 0:0.01:2 *π;
E1 = [(1) * cos (f) + c {1} (1);b (1) * sin (f) + c {1} (2)];
E2 = [(2) * cos (f) + c {2} (1);b (2) * sin (f) + c {2} (2)];
图,等
情节(E1 (1:), E1 (2:),‘r’, E2 (1:), E2 (2:),“b”)
轴平等
%运行例程
[min_dist, fp_min fs_min] =…
distanceEllipseEllipse (a, b, c, u, v)
%绘制返回的最小距离
x = [(1) * cos (fp_min) + c {1} (1), (2) * cos (fs_min) + c {2} (1)];
y = [b(1) *罪(fp_min) + c {1} (2), (2) b *罪(fs_min) + c {2} (2)];
线(x, y,“颜色”,“k”)
这将生成给定的屏幕截图。
引用作为
Rody Oldenhuis (2023)。确定两个椭圆(3 d)之间的距离GitHub (https://github.com/rodyo/FEX-distanceEllipseEllipse/releases/tag/v1.3)。检索。
版本使用GitHub缺省分支不能下载
版本 | 发表 | 发布说明 | |
---|---|---|---|
1.3 | GitHub上看到这个版本发布说明:https://github.com/rodyo/FEX-distanceEllipseEllipse/releases/tag/v1.3 |
||
1.2.0.0 | (链接到Github) |
|
|
1.1.0.0 | 更新联系信息 |
||
1.0.0.0 |