Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function virus_spread_viz()
- [X,Y,Z,Q] = get_earth_surface();
- %C = get_surf_color(Q);
- C = get_surf_color_random(Q);
- clf
- [xx,yy,zz] = get_curved_lines();
- hLine = zeros(size(xx,1),1);
- for i=1:numel(hLine)
- hLine(i) = line(xx(i,:),yy(i,:),zz(i,:), 'Color','m', ...
- 'LineWidth',2, 'LineStyle','-');
- end
- hTxt = text(9,20,3.5, '', 'BackgroundColor',[.7 .9 .7]);
- hSurf = surface('XData',X, 'YData',Y, 'ZData',Z.*0.5, ...
- 'CData',C);
- axis tight; grid on; box on; view(-15,30)
- zlim([0 6]); %axis([1 40 1 20 0 10])
- for i=1:100
- C = get_surf_color_random(Q);
- set(hSurf, 'CData',C)
- set(hLine(1), 'Visible',get_visibility())
- set(hLine(2), 'Color',rand(1,3))
- set(hLine(3), 'LineWidth',randi([1,5]))
- set(hTxt, 'String',get_string_random())
- drawnow
- pause(0.1)
- end
- end
- function [X,Y,Z,Q] = get_earth_surface()
- % lets create earth surface (X/Y/Z coords)
- [X,Y] = meshgrid(1:20,1:40);
- % continents
- Q = zeros(size(X));
- Q(20:35,3:7) = 1; % north america
- Q(5:10,5:7) = 2; % south america
- Q(7:17,10:14) = 3; % africa
- Q(21:33,11:18) = 4; % europe
- Q(9:12,17:19) = 5; % australia
- Z = zeros(size(X));
- Z(Q>0) = 1;
- end
- function C = get_surf_color_random(Q)
- sz = [40,20];
- C_r = zeros(sz);
- C_g = zeros(sz);
- C_b = ones(sz);
- for i=1:5
- C_r(Q==i) = rand();
- C_g(Q==i) = rand();
- C_b(Q==i) = rand();
- end
- C = cat(3, C_r,C_g,C_b);
- end
- function [x,y,z] = get_curved_lines()
- t = linspace(1,3,30);
- x = zeros(3,30);
- y = zeros(3,30);
- z = zeros(3,30);
- % [7,7,0] -> [15,30,0]
- x(1,:) = spline(1:3, [7,11,15], t);
- y(1,:) = spline(1:3, [7,18.5,30], t);
- z(1,:) = spline(1:3, [0,2,0], t);
- % [5,30,0] -> [13,10,0]
- x(2,:) = spline(1:3, [5,9,13], t);
- y(2,:) = spline(1:3, [30,20,10], t);
- z(2,:) = spline(1:3, [0,3,0], t);
- % [18,10,0] -> [16,26,0]
- x(3,:) = spline(1:3, [18,17,16], t);
- y(3,:) = spline(1:3, [10,18,26], t);
- z(3,:) = spline(1:3, [0,2,0], t);
- end
- function str = get_string_random()
- alpha = 'a':'z';
- str = alpha(randperm(numel(alpha),randi([4 10])));
- end
- function vis = get_visibility()
- states = {'on','off'};
- vis = states{randi(numel(states))};
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement