Контур двух пересекающихся кривых в Matlab - PullRequest
0 голосов
/ 31 августа 2018

Я пытаюсь получить координаты 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 голосов
/ 31 августа 2018

Если у вас 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...