/ / Generowanie małego okręgu wewnątrz dużego okręgu i generowanie różnych losowych liczb w ich promieniu - matlab

Generowanie małego koła wewnątrz dużego koła i generowanie różnych liczb losowych w ich promieniu - matlab

Czy możliwe jest wygenerowanie małego okręgupromień r i środek inny niż (0,0) wewnątrz dużego okręgu o promieniu s i środku (0,0) i tworzą różną liczbę losowych punktów wewnątrz nich, na przykład 10 punktów w promieniu r i 100 punktów w promieniu s. Czy ktoś mógłby mi pomóc?

Odpowiedzi:

2 dla odpowiedzi № 1

Sprawdź następujący segment kodu. Może być konieczna aktualizacja zgodnie z wymaganiami. Jako przykład zastanów się, jak uniknąć przekraczania kręgów.

clear all;

i = 0;
j = 0;
r = 100;
nc = 2;

figure;
hold on;
axis equal;

viscircles([0 0], r, "EdgeColor","r")

while i < nc
rr = randi([-r r]);
rc = randi([-r r]);
d = pdist([rc rr; 0 0],"euclidean");
r2 = randi([20 300]);
if d<r && d+r2<r
viscircles([rc rr], r2, "EdgeColor","g")
c = [rand rand rand];
np = randi([1 10]);
while j<np
pc = randi([rc-r2 rc+r2]);
pr = randi([rr-r2 rr+r2]);
d2 = pdist([pc pr; rc rr],"euclidean");
if d2<r2
scatter(pc,pr,30,c,"filled");
j = j+1;
end
end
i = i+1;
end
end

Przykładowe wyniki: wprowadź opis obrazu tutaj