Find polygon in voronoi diagram

7 Ansichten (letzte 30 Tage)
Jonathan Mayers
Jonathan Mayers am 20 Jul. 2016
Kommentiert: HG am 14 Jun. 2021
Hi all,
If I generate a Voronoi diagram via the below code, how would I find the points that form a polygon from the diagram?
lambda = 10;
npoints = poissrnd(lambda);
pproc = rand(npoints,2);
x = pproc(:,1);
y = pproc(:,2);
[vx,vy] = voronoi(x,y);
plot(vx,vy);
vx and vy are 2-by-N matrices where N varies;

Akzeptierte Antwort

Jonathan Mayers
Jonathan Mayers am 20 Jul. 2016
Hi all,
The following code solves the problem.
clc; close all; clearvars;
lambda = 10;
npoints = poissrnd(lambda);
pproc = rand(npoints,2);
x = pproc(:,1);
y = pproc(:,2);
[vx,vy] = voronoi(x,y);
plot(vx,vy,'k-'); hold on; axis([0 2 0 2]);
% Perform DT on original x and y
DT = delaunayTriangulation(x,y);
% V contains vertices
% R contains regions
[V,R] = voronoiDiagram(DT);
% Obtain vertices enclosing region 1
coord = V(R{1},:);
% for while loop
i = 2;
% Exclude infinite vertices
% Loop until no region has infinite vertices
while ismember(Inf,coord)
coord = V(R{i},:);
i = i + 1;
end
% Append the first vertex just to plot a complete polygon
coord = [coord;coord(1,:)];
% Plot the polygon
plot(coord(:,1),coord(:,2),'b-','linewidth',2);
The following image is an example output of the above code.
  2 Kommentare
Karishma q
Karishma q am 8 Mai 2019
How do I get the co-ordinates of each polygon separately? I tried adding a for loop which defines the number of regions, but I am still getting the vertices of region1. Also [vx, vy]=voronoi(x,y) provides all the coordinates, I want for the individual regions. Can you help me on this?

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Voronoi Diagram finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by