3D game chaos Code
3D Chaosgame on Matlab
function chaosgame3d(form,N)
function chaosgame3d(form,N) if nargin==0 form.name = 'Sierpinski tetrahedron'; form.polyg = [0 1 .5 .5 ; 0 0 sqrt(3)/2 sqrt(3)/6 ; 0 0 0 sqrt(2/3)]; form.frac = .5; form.keeppolyg = true; N = 100000; end xs = .5+rand/10; ys = .5+rand/10; zs = .5+rand/10; sp = size(form.polyg,2); idx = randperm(sp); x = zeros(1,N); y = zeros(1,N); z = zeros(1,N); c = zeros(1,N); if form.keeppolyg x(1:sp) = form.polyg(1,:); y(1:sp) = form.polyg(2,:); z(1:sp) = form.polyg(3,:); c(1:sp) = 1:sp; k = sp+1; else k = 1; end x(k) = form.frac*form.polyg(1,idx(1))+(1-form.frac)*xs; y(k) = form.frac*form.polyg(2,idx(1))+(1-form.frac)*ys; z(k) = form.frac*form.polyg(3,idx(1))+(1-form.frac)*zs; c(k) = idx(1); for n=k+1:N idx = randperm(sp); x(n) = form.frac*form.polyg(1,idx(1))+(1-form.frac)*x(n-1); y(n) = form.frac*form.polyg(2,idx(1))+(1-form.frac)*y(n-1); z(n) = form.frac*form.polyg(3,idx(1))+(1-form.frac)*z(n-1); c(n) = idx(1); end figure('color','w') mc = max(c); hold on cmap = hsv(mc); cmap = cmap(randperm(mc),:); for n = 1:mc idx = c==n; h(n) = plot3(x(idx),y(idx),z(idx),'k.'); set(h(n),'color',cmap(n,:)); end title(sprintf('%s (%d iterations)',form.name,N)) view(3); xlabel('x'); ylabel('y'); zlabel('z'); box on grid on axis equal on vis3d
Commentaires
Enregistrer un commentaire