Matlab: Comment calculer les sommets (coordonnées) de polygones dans le diagramme de Voronoï?

StackOverflow https://stackoverflow.com/questions/7819153

  •  26-10-2019
  •  | 
  •  

Question

I possède un fichier de fonction créé à la main qui est à tracer des lignes dans l'image, [img]=drawline(point1,point2,color,img). Il est utilisé pour connecter deux points qui sont à l'intérieur de l'image. Je me demande de créer le diagramme de Voronoï dans l'image (ne pas utiliser la fonction de tracé). Pour le moment, je suis en train de montrer les lignes dans l'image, mais je ne sais pas comment obtenir les sommets des bords du polygone.

J'utilise des codes de test:

x=[50 70 70 30 40 ];% this is just some simple values for testing, 
y=[50 30 90 30 80 ];% in further stage, i plan to use `x=rand(n,1)*200`.
img=zeros(200,200,3);
color=[255 0 0];
[vx,vy]=voronoi(x,y); 

Je ne sais jusqu'à ce que ci-dessus, à côté je pense que je dois utiliser for loop pour aligner les sommets vers le haut. aucune idée comment start.And je suis aussi coincé dans la façon de résoudre les effets négatifs et des problèmes infinis, si je dois les afficher dans l'image (coordonnées de pixels).

Était-ce utile?

La solution

En supposant que vous avez cette fonction drawline qui trace des lignes dans les images, voici comment vous en boucle sur les bords du diagramme de Voronoï d'un ensemble de points:

%# set of points and voronoi diagram
X = rand(10,1)*200; Y = rand(10,1)*200;
[vx,vy] = voronoi(X,Y);

%# vertices connecting the edges
p1 = [vx(1,:);vy(1,:)];     % columns are "from" points
p2 = [vx(2,:);vy(2,:)];     % columns are "to" points

%# draw edges on top of image matrix
img = zeros(200,200,3);
clr = [255 0 0];
for i=1:size(vx,2)
    img = drawline(p1(:,i), p2(:,i), clr, img);
end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top