6-2 ���������������������������

¥H¹q¼v¤è¦¡¨Ó²£¥Í°Êµe¡A¥i¥Ñ¤U¦C¨â­Ó¨BÆJ¨Ó¹F¦¨¡G

  1. ¨Ï¥Î getframe «ü¥O¨Ó§ì¨ú¹Ï§Î°µ¬°¹q¼vªºµe­±¡A¨C­Óµe­±³£¬O¥H¤@­Ó¦æ¦V¶qªº¤è¦¡¡A¸m©ñ©ó¾ã­Ó¥Nªí¹q¼vªº¯x°}¡C
  2. ¨Ï¥Î movie «ü¥O¨Ó¼½©ñ¹q¼v¡A¨Ã¥i«ü©w¼½©ñªº­«½Æ¦¸¼Æ¤Î¨C¬í¼½©ñªºµe­±¼Æ¥Ø¡C

¦b¤U¨Ò¤¤¡A§Ú­Ì±N¥H¤£¦Pªº¨¤«×¨ÓÅã¥Ü peaks ¨ç¼Æ¡A¨Ã±N¨äµ²ªG¥H¹q¼vªº¤è¦¡¨Ó§e²{°Êµe¡C

Example 1: 06-°Êµe»s§@/movie01.mclear M % ²M°£¹q¼v¸ê®Æ¯x°} M n = 50; % §ì¨ú 50 ­Óµe­± figure('Renderer','zbuffer'); % Only used in MS Windows peaks; fprintf('§ì¨úµe­±¤¤...\n'); for i = 1:n view([-37.5+i*360/n, 30]); % §ïÅÜÆ[´ú¨¤«× M(i) = getframe; % §ì¨úµe­±¡A¨Ã¦s¤J¹q¼v¸ê®Æ¯x°} M end fprintf('¼½©ñ¹q¼v¤¤...\n'); movie(M, 3); % ¼½©ñ¹q¼v¤T¦¸ z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ... - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ... - 1/3*exp(-(x+1).^2 - y.^2) §ì¨úµe­±¤¤... ¼½©ñ¹q¼v¤¤...

¡]¤W¹Ï¶È¶È¨q¥X³Ì«á¤@­Ó frame ªºµe­±¡C§A¥²¶·¿Ë¦Û°õ¦æ¦¹½d¨Ò¡A¤~¯à¬Ý¨ì°Êµe®ÄªG¡C¡^

¦b¤W­z½d¨Ò¤¤¡A§Ú­Ì¨Ï¥Î getframe «ü¥O¨Ó±N¹Ï§Îµøµ¡ªº¸ê®ÆÀx¦s¨ì¯x°} M¡A³Ì«á¨Ï¥Î movie(M, 3) ¨Ó³sÄò¼½©ñ¦s©ñ©ó¯x°} M ªº¹q¼v¸ê®Æ¤T¦¸¡C

¥H¤U³o­Ó½d¨Ò¡A«h¬O±N peaks ¨ç¼Æµe¦b¶ê½L¤W¡AµM«á¦AÅÜ´«¦¹¨ç¼Æªº°ª«×¡A¥H°Êµe§e²{¡G

Example 2: 06-°Êµe»s§@/movie02.mclear M % ²M°£¹q¼v¸ê®Æ¯x°} M r=linspace(0, 4, 30); % ¶ê½Lªº¥b®| t=linspace(0, 2*pi, 50); % ¶ê½Lªº·¥®y¼Ð¨¤«× [rr, tt]=meshgrid(r, t); xx=rr.*cos(tt); % ²£¥Í¶ê½L¤Wªº x ®y¼Ð yy=rr.*sin(tt); % ²£¥Í¶ê½L¤Wªº y ®y¼Ð zz=peaks(xx,yy); % ²£¥Í peaks ¦b·¥®y¼Ðªº¸ê®Æ n = 30; % §ì¨ú 30 ­Óµe­± scale = cos(linspace(0, 2*pi, n)); figure('Renderer','zbuffer'); % Only used in MS Windows fprintf('§ì¨úµe­±¤¤...\n'); for i = 1:n surf(xx, yy, zz*scale(i)); % µe¹Ï axis([-inf inf -inf inf -8.5 8.5]); % ©T©w¹Ï¶bªº½d³ò box on M(i) = getframe; % §ì¨úµe­±¡A¨Ã¦s¤J¹q¼v¸ê®Æ¯x°} M end fprintf('¼½©ñ¹q¼v¤¤...\n'); movie(M, 5); % ¼½©ñ¹q¼v 5 ¦¸§ì¨úµe­±¤¤... ¼½©ñ¹q¼v¤¤...

¡]¤W¹Ï¶È¶È¨q¥X³Ì«á¤@­Ó frame ªºµe­±¡C§A¥²¶·¿Ë¦Û°õ¦æ¦¹½d¨Ò¡A¤~¯à¬Ý¨ì°Êµe®ÄªG¡C¡^

¤U­±³o­Ó½d¨Ò¡A«h¬O§ïÅܼv¹³ªº¦â½L¯x°}¡AÅý¼v¹³¥X²{¡u±q¥¿¤ùÅܨì­t¤ù¡vªº®ÄªG¡AµM«á¦AÅܦ^¨Ó¡G

Example 3: 06-°Êµe»s§@/movie03.mclear M % ²M°£¹q¼v¸ê®Æ¯x°} M load clown.mat image(X); colormap(map); % µe¥X¤p¤¡Áy n = 30; % §ì¨ú 30 ­Óµe­± scale = cos(linspace(0, 2*pi, n)); fprintf('§ì¨úµe­±¤¤...\n'); for i = 1:n colormap(((i-1)*(1-map)+(n-i)*map)/(n-1)); % §ïÅܦâ½L¯x°} M(i) = getframe; % §ì¨úµe­±¡A¨Ã¦s¤J¹q¼v¸ê®Æ¯x°} M end fprintf('¼½©ñ¹q¼v¤¤...\n'); movie(M, -5); % ¼½©ñ¹q¼v 5 ¦¸§ì¨úµe­±¤¤... ¼½©ñ¹q¼v¤¤...

¡]¤W¹Ï¶È¶È¨q¥X³Ì«á¤@­Ó frame ªºµe­±¡C§A¥²¶·¿Ë¦Û°õ¦æ¦¹½d¨Ò¡A¤~¯à¬Ý¨ì°Êµe®ÄªG¡C¡^

¦b¤W­z½d¨Ò¤¤¡A¥¿¤ù¡]¦p¤U²Ä¤@¹Ï¡^ªº¦â½L¯x°}¬O map¡A¦Ó 1-map «h¬O­t¤ù¡]¦p¤U²Ä¤G¹Ï¡^ªº¦â½L¯x°}¡A¦]¦¹§Ú­Ì¦b§ì¼v¤ù®É¡AÅý¦â½L¯x°}¶i¦æº¥¶i¦¡ªºÅܤơA¦]¦¹§e²{ªº¹q¼v´N¦³¡u±q¥¿¤ùÅܨì­t¤ù¡vªº®ÄªG¡C¥t¥~¡Amovie(M, -5) ¥Nªí¹q¼v±N¼½©ñ 5 ¦¸¡A¦ý¥Ñ©ó²Ä¤G­Ó°Ñ¼Æ¬O­t¼Æ¡A©Ò¥H¨C¦¸¼½©ñ·|¥]§t¤@¦¸¡u¥¿¦V¼½©ñ¡v¤Î¤@¦¸¡u°f¦V¼½©ñ¡v¡C


MATLABµ{¦¡³]­p¡G¤Jªù½g