0001 function fancy(select)
0002
0003
0004
0005
0006
0007
0008
0009 switch(select),
0010
0011 case(1),
0012 figure
0013 resol = 50;
0014 resol2 = 25;
0015 blur = 13;
0016 blur2 = 5;
0017
0018 set(gcf,'DoubleBuffer','on', 'Color',[0 0 0]);
0019 colormap(autumn(256));
0020
0021 [X1,Y1,Z1] = sphere(resol-1);
0022 C1 = conv2(Z1(reshape(randperm(resol.^2), resol, resol)), gausswin(blur) * gausswin(blur)', 'same');
0023 C1 = staggermatrix(C1);
0024
0025 [TH, R] = meshgrid(linspace(0,2*pi,resol), linspace(1.5, 2.5, resol2));
0026 [X2,Y2] = pol2cart(TH', R');
0027 Z2 = zeros(resol, resol2);
0028 A2 = conv2(rand(resol,resol2), gausswin(blur2) * gausswin(blur2)','same');
0029 A2 = staggermatrix(A2')';
0030 A2(1,:) = A2(end,:);
0031
0032 h1 = surf(X1,Y1,Z1,C1);
0033 set(h1, 'Ambient', 0.6);
0034
0035 hold on
0036 h2 = surf(X2,Y2,Z2);
0037 set(h2, 'FaceAlpha','interp', 'AlphaData', A2);
0038
0039 shading interp; lighting gouraud; material dull;
0040 axis equal; axis off;
0041 set(gca,'CameraViewAngleMode','manual', 'CameraViewAngle', 7);
0042 lightangle(90,40);
0043
0044 set(h2, 'FaceColor', [0.7, 0.7, 0.7]);
0045
0046
0047 view([0,15]);
0048 for steps = 1:72,
0049 camorbit(10,0); drawnow;
0050 pause(0.010);
0051 end
0052
0053
0054 case(2),
0055 figure; load topo;
0056 topo = padmatrix(topo, [0 0 0 10], -3500);
0057
0058 [X,Y,Z] = sphere(180);
0059 h1 = surf(X,Y,Z);
0060
0061 set(h1, 'FaceColor', 'texture', 'EdgeColor', 'none', 'FaceAlpha', 'texture', 'AlphaDataMapping', 'none');
0062 set(h1, 'CData', topo, 'AlphaData', (double(topo > 0) .* 0.6) + 0.4);
0063
0064 colormap(topomap1);
0065 axis equal;
0066 set(gca, 'CameraViewAngleMode', 'manual');
0067 axis off;
0068
0069 lt1 = lightangle(0,0); set(lt1, 'Color', [1, 1, 1]);
0070
0071
0072 view([0,5]);
0073 for step = 1:24,
0074 camOrbit(15, 0); drawnow;
0075 end
0076
0077
0078 case(3),
0079 figure; load penny;
0080 P = fliplr(P);
0081 coords = -63:64; [X,Y] = meshgrid(coords);
0082 coppercolor = copper(2); coppercolor = coppercolor(2,:);
0083
0084 mask = double(sqrt((X-0).^2 + (Y-12).^2) < 80);
0085 mask(~mask) = NaN;
0086 surf(X,Y,mask.*P, 'FaceColor', coppercolor, 'EdgeColor', 'none');
0087
0088 axis equal; axis off;
0089 set(gca,'CameraViewAngleMode','manual', 'CameraViewAngle', 9, 'DataAspectRatio', [1 1 30]);
0090
0091 material metal; lighting gouraud;
0092 lt1 = lightangle(90, 10); set(lt1, 'Color', 'r');
0093 lt2 = lightangle(180, 30); set(lt2, 'Color', 'g');
0094 lt3 = lightangle(270, 60); set(lt3, 'Color', 'b');
0095 lt4 = lightangle(0, -90); set(lt4, 'Color', 'w');
0096
0097
0098 view([160,50]);
0099 for step = 1:71
0100 camorbit(3, 20); drawnow;
0101 end
0102
0103
0104 otherwise,
0105 error('Unknown selection.');
0106 end
0107
0108
0109
0110 function A = staggermatrix(A)
0111
0112
0113
0114
0115 [M, N] = size(A);
0116 for row = 1:M
0117 shifts = randperm(N);
0118 A(row, :) = circshift(A(row, :), [1, shifts(1)]);
0119 end