Effacer les filtres
Effacer les filtres

I need to call up a vertex from polyshape command

1 vue (au cours des 30 derniers jours)
Bruce Griffin
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)

Réponse acceptée

William Rose
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)
Number of vertices=9.
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
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.
Bruce Griffin
Bruce Griffin le 29 Fév 2024
Déplacé(e) : Steven Lord le 29 Fév 2024
Thank you very much. I appreciate your responce.

Connectez-vous pour commenter.

Plus de réponses (0)

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!

Translated by