I need to call up a vertex from polyshape command
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Bruce Griffin
am 29 Feb. 2024
Verschoben: Steven Lord
am 29 Feb. 2024
Him im looking for a simple command or code to call up a vertex from a polyshape array.
Specifically I want to draw a line inside a polyshape that comes from one vertex to another vertex. I want to call these vertexs randomly then have Matlabe draw a line between them. my starting code is the following
pgon=polyshape([0,5*cosd(18),5*cosd(-54),-5*cosd(-54),-5*cosd(18)],[5,5*sind(18),5*sind(-54),5*sind(-54),5*sind(18)]);
plot(pgon)
0 Kommentare
Akzeptierte Antwort
William Rose
am 29 Feb. 2024
If you have a polygon pgon, of unknown size, get the number of vertices:
pgon=polyshape(cosd(0:40:320),sind(0:40:320));
plot(pgon); hold on; axis equal; axis tight
N=length(pgon.Vertices);
fprintf('Number of vertices=%d.\n',N)
Use N to select vertices randomly:
vpair=randi(N,[1,2]); %return 2 random numers between 1 and N inclusive
Draw a line beteween the 2 vertices
plot(pgon.Vertices(vpair,1),pgon.Vertices(vpair,2),'-r')
The randomly chosen pair could be the same vertex twice, or adjacent vertices. You could add code to prevent this.
Good luck.
3 Kommentare
William Rose
am 29 Feb. 2024
Putting it all together:
pgon=polyshape(cosd(0:20:340),sind(0:20:340));
plot(pgon); hold on; axis equal; axis tight
N=length(pgon.Vertices);
M=8; % number of lines to draw between randomly chosen vertices
for i=1:M
delta=1;
while delta<2,
vpair=randi(N,[1,2]);
delta=mod(abs(vpair(2)-vpair(1)),N);
end
plot(pgon.Vertices(vpair,1),pgon.Vertices(vpair,2),'-r')
end
OK.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Elementary Polygons 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!