Lại nói về tạo flash bằng metapost và LaTeX – Bài 1

Sở dĩ phải nói đi nói lại một phần sợ bị quên cách thực hiện. Để không nhàm chán, chúng tôi chọn một bài tập mới.

Trong khuôn khổ Toán học ta có thể vẽ  một đường tròn có tâm tại gốc toạ độ, chia đường tròn làm 360 phần bằng nhau thành một thang chia vạch. Nếu số vạch chia hết cho 15 ta vẽ một vạch đậm, nếu số vạch chia hết cho 5 ta vẽ một vạch lợt và viết một số bằng số vạch chia cho 5.
dh1Sau đó ta vẽ một tia có gốc trùng với gốc toạ độ, cho tia này chạy mỗi giây đi đúng một vạch ta được một đồng hồ bấm giây.

 Cách thực hiện như sau:

Tạo một file metapost đặt tên là dongho.mp. gói geometriesyr16.mp các bạn download từ http://melusine.eu.org/

input geometriesyr16;

hinhdongho=1.5;
vardef dongho=
  save $;
  picture $;
  pair tamdongho;
  tamdongho=(0,0);
  path chuvidongho;
  chuvidongho=cercles(tamdongho,hinhdongho*cm);
  $=image(
    trace chuvidongho;
    for i=0 upto 59:
      if (i mod 5)=0:
	if (i mod 15)=0:
	  trace pointarc(chuvidongho,6*i)--(pointarc(chuvidongho,6*i) shifted%
	    (7*unitvector(tamdongho-pointarc(chuvidongho,6*i)))) withpen%
	  pencircle scaled 3bp;
	else:
	  trace pointarc(chuvidongho,6*i)--(pointarc(chuvidongho,6*i) shifted%
	    (5*unitvector(tamdongho-pointarc(chuvidongho,6*i)))) withpen%
	  pencircle scaled 1.5bp;
	fi;
      else:
	trace pointarc(chuvidongho,6*i)--(pointarc(chuvidongho,6*i) shifted %
	  (3*unitvector(tamdongho-pointarc(chuvidongho,6*i))));
      fi;
    endfor;
    path thangchiado;
    thangchiado=cercles(tamdongho,hinhdongho*cm-12*abs(unitvector(%
	  tamdongho-pointarc(chuvidongho,0))));
    for i=1 upto 12:
      label(format("%10f",i),pointarc(thangchiado,90-30*i));
    endfor;
    marque_p:="plein";
    pointe(tamdongho);
    marque_p:="rien";
    );
  $
enddef;

vardef Dongho(expr bb)=
  save $;
  picture $;
  path kimgiay;
  $=image(
    trace dongho;
    kimgiay=tamdongho--(pointarc(chuvidongho,0) shifted (7*unitvector(%
	  tamdongho-pointarc(chuvidongho,0))));
      trace rotation(kimgiay,tamdongho,90-6*bb);
    );
  $
enddef;
for i:=0 upto 59:
beginfig(i);
  trace Dongho(i);
endfig;
endfor;
end  

Dùng mpost biên dịch file dongho.mp các bạn được 60 hình, đánh số dongho.0 … dongho.59

Soạn một file TeX dặt ten dongho.tex

\documentclass{minimal}
\usepackage{graphicx}
\usepackage{multido} 
\usepackage[paperwidth=3.75cm,paperheight=3.25cm,
top=0cm,bottom=0cm,left=-.4cm,right=0cm]{geometry} 
\DeclareGraphicsRule{*}{mps}{*}{}
\begin{document}

\multido{\n=0+1}{60}{\includegraphics[scale=1]{dongho.\n} \newpage }

\end{document}

biên dịch file TeX là được dongho.pdf file này có 60 trang. Ta dùng swftools (http://www.swftools.org/)

tách ra 60 ảnh

pdf2swf dongho.pdf -o temp.swf

cuối cùng nhập 60 ảnh vào một khung ảnh

swfcombine -dz -r1 temp.swf -o dongho.swf

số 1 chỉ một giây mở một ảnh. Dùng bất cứ chương trình flash player nào cũng chạy được flash này.

Nếu flash không hiện lên, bấm vào đây.

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s