2015-09-20 3 views
0

У меня есть следующий сюжет, сгенерированный с использованием Matlab. Красные линии генерируются с использованием функции Voronoi и черного прямоугольного прямоугольника с использованием функции прямоугольника.Получение координат многоугольника с использованием Matlab

(1) Я хочу, чтобы получить координаты полигонов внутри прямоугольников (координаты по часовой стрелке или против часовой стрелки направления) Matlab кода, приведенных ниже:

a=12.5e-3; 
b=30e-3; 
vcellsx=[0.0105089656997958,0.00245744063039010,0.00770055845183299,0.00439574383828746,0.00946500286388402]; 
vcellsy=[0.00762846536914593,0.00753251573928093,0.0141986654670819,0.0249248588368887,0.0226118728283549]; 

[vx,vy]=voronoi(vcellsx,vcellsy); 
plot(vx,vy,'r-','LineWidth', 2); 

hold on 
rectangle('Position',[0 0 a b]) 

[править] Ищу координаты домены, как показано на рисунке. https://drive.google.com/file/d/0BzxYGJhdC2A4Vl9jUTVDU204NEk/view

+0

Что вы точно означает, удаляя строки вне прямоугольника? Некоторая часть линий или целых открытых линий? – NKN

ответ

0

Здесь вы можете использовать,

[V,C] = voronoin(X) 

функции, которая возвращает Вороной вершины V и клетка Вороного C из диаграммы Вороного X.

После того как вы получили C, вам необходимо пройти проверку на предмет наличия ячеек, не включая 1, так как те, которые включают 1 представляют открытые пространства.

Наконец, углы можно найти в v(c{i},1),v(c{i},2).

К концу кода можно добавить следующий код.

x = [vcellsx' vcellsy']; 
[v,c] = voronoin(x); 
for i = 1:length(c) 
    if all(c{i}~=1) 
     patch(v(c{i},1),v(c{i},2),i); % use color i. 
    end 
end 

И вот результат:

enter image description here

+0

Я ищу координаты доменов, как показано на рисунке. https://drive.google.com/file/d/0BzxYGJhdC2A4Vl9jUTVDU204NEk/view?usp=sharing –

Смежные вопросы