31 lines
561 B
Mathematica
31 lines
561 B
Mathematica
|
function data = crescentfullmoon(N, r1, r2, r3)
|
||
|
|
||
|
if nargin < 1
|
||
|
N = 1000;
|
||
|
end
|
||
|
if mod(N,4) ~= 0
|
||
|
N = round(N/4) * 4;
|
||
|
end
|
||
|
if nargin < 2
|
||
|
r1 = 5;
|
||
|
end
|
||
|
if nargin < 3
|
||
|
r2 = 10;
|
||
|
end
|
||
|
if nargin < 4
|
||
|
r3 = 15;
|
||
|
end
|
||
|
|
||
|
N1 = N/4;
|
||
|
N2 = N-N1;
|
||
|
|
||
|
phi1 = rand(N1,1) * 2 * pi;
|
||
|
R1 = sqrt(rand(N1, 1));
|
||
|
moon = [cos(phi1) .* R1 * r1 sin(phi1) .* R1 * r1 zeros(N1,1)];
|
||
|
|
||
|
d = r3 - r2;
|
||
|
phi2 = pi + rand(N2,1) * pi;
|
||
|
R2 = sqrt(rand(N2,1));
|
||
|
crescent = [cos(phi2) .* (r2 + R2 * d) sin(phi2) .* (r2 + R2 * d) ones(N2,1)];
|
||
|
|
||
|
data = [moon/2; crescent/2];
|