Buongiorno a tutti.
Ho un problema circa l'imposizione di condizioni multiple in un ciclo while.
Con questo script voglio generare un numero a piacere di punti che stiano all'interno di un certo poligono e contemporaneamente distino al massimo Dmax (distanza massima che posso imporre) da un certo punto che definisco (XP e YP). I punti saranno quindi nell'intersezione tra questo poligono e un cerchio di dato centro e raggio.
xv e yv contengono i vertici del poligono. x(i) e y(i) sono le coordinate dei punti generati. Vorrei ora imporre che le d(i) siano minori di un certo limite, ma non riesco. Riporto lo script che genera i punti e che funziona. Nell'immagine si capisce bene il problema (vorrei 100 punti solo nel triangolino in alto a destra del quadrilatero).
Grazie
xv =[
0
1
2
0]
yv =[
0
0
3
2]
xmin = min (xv);
ymin = min (yv);
xmax = max (xv);
ymax = max (yv);
XP=3
YP=4
%generazione punti nel poligono
numPointsIn = 100;
for i = 1:numPointsIn
flagIsIn = 0;
while ~flagIsIn
x(i) = xmin + (xmax-xmin).*rand(1);
y(i) = ymin + (ymax-ymin).*rand(1);
flagIsIn = inpolygon (x(i),y(i),xv,yv);
d(i) = sqrt((x(i)-XP)^2+(y(i)-YP)^2);
end
end
R1=2.5
th = 0:pi/50:2*pi;
xunit = R1 * cos(th) + XP;
yunit = R1 * sin(th) + YP;
figure
plot(xv,yv,x,y,'r*'); hold on;
plot(XP,YP,'bo');hold on
h = plot(xunit, yunit);
Allegati: