Matlab中两条相交曲线的轮廓

时间:2018-08-31 03:46:38

标签: matlab geometry

我试图通过两个或三个相交的圆来获取轮廓产生的x和y坐标,如图所示。这两个圆圈的坐标如下。

我们如何使用Matlab自动执行此操作?

我有数百个这样的数字。

我想要的只是获得最终形状的x和y坐标。

enter image description here

   X          Y
 ================
 1.0000         0
 0.9848    0.1736
 0.9397    0.3420
 0.8660    0.5000
 0.7660    0.6428
 0.6428    0.7660
 0.5000    0.8660
 0.3420    0.9397
 0.1736    0.9848
 0.0000    1.0000
-0.1736    0.9848
-0.3420    0.9397
-0.5000    0.8660
-0.6428    0.7660
-0.7660    0.6428
-0.8660    0.5000
-0.9397    0.3420
-0.9848    0.1736
-1.0000    0.0000
-0.9848   -0.1736
-0.9397   -0.3420
-0.8660   -0.5000
-0.7660   -0.6428
-0.6428   -0.7660
-0.5000   -0.8660
-0.3420   -0.9397
-0.1736   -0.9848
-0.0000   -1.0000
 0.1736   -0.9848
 0.3420   -0.9397
 0.5000   -0.8660
 0.6428   -0.7660
 0.7660   -0.6428
 0.8660   -0.5000
 0.9397   -0.3420
 0.9848   -0.1736
 1.0000   -0.0000

小圆圈的坐标:

   x          y
 ================
 1.4000         0
 1.3939    0.0695
 1.3759    0.1368
 1.3464    0.2000
 1.3064    0.2571
 1.2571    0.3064
 1.2000    0.3464
 1.1368    0.3759
 1.0695    0.3939
 1.0000    0.4000
 0.9305    0.3939
 0.8632    0.3759
 0.8000    0.3464
 0.7429    0.3064
 0.6936    0.2571
 0.6536    0.2000
 0.6241    0.1368
 0.6061    0.0695
 0.6000    0.0000
 0.6061   -0.0695
 0.6241   -0.1368
 0.6536   -0.2000
 0.6936   -0.2571
 0.7429   -0.3064
 0.8000   -0.3464
 0.8632   -0.3759
 0.9305   -0.3939
 1.0000   -0.4000
 1.0695   -0.3939
 1.1368   -0.3759
 1.2000   -0.3464
 1.2571   -0.3064
 1.3064   -0.2571
 1.3464   -0.2000
 1.3759   -0.1368
 1.3939   -0.0695
 1.4000   -0.0000

1 个答案:

答案 0 :(得分:1)

如果您具有MATLAB R2017b或更高版本,请使用the new polyshape type。它们具有unionintersect方法(问题是指“相交曲线”,但我感觉您正在寻找两种形状的结合)。看起来像:

p1 = [
 1.0000         0
 0.9848    0.1736
 0.9397    0.3420
 0.8660    0.5000
 0.7660    0.6428
 % ... etc.
 ];
p2 = [
 1.4000         0
 1.3939    0.0695
 1.3759    0.1368
 1.3464    0.2000
 1.3064    0.2571
 % ... etc.
 ];
p1 = polyshape(p1);
p2 = polyshape(p2);
p3 = union(p1,p2);

您可以使用plot绘制形状:

plot(p1)
hold on
plot(p2)
plot(p3)
axis equal