MATLAB: Wie leitet man die Eckpunkte (Koordinaten) von Polygonen im Voronoi -Diagramm ab?

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

  •  26-10-2019
  •  | 
  •  

Frage

Ich habe eine erstellte Funktionsdatei in der Hand, die zum Zeichnen von Zeilen im Bild zeichnet.[img]=drawline(point1,point2,color,img). Es wird verwendet, um zwei Punkte zu verbinden, die sich im Bild befinden. Ich werde gebeten, das Voronoi -Diagramm im Bild zu erstellen (nicht mit der Plotfunktion). Im Moment versuche ich, die Zeilen im Bild zu zeigen, aber ich weiß nicht, wie ich die Eckpunkte der Polygonkanten bekomme.

Ich habe einige Testcodes verwendet:

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); 

Ich weiß nur bis oben, als nächstes denke ich, ich muss verwenden for loop um die Eckpunkte hochzulegen. Nur keine Ahnung, wie ich anfangen soll. Und ich stecke auch fest, wie ich die negativen und unendlichen Probleme lösen kann, wenn ich sie im Bild anzeigen muss (Pixel -Koordinaten).

War es hilfreich?

Lösung

Angenommen, Sie haben das drawline Funktion, die Linien in Bildern zeichnet. So schleifen Sie über die Kanten des Voronoi -Diagramms einer Reihe von Punkten:

%# 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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top