matlab - Matlab中两条相交曲线的轮廓
问题描述
我试图通过两个或三个相交的圆圈来获得轮廓产生的 x 和 y 坐标,如图所示。两个圆的坐标如下所示。
我们如何使用 Matlab 自动执行此操作?
我有数百个这样的数字。
我想要的只是获得最终形状的 x 和 y 坐标。
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
解决方案
如果您有 MATLAB R2017b 或更高版本,请使用新polyshape
类型. 这些有一个union
和intersect
方法(问题是指“相交曲线”,但我感觉你正在寻找两种形状的结合)。这看起来像:
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
推荐阅读
- batch-file - 如何通过将文件夹名称添加到目标文件名来复制文件?
- salesforce - 批处理 Apex 标注限制
- php - 如何将 MTPROTO 代理添加到 Guzzle
- html - html自动连续滚动
- sql - 我如何在选择存储过程中更新 Click Counter of Record
- android - 使用 Gradle Kotlin DSL 在 settings.gradle.kts 中设置 gradle.ext
- python-3.x - 如何删除python中变量的最后一个字符?
- laravel - 如何检查数据库中是否存在数据
- javascript - 导入和使用 jellyjs 插件包
- javascript - 分享从另一个实时页面