I need to call up a vertex from polyshape command
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Bruce Griffin
le 29 Fév 2024
Déplacé(e) : Steven Lord
le 29 Fév 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 commentaires
Réponse acceptée
William Rose
le 29 Fév 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 commentaires
William Rose
le 29 Fév 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.
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Elementary Polygons dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!