Disalin dari
blog saya untuk membuat sumber informasi berbahasa Rusia lainnya tentang topik ini.
Halo Ketika dalam proses menguasai program Asymptote, yang terjadi ketika saya mempelajari nuansa pengaturan untuk program yang dijelaskan di sini di
hub ini , saya sepenuhnya menguasai pemrosesan file .asy yang tidak memiliki animasi, saya secara alami berlari ke dalam animasi.
Judul spoilerBerikan animasi kepada massa!
Untungnya, untuk ini, dalam hal format output .pdf, tidak ada program tambahan yang dijelaskan oleh saya di hub menggunakan tautan di atas, setelah program ghostscript diinstal, Anda tidak perlu menginstal, dan bahkan iblis tahu berapa lama ia menggali. Tapi kemudian saya tidak tahu, yang memperumit masalah ini berkali-kali. Anda memproses file wheel.asy dan apa? Nah, .pdf muncul selama pemrosesan di TeXworks (lihat tautan yang diberikan di atas) di folder yang sama dengan file .asy yang diproses, dan ketika dibuka di Explorer (lihat hub yang sama), di
C:\Windows\System32
. Jadi apa Tidak ada animasi di dalamnya dan hanya itu, meskipun Anda retak. Sebelum animasi di Asymptote, saya belajar cara membuat animasi di
tikz dan
pstricks . Jadi saya tidak berhasil sampai saya menghapus file animate.sty dari
C:\Program Files\MiKTeX 2.9\tex\latex\animate
folder dan meletakkan file dengan nama yang sama diunduh kemudian.
Itu dia . Dengan demikian, mengetahui hal ini
paket bekerja dengan tikz dan pstricks, saya cenderung berpikir bahwa itu tidak berhasil bagi saya, kemungkinan besar, bukan karena masalah dengan TeX, tetapi karena beberapa alasan lain. Jadi saya mencari di Internet Lama selama beberapa tahun. Pada awalnya saya mencari di browser IE, well, tidak ada penerjemah yang nyaman di sana. Kemudian saya mengendus bahwa Google memiliki penerjemah yang nyaman di dalamnya. Juga mencari, mencari, mencari, mencari, sampai dia menemukan halaman
ini . Ternyata untuk beberapa alasan di semua file .asy dari
C:\Program Files\Asymptote\examples\animations
untuk mendapatkan dari mereka .pdf dengan animasi tidak ada cukup satu baris
settings.twice=true;
Saya menambahkan baris ini ke file wheel.asy dari subfolder animasi folder contoh:
Akhirnya animasi !!!!!!! import graph; // Uncomment the following 2 lines to support pdf animations: usepackage("animate"); settings.tex="pdflatex"; settings.twice=true; import animation; size(0,200); defaultpen(3); dotfactor=4; pair wheelpoint(real t) { return (t+cos(t),-sin(t)); } guide wheel(guide g=nullpath, real a, real b, int n) { real width=(ba)/n; for(int i=0; i <= n; ++i) { real t=a+width*i; g=g--wheelpoint(t); } return g; } real t1=0; real t2=t1+2*pi; animation a; draw(circle((0,0),1)); draw(wheel(t1,t2,100),linetype("0 2")); yequals(Label("$y=-1$",1.0),-1,extend=true,linetype("4 4")); xaxis(Label("$x$",align=3SW),0); yaxis("$y$",0,1.2); pair z1=wheelpoint(t1); pair z2=wheelpoint(t2); dot(z1); dot(z2); int n=10; real dt=(t2-t1)/n; for(int i=0; i <= n; ++i) { save(); real t=t1+dt*i; draw(circle((t,0),1),red); dot(wheelpoint(t)); a.add(); // Add currentpicture to animation. restore(); } erase(); // Merge the images into a gif animation. //a.movie(BBox(0.25cm),loops=10,delay=250); // Merge the images into a pdf animation. label(a.pdf(BBox(0.25cm),delay=250,"controls",multipage=false));
Pada saat yang sama, untuk menerima .pdf, mengetahui 300 kata dalam bahasa Inggris, saya menyadari bahwa saya perlu menghapus komentar dalam bentuk file wheel.asy di mana pengguna mendapatkannya dari penulis program Asymptote, 2 baris:
....................... usepackage("animate"); settings.tex="pdflatex"; .......................
Melihat komentar pada baris ini di akhir file wheel.asy:
........................ // Merge the images into a gif animation. a.movie(BBox(0.25cm),loops=10,delay=250); // Merge the images into a pdf animation. // label(a.pdf(BBox(0.25cm),delay=250,"controls",multipage=false));
, Saya menyadari bahwa untuk mendapatkan .pdf saya perlu mengulang kode yang saya dapatkan dari penulis program dan berkomentar
a.movie(BBox(0.25cm),loops=10,delay=250);
, dan batalkan komentar pada garis
label(a.pdf(BBox(0.25cm),delay=250,"controls",multipage=false));
Dan bagaimana roda saya berguling setelah gerakan tubuh ini! Logika dari para penulis program Asymptote juga tidak dapat dipahami: untuk mendapatkan .gif satu program tambahan lebih dibutuhkan daripada untuk mendapatkan .pdf. File dengan contoh kemungkinan besar akan ditonton oleh pengguna yang tidak tahu cara melakukan ini sama sekali. Nah, lakukan ini agar ketika para pengguna ini segera membuka file-file ini, tanpa mengubah apa pun di dalamnya, mereka dapat menerima format output yang membutuhkan lebih sedikit program tambahan - .pdf, tidak, mereka membuat .gif. Mengapa ?? Baiklah baiklah Ya, saya juga akan mencatat bahwa ketika membuka file wheel.asy di Explorer (lihat
hub saya ) untuk mendapatkan .gif yang berfungsi, keberadaan file config.asy di folder yang sama dengannya (lihat
hub saya ) adalah opsional. Biarkan saya mengingatkan Anda bahwa .gif dalam hal ini (ketika dibuka di Explorer) dibentuk di
C:\Windows\System32
. Saat memproses file .asy ini di TeXworks, keberadaan config.asy dalam folder yang sama dengan file yang akan diproses adalah wajib (atau termasuk baris yang saya jelaskan di tautan sebelumnya langsung ke file .asy yang diproses itu sendiri). Nah, ini dia. Roda saya berputar lurus, saya tertawa, senang. Itu malam. Saya pergi tidur. Bangun dan comp. Ketika komputer menyala, dia duduk, menggosok tangannya. Yah, saya pikir, sekarang saya akan secara matematis mulai menggunakan bahan bakar minyak untuk kita.) Ya, sekarang juga. Animasi dari subfolder contoh berhasil hampir semuanya, kecuali untuk embeddedmovie.asy, externalmovie.asy dan embeddedu3d.asy. Saya menunggu 2 file pertama nanti, tetapi tidak berhasil dengan yang terakhir: di sana, seperti yang saya mengerti, beberapa file dadu.u3d perlu diunduh juga dari suatu tempat, dan yang mana merupakan rahasia besar untuk sebuah perusahaan kecil. Ya, itu, "Oh, kerajaan tidak cukup, tidak ada tempat untuk berkeliaran." Saya menulis, ada kode seperti itu:
settings.twice=true; usepackage("animate"); import solids; settings.tex="pdflatex"; import animation; settings.outformat="pdf"; settings.axes3=true; import graph3; import palette; currentprojection=orthographic(1,1,1); limits((-1.3,-1.3,-1.3),(1.3,1.3,1.3)); unitsize(6cm); animation a; int n=44; for(int i=0; i<=n; ++i){ real g(real x) {return sqrt(1-x^2);} pair G(real x) {return (x,g(x));} triple G3(real x) {return (x,g(x),0);} path q=graph(G,1-i/n,1); path3 q3=path3(q); revolution c=revolution(q3,X,0,360); draw(surface(c),red); real f(real x) {return sqrt(1-x^2);} pair F(real x) {return (x,f(x));} triple F3(real x) {return (x,f(x),0);} path p=graph(F,-1,-1+i/n); path3 p3=path3(p); revolution b=revolution(p3,X,0,360); draw(surface(b),green); axes3("$x$","$y$","$z$",Arrow3); a.add(); restore(); } erase(); label(a.pdf("controls,loop",delay=1000));
Saya menerima kesalahan menjanjikan berikut di
TeXworks :
error: out of memory
Saat membuka file .asy ini di Explorer (lihat tautan ke hub tepat di atas) kesalahannya sama. Ya Saya sudah dikukus, saya dikukus, saya sudah keruh, saya menemukan itu ketika
ternyata .pdf dengan animasi, tetapi sudah di
bahwa kesalahan ini juga muncul. Izinkan saya bertanya di
forum Asymptote
itu sendiri . Tetapi Anglo-Saxon adalah orang yang taat hukum yang tidak suka mundur dari instruksi. Mereka tidak menemukan apa pun. Apa yang harus dilakukan Apakah layak menyekop separuh Internet untuk tersandung pada sampah semacam itu? Yah, tidak ada apa-apa, Rusia tidak menyerah! Dan selain itu, pahlawan normal selalu berkeliling ... Saya mulai mengamati proses memproses file wheel.asy di TeXworks dan apa yang saya lihat? Pertama, file _wheel + 0.pdf, _wheel + 1.pdf, ..., _wheel + 10.pdf muncul, kemudian dari file-file ini file multi-halaman _wheel.pdf dibentuk dan selanjutnya pada program. Dan untuk melakukan semua ini, modul animasi diimpor ke file .asy dari mana mereka akan mendapatkan
animasi . Dan kemudian saya punya ide. Tetapi bagaimana jika dalam modul ini (file
C:\Program Files\Asymptote\animation.asy
) Anda menemukan tempat yang menghasilkan file seperti _wheel + 0.pdf dan mematikannya? Apakah Anda mencap file-file ini dengan Asymptote yang memproses file .asy yang dihasilkan oleh loopback dalam file batch? File-file .asy ini dapat dibuat dengan nama
name + 0.asy ,
nama + 1.asy , dan sebagainya, selama diperlukan. Di mana
namanya adalah beberapa set huruf Latin yang terkait dengan animasi yang sedang dibuat, yang kemungkinan besar ingin Anda ubah pada pdf siap pakai dengan animasi. Tapi nanti. Sementara itu, setelah membuat file,
namanya + 0. mudah ,
namanya + 1. mudah ... menurut ide saya, pemrosesan oleh Asymptote harus diikuti. Ini akan membuat
nama file
+ 0.pdf ,
nama + 1.pdf ... Dan sebelum kode yang membuat
nama file
+ 0.asy ,
nama + 1.asy ..., saya harus memasukkan baris dalam file batch untuk membuat nama file. atau lebih tepatnya, hanya baris untuk masuk ke file ini. Dan nama file. Mudah akan dibentuk hanya sebagai hasil dari file batch. Dalam file ini, namanya. Mudah, saya berencana untuk mengimpor modul animasi yang saya konversi bukan modul
animasi itu sendiri. Saya memutuskan untuk membuat awal dari nama file ini. Mudah menjadi yang paling sederhana, dengan semangat awal dari file wheel.asy. Setelah loop, saya hanya bodoh menyalin garis dari file ini dan menempelkannya ke file batch seperti ini:
echo >> .asy
,
echo >> .asy
Saya menulis file batch sehingga dalam file yang dibuat nama. Mudah, badan loop kosong, dan di mana untuk itu, itu akan berubah seperti ini:
for(int i=0; i <= n; ++i) {
Dalam file batch, baris di atas baris kode yang memasukkan baris ini ke nama file. Mudah adalah sebuah baris
echo int n=%n%; >>%name%.asy
, dan baris ketiga dan keempat dari file batch ini adalah:
set n=24 set name=OdnopGip
, jadi pada awal pemrosesan loop dalam nama file. Asymptote mudah sudah tahu nilai n dalam hal ini dan semuanya berfungsi. Nama variabel lingkungan berarti, dalam terjemahan ke dalam bahasa artikel ini,
nama dari
name.asy . Mendeklarasikan dalam hal ini nilai-nilai nama atau n dalam file batch melalui set menurut saya sangat nyaman: mengubah nilai-nilai mereka hanya dalam satu tempat dalam file batch memerlukan mengubah semua nama file .tex, .pdf yang dihasilkan saat memproses file atau nomor .asy tertentu bingkai dalam pdf animasi yang dihasilkan, pada dasarnya mengubah detail animasi. Nah, ini dia. Jadi saya menyiapkan
nama frame
+ 0.pdf ,
nama + 1.pdf ..., namun, karena setelah persiapan setiap frame dibuka, saya harus memasukkan perintah dalam file batch saya untuk menutupnya. Karena saya tidak tahu cara menutup jendela dengan judul tertentu dari file batch, saya memasukkan perintah berikut dalam file batch saya di tubuh siklus pemrosesan frame-blank. Mudah:
taskkill /IM AcroRd32.exe
, yang ternyata nanti dalam proses menjalankan semua ini, bahkan lebih baik daripada menutup setiap frame tertentu: kadang-kadang frame masih tidak punya waktu untuk muncul di monitor, dan pemrosesan file .asy berikutnya sudah dimulai, pada akhirnya frame berikutnya muncul di monitor, dan final dengan perintah dari langkah selanjutnya dari siklus ini, baik frame dari langkah berikutnya dan frame dari langkah sebelumnya, yang melewati file batch yang berjalan melewati, akan ditutup, meskipun jelas bahwa setelah memasukkan perintah ini dalam file batch selama pelaksanaan buku di .pdf, itu tidak lagi Saya buruk, ya. Lebih jauh di sepanjang logika, saya perlu mengubah nama nama file + 0.asy, nama + 1.asy, ... menjadi _name + 0.asy, _name + 1.asy, ..., karena keberadaan file dengan persis nama-nama ini dalam satu Folder dengan file .asy sedang diproses, di mana ada animasi, mengasumsikan bahwa file ini diproses asalkan modul animasi asli diimpor sebelum memulai produksi file name.pdf (ya, saya bisa, di dalam loop file batch dengan variabel k, bukan garis-garis kode yang membentuk bingkai. nama file + k.asy, dan file _name + k.asy, tetapi ini akan membutuhkan lebih banyak input karakter "_". Dan pemrosesan lebih lanjut dari luka Asymptote . File E dibuat imya.asy Singkatnya, menurut ide asli adalah untuk memiliki file batch terlihat seperti ini:
cd /d %0\.. echo off set n=99 set name=cvetok echo settings.twice=true; > %name%.asy echo usepackage("animate"); >>%name%.asy echo settings.tex="pdflatex"; >>%name%.asy echo import izgraphiki; >>%name%.asy echo animation a; >>%name%.asy echo int n=%n%; >>%name%.asy echo for(int i=0; i ^<= n; ++i) { >>%name%.asy echo a.add(); >>%name%.asy echo restore(); >>%name%.asy echo } >>%name%.asy echo erase(); >>%name%.asy echo label(a.pdf(BBox(0.25cm),delay=250,"controls",multipage=false)); >>%name%.asy for /l %%k in (0,1,%n%) do ( echo import graph; >> %name%+%%k.asy echo settings.tex="pdflatex"; >> %name%+%%k.asy echo limits((-1.2,-1.2^),(1.2,1.2^)^); >> %name%+%%k.asy echo size(0,100^); >> %name%+%%k.asy echo real f(real t^) {return cos(2*t^);} >> %name%+%%k.asy echo path g=polargraph(f,0,2pi*%%k/%n%,operator ..^)--cycle; >> %name%+%%k.asy echo fill(g,green+white^); >> %name%+%%k.asy echo xaxis("$x$",above=true^); >> %name%+%%k.asy echo yaxis("$y$",above=true^); >> %name%+%%k.asy echo draw(g^); >> %name%+%%k.asy ) for /l %%l in (0,1,%n%) do ( asy %name%+%%l.asy taskkill /IM AcroRd32.exe ) for /l %%l in (0,1,%n%) do ( rename %name%+%%l.pdf _%name%+%%l.pdf ) asy %name%.asy
Di sini kita melihat bahwa saya mengimpor modul animation.asy yang saya modifikasi di atas. Saya memberi nama sederhana izgraphiki.asy ke modul ini. Dan untuk file animasi .pdf yang saya dapatkan, saya tidak menemukan nama yang lebih baik daripada cvetok. Ternyata, karena kelangkaan imajinasinya. Baiklah, ayolah, bagaimana keadaannya. Saya akan bercerita tentang modul izgraphiki.asy "saya" di akhir cerita ini, agar tidak kehilangan utas cerita sekarang, tetapi untuk saat ini saya akan mencatat bahwa ada upaya untuk memberikan file ini nama iz-graphiki.asy, dan kemudian iz + graphiki.asy untuk pengujian tidak mengarah ke tujuan yang dimaksud: pekerjaan file batch saya berhenti berjalan lancar dan tidak melanjutkan dalam keadaan apa pun. Rupanya, modul program Asymptote hanya boleh berisi
huruf- huruf alfabet Latin. Bagaimanapun, kepatuhan dengan kondisi ini tentu tidak akan merugikan. Jadi, pekerjaan dari file batch yang saya kutip di atas berakhir dengan penampilan file .pdf yang didambakan dengan animasi dari yang besar secara sewenang-wenang (dalam batas yang wajar, agar tidak menunggu 3 jam, berfungsi, animasi .pdf muncul, semuanya baik-baik saja, tetapi komputer memiliki kecepatan operasi hanya final). Biarkan saya melakukan konstruksi animasi objek 3d. Dan kemudian masalah lain menjadi jelas. Saya berhasil memberi cap pada objek-objek ini, tetapi, oh, itu dia. Pada bingkai-bingkai ini, objek-objek ini ternyata diputar di ruang angkasa, semuanya baik-baik saja di sini, tetapi hanya karena keberadaan volume ini dalam bingkai pdf, mereka tidak dapat digunakan untuk membangun bingkai dalam pdf dengan animasi. Biarkan saya berpikir lebih jauh. Menonton pemrosesan file sphere.asy yang sedikit dimodifikasi:
file sphere.asy sedikit dimodifikasi settings.twice=true; usepackage("animate"); import solids; settings.tex="pdflatex"; import animation; settings.outformat="pdf"; currentprojection=orthographic((0,5,2)); currentlight=(0,5,5); int nbpts=200; real step=2*pi/nbpts; int angle=90; unitsize(1cm); triple[] P=new triple[nbpts]; for(int i=0; i < nbpts; ++i) { real t=-pi+i*step; P[i]=(3sin(t)*cos(2t),3sin(t)*sin(2t),3cos(t)); } transform3 t=rotate(angle,(0,0,0),(1,0.25,0.25)); revolution r=sphere(O,3); draw(surface(r),lightgrey); draw(r,backpen=linetype("8 8",8)); animation A; for(int phi=0; phi < 360; phi += angle) { bool[] front=new bool[nbpts]; save(); for(int i=0; i < nbpts; ++i) { P[i]=t*P[i]; front[i]=dot(P[i],currentprojection.camera) > 0; } draw(segment(P,front,operator ..),1mm+blue+extendcap); draw(segment(P,!front,operator ..),grey); A.add(); restore(); } label(A.pdf());
, Saya perhatikan bahwa selama pemrosesan ini semua frame animasi muncul dan tidak menghilang secara berurutan, tetapi hanya mereka, jika boleh saya katakan demikian, dalam versi 2d: menurut pendapat saya ini adalah grafik 3D penuh, tetapi jika Anda mencoba untuk melihatnya dari sisi yang berbeda di jendela Penampil Abode Pembaca dengan bergerak dengan menekan tombol kiri mouse, seperti yang diharapkan dari grafik 3d yang diperoleh menggunakan Asymptote, kecuali kemungkinan pertimbangan ini dimatikan dengan sengaja sebelum memulai produksi .pdf dengan animasi dalam file .asy, ini ternyata tidak mungkin th. Nama-nama bingkai 2d ini: _sphere + 0.pdf, _sphere + 1.pdf, ... Setelah mempelajari tentang pembuatan bingkai 2d spasial saat memproses file .asy yang memiliki animasi objek 3d, terpikir oleh saya untuk mendapatkan frame .pdf dari file batch untuk digunakan lebih lanjut dalam memproses file .asy, di mana ada siklus dengan tubuh kosong, yang saya hasilkan di awal file batch, tidak hanya memproses file .asy, tetapi memproses file .asy, yang masing-masing memiliki siklus. Loop-loop ini di masing-masing bertopik. Mudah bertopik ini untuk menerima bingkai .pdf dari itu saya terdiri dari satu bingkai tunggal: Saya tidak membuat bertopik ini untuk mendapatkan .pdf dengan animasi dari mereka, tetapi untuk mendapatkan bingkai 2d, kebetulan dalam proses memproses masing-masing file rintisan .asy. Untuk menerima file kosong. Mudah dengan loop seperti itu, saya membuatnya sehingga dalam loop semua file kosong. Mudah, variabel loop ini pada awal dan akhir loop mengambil nilai yang sama - 0. Perbedaan antara frame .pdf yang dihasilkan dari pemrosesan memainkan Asymptote dari file kosong. Mudah disebabkan oleh perbedaan dalam tubuh file loop dari blanks.asy, yang (perbedaan), pada gilirannya, karena pengenalan masing-masing dari nilai-nilai berurutan dari variabel file batch file ke dalam fungsi tubuh file loop dari blanks.asy dibuat oleh file batch ketika variabelnya qi Kla, mengambil nilai selanjutnya, membeku, menunggu selesainya pembuatan file pengadaan. Mudah, sesuai dengan nilai ini dari variabel loop file batch. Singkatnya, perbedaan-perbedaan ini dibuat oleh variabel loop file batch. Nama-nama frame 2d ini dalam bentuk: nama + k + 0.pdf, di mana, karena frame 2d ini adalah hasil dari perubahan dalam variabel loop file batch,
mengambil nilai dari 0 hingga nilai akhir variabel loop file batch dengan langkah 1. Untuk mendapatkan animasi .pdf dari file .asy dengan tubuh kosong dari loop yang dibuat oleh file batch sebelumnya, nama frame .pdf harus memiliki bentuk berikut: _name + k.pdf. Oleh karena itu, tim berikutnya dalam file batch saya menamai frame ini -pdf. Saya melakukannya dalam satu lingkaran. Dan akhirnya, tim pengolah menjalankan file Asymptote .asy dengan badan loop kosong. Setelah pemrosesan ini, .pdf dengan animasi muncul. Dalam file batch, setelah perintah ini, saya tidak menulis perintah untuk membuka file .pdf dengan animasi, karena pembukaan ini diasumsikan secara default, file .pdf dengan animasi ini tetap terbuka di akhir pemrosesan ini, seperti file .pdf terbuka dihasilkan oleh Asymptote yang memproses file .asy tanpa animasi. Jika pembaca mengamati proses pemrosesan file mudah dari subfolder dengan animasi dari folder contoh yang terletak di folder program Asymptote, maka ia akan memahami bahwa bagian
nama dari _name + k.pdf harus bertepatan dengan nama file .asy dengan badan loop kosong. File _name + k.pdf adalah hasil dari pengubahan nama beberapa file .pdf lainnya (nama file + k + 0.pdf), yang, pada gilirannya, merupakan produk sampingan dari program yang memproses beberapa file .asy, oleh karena itu, untuk mempermudah tugas, saya membuat file-file ini . mudah dibuat oleh file batch di bawah nama nama + 0. mudah, nama + 1. mudah, ... Jadi, well, saya menggambarkan prinsip kerja file batch yang saya rencanakan, sekarang saatnya untuk memberikan contoh dari salah satu file batch tersebut. Sebagai contoh, ini:
cd /d %0\.. echo off set n=44 echo settings.twice=true; >>sphera.asy echo usepackage("animate"); >>sphera.asy echo settings.tex="pdflatex"; >>sphera.asy echo import izgraphiki; >>sphera.asy echo animation a; >>sphera.asy echo int n=%n%; >>sphera.asy echo for(int i=0; i ^<= n; ++i) { >>sphera.asy echo a.add(); >>sphera.asy echo restore(); >>sphera.asy echo } >>sphera.asy echo erase(); >>sphera.asy echo label(a.pdf(BBox(0.25cm),delay=250,"controls,loop,autoplay",multipage=false)); >>sphera.asy for /l %%k in (0,1,%n%) do ( echo settings.twice=true; >> sphera+%%k.asy echo usepackage("animate"^); >> sphera+%%k.asy echo import solids; >> sphera+%%k.asy echo settings.tex="pdflatex"; >> sphera+%%k.asy echo import animation; >> sphera+%%k.asy echo settings.outformat="pdf"; >> sphera+%%k.asy echo settings.axes3=true; >> sphera+%%k.asy echo import graph3; >> sphera+%%k.asy echo import palette; >> sphera+%%k.asy echo currentprojection=orthographic(1,1,1^); >> sphera+%%k.asy echo limits((-1.3,-1.3,-1.3^),(1.3,1.3,1.3^)^); >> sphera+%%k.asy echo unitsize(6cm^); >> sphera+%%k.asy echo animation a=animation(global=false^); // (global=false^) >>sphera+%%k.asy echo //C:\Program Files\Asymptote/plain_shipout.asy: 87.10: runtime: Cannot rename _sphera+2+0_.pdf to >>sphera+%%k.asy echo //_sphera+2+0.pdf >>sphera+%%k.asy echo for(int i=0; i ^<= 0; ++i^) { >>sphera+%%k.asy echo real f(real x^) {return sqrt(1-x^^2^);} >> sphera+%%k.asy echo pair F(real x^) {return (x,f(x^)^);} >> sphera+%%k.asy echo triple F3(real x^) {return (x,f(x^),0^);} >> sphera+%%k.asy echo path p=graph(F,-1+i,-1+i+%%k/%n%^); >> sphera+%%k.asy echo path3 p3=path3(p^); >> sphera+%%k.asy echo revolution b=revolution(p3,X,0,360^); >> sphera+%%k.asy echo draw(surface(b^),green^); >> sphera+%%k.asy echo real g(real x^) {return sqrt(1-x^^2^);} >> sphera+%%k.asy echo pair G(real x^) {return (x,f(x^)^);} >> sphera+%%k.asy echo triple G3(real x^) {return (x,g(x^),0^);} >> sphera+%%k.asy echo path q=graph(G,1-i-%%k/%n%,1-i^); >> sphera+%%k.asy echo path3 q3=path3(q^); >> sphera+%%k.asy echo revolution c=revolution(q3,X,0,360^); >> sphera+%%k.asy echo draw(surface(c^),red^); >> sphera+%%k.asy echo axes3("$x$","$y$","$z$",Arrow3^); >> sphera+%%k.asy echo a.add(^); >>sphera+%%k.asy echo restore(^); >>sphera+%%k.asy echo } >>sphera+%%k.asy echo erase(^); >>sphera+%%k.asy echo label(a.pdf(^)^); >>sphera+%%k.asy ) rem for /f %%l in (0,1,%n%) do asy '_sphera+%%l'.asy for /l %%l in (0,1,%n%) do ( asy sphera+%%l.asy taskkill /F /IM AcroRd32.exe ) for /l %%l in (0,1,%n%) do rename sphera+%%l+0.pdf _sphera+%%l.pdf asy sphera.asy
Mohon perhatikan garisnya
echo for(int i=0; i ^<= n; ++i) { >>sphera.asy
karena simbol
<
memiliki arti khusus untuk penerjemah baris perintah, agar penerjemah ini mengambil simbol ini dalam arti literal, saya melarikan diri simbol ini dengan meletakkan simbol
^
di depannya.
Untuk alasan yang sama, saya melindungi simbol itu sendiri ^
di tubuh siklus file batch, meletakkan simbol lain yang serupa di depannya. Selain itu, dalam tubuh siklus file batch ini, saya lolos setiap tanda kurung, jika tidak tanda kurung unshielded pertama yang muncul akan dianggap oleh penerjemah sebagai tanda kurung, pasangan tanda kurung terakhir di tempat file batch for /l %%k in (0,1,%n%) do (
Jadi, mari kita telusuri apa yang terjadi ketika file batch bekerja dengan struktur yang saya temukan menggunakan contoh spesifik. Pada awalnya (dalam hal mengeksekusi file batch, kode yang diberikan oleh saya sedikit di atas, file sphera.asy yang disebutkan di atas dalam artikel ini dibuat lebih dari sekali oleh saya dengan tubuh kosong dari siklus sebagai berikut: settings.twice=true; usepackage("animate"); settings.tex="pdflatex"; import izgraphiki; animation a; int n=44; for(int i=0; i <= n; ++i) { a.add(); restore(); } erase(); label(a.pdf(BBox(0.25cm),delay=250,"controls,loop,autoplay",multipage=false));
Kemudian sphera + 0.asy, sphera + 1.asy, ..., sphera + 44.ketika mudah dihasilkan, pemrosesan masing-masing yang selanjutnya oleh Asymptote sebagai produk sampingan akan memberikan 2d frame sphera + 0.pdf, sphera + 1 .pdf, ..., sphera + 44.pdf. Sebagai contoh, isi file sphera + 4.asy akan menjadi sebagai berikut: settings.twice=true; usepackage("animate"); import solids; settings.tex="pdflatex"; import animation; settings.outformat="pdf"; settings.axes3=true; import graph3; import palette; currentprojection=orthographic(1,1,1); limits((-1.3,-1.3,-1.3),(1.3,1.3,1.3)); unitsize(6cm); animation a=animation(global=false); // (global //C:\Program Files\Asymptote/plain_shipout.asy: 87.10: runtime: Cannot rename _sphera+2+0_.pdf to //_sphera+2+0.pdf for(int i=0; i <= 0; ++i) { real f(real x) {return sqrt(1-x^2);} pair F(real x) {return (x,f(x));} triple F3(real x) {return (x,f(x),0);} path p=graph(F,-1+i,-1+i+4/44); path3 p3=path3(p); revolution b=revolution(p3,X,0,360); draw(surface(b),green); real g(real x) {return sqrt(1-x^2);} pair G(real x) {return (x,f(x));} triple G3(real x) {return (x,g(x),0);} path q=graph(G,1-i-4/44,1-i); path3 q3=path3(q); revolution c=revolution(q3,X,0,360); draw(surface(c),red); axes3("$x$","$y$","$z$",Arrow3); a.add(); restore(); } erase(); label(a.pdf());
Saya menyalin kode ini dengan membuka file sphera + 4.asy di TeXworks, dan di sana encoding diatur ke UTF-8:
File batch adalah encoding ANSI. Rupanya, inilah sebabnya komentar saya dalam tubuh siklus file batch kedua digantikan oleh kotak dalam file rintisan mudah ini, yang, bagaimanapun, tidak mengganggu pemrosesan oleh Asymptote. Setelah pemrosesan ini, frame 2d ini diperoleh dari file ini. Saya secara khusus memberikan tautan untuk mengunduh salah satu bingkai 2d ini, dan jangan menyisipkan gambar bingkai ini di sini sehingga pembaca dapat melihat secara langsung apa bingkai 2d yang saya gunakan. Inti dari file rintisan .asy lainnya adalah sama, hanya saja mereka berbeda satu sama lain dalam nilai-nilai argumen fungsi di tubuh loop. Berikutnya, frame 2d diganti nama menjadi sphera + 0 + 0.pdf, sphera + 1 + 0.pdf, ..., sphera + 44 + 0.pdf ke _sphera + 0.pdf, _sphera + 1.pdf, ..., _sphera + 44.pdf, dan, akhirnya, Asymptote memproses file dengan tubuh kosong dari siklus sphera.asy. Hasilnya adalah animasi seperti itu. Saya memberikan tautan ke .gif hanya karena, ketika saya mencoba memasukkan .gif di sini, animasi untuk beberapa alasan tidak muncul sepenuhnya. Saya menggunakan .gif, bukan .pdf karena, kemungkinan besar, pembaca mimpi buruk ini tahu bahwa animasi di browser, mis., Di sini, di .pdf tidak ditampilkan, tetapi dalam .gif ditampilkan. Saya baru saja mendapatkan .gif ini, dengan mengeksekusi file batch saya hanya tersumbat dengan konten berikut: cd /d %0\.. echo off set n=44 echo import graph; >sphera.asy echo settings.twice=true; >>sphera.asy echo usepackage("animate"); >>sphera.asy echo settings.tex="pdflatex"; >>sphera.asy echo import izgraphikigif; >>sphera.asy echo animation a; >>sphera.asy echo yequals(Label("$y=-1$",1.0),-1,extend=true,linetype("4 4")); >>sphera.asy echo int n=%n%; >>sphera.asy echo for(int i=0; i ^<= n; ++i) { >>sphera.asy echo a.add(); >>sphera.asy echo restore(); >>sphera.asy echo } >>sphera.asy echo erase(); >>sphera.asy echo a.movie(); >>sphera.asy for /l %%k in (0,1,%n%) do ( echo settings.twice=true; > sphera+%%k.asy echo usepackage("animate"^); >> sphera+%%k.asy echo import solids; >> sphera+%%k.asy echo settings.tex="pdflatex"; >> sphera+%%k.asy echo import animation; >> sphera+%%k.asy echo settings.outformat="pdf"; >> sphera+%%k.asy echo settings.axes3=true; >> sphera+%%k.asy echo import graph3; >> sphera+%%k.asy echo import palette; >> sphera+%%k.asy echo currentprojection=orthographic(1,1,1^); >> sphera+%%k.asy echo limits((-1.3,-1.3,-1.3^),(1.3,1.3,1.3^)^); >> sphera+%%k.asy echo unitsize(6cm^); >> sphera+%%k.asy echo animation a=animation(global=false^); // (global=false^) >>sphera+%%k.asy echo //C:\Program Files\Asymptote/plain_shipout.asy: 87.10: runtime: Cannot rename _sphera+2+0_.pdf to >>sphera+%%k.asy echo //_sphera+2+0.pdf >>sphera+%%k.asy echo for(int i=0; i ^<= 0; ++i^) { >>sphera+%%k.asy echo real f(real x^) {return sqrt(1-x^^2^);} >> sphera+%%k.asy echo pair F(real x^) {return (x,f(x^)^);} >> sphera+%%k.asy echo triple F3(real x^) {return (x,f(x^),0^);} >> sphera+%%k.asy echo path p=graph(F,-1+i,-1+i+%%k/%n%^); >> sphera+%%k.asy echo path3 p3=path3(p^); >> sphera+%%k.asy echo revolution b=revolution(p3,X,0,360^); >> sphera+%%k.asy echo draw(surface(b^),green^); >> sphera+%%k.asy echo real g(real x^) {return sqrt(1-x^^2^);} >> sphera+%%k.asy echo pair G(real x^) {return (x,f(x^)^);} >> sphera+%%k.asy echo triple G3(real x^) {return (x,g(x^),0^);} >> sphera+%%k.asy echo path q=graph(G,1-i-%%k/%n%,1-i^); >> sphera+%%k.asy echo path3 q3=path3(q^); >> sphera+%%k.asy echo revolution c=revolution(q3,X,0,360^); >> sphera+%%k.asy echo draw(surface(c^),red^); >> sphera+%%k.asy echo axes3("$x$","$y$","$z$",Arrow3^); >> sphera+%%k.asy echo a.add(^); >>sphera+%%k.asy echo restore(^); >>sphera+%%k.asy echo } >>sphera+%%k.asy echo erase(^); >>sphera+%%k.asy echo label(a.pdf(^)^); >>sphera+%%k.asy ) for /l %%l in (0,1,%n%) do ( asy sphera+%%l.asy taskkill /F /IM AcroRd32.exe ) rem for /l %%l in (0,1,%n%) do rename sphera+%%l+0.pdf _sphera+%%l.pdf asy sphera.asy
Saya tidak akan menjelaskan secara rinci prinsip pengoperasian file batch ini, pembaca akan memahaminya setelah mengamati proses memperoleh .gif dari file wheel.asy yang sudah lama menderita. Saya hanya mencatat bahwa kurangnya garis yequals(Label("$y=-1$",1.0),-1,extend=true,linetype("4 4"));
sphera.asy , . , /ยซ ยป .asy . .gif, Imagemagick 2d-:

, .
, . ?
magick *.eps sphere.gif
di baris perintah diluncurkan dari folder di mana ada frame 2d dengan ekstensi .eps. Saya masih memiliki bingkai ini dari rakitan .gif dengan file batch terakhir yang diberikan di atas. Seperti yang mereka katakan, temukan 10 perbedaan)). Jadi, sepertinya, belum lupa apa-apa. Tetap hanya untuk memberi tahu, seperti yang saya janjikan, tentang modul yang dimodifikasi oleh saya, yang diperoleh dengan mengubah modul animasi yang sama. Lalu mengapa saya berjanji untuk berbicara tentang satu modul, dan saya akan berbicara tentang beberapa (sekitar dua) modul? Karena dalam proses penulisan artikel ini, saya perlu membuat animasi .gif dari sejumlah besar bingkai. Ternyata modul izgraphiki.asy digunakan oleh saya - sebuah modifikasi dari modul animation.asy - untuk menghasilkan animasi .pdf dengan sejumlah besar bingkai (mungkin dengan (lihatdi atas) grafis 3d pada mereka) sama sekali tidak cocok untuk produksi animasi .gif dengan sejumlah besar bingkai (mungkin dengan, seolah-olah (lihat di atas) grafik 3d pada mereka). Namun, seorang pembaca yang penuh perhatian dapat memperhatikan penggunaan dua modul saya sendiri. Dalam modul โsayaโ untuk menghasilkan .pdf, di mana saya menerima salinan dengan mengganti nama file animation.asy, saya harus mengomentari definisi (saya pikir saya melakukannya dengan definisi) dari sesuatu yang semuanya 4 baris yang membentuk esensi dari definisi ini , meninggalkan ini sesuatu itu sendiri, tetapi dengan definisi kosong: menghapus, bersama dengan definisinya, objek ini sendiri menyebabkan kesalahan: itu diindikasikan bahwa objek ini tidak dikenal. Menyimpan objek ini dalam modul, tetapi dengan garis yang dihapus (atau dikomentari) dari definisi ini sendiri menyelesaikan masalah ini.Ini adalah baris-baris dari modul animation.asy: string format=nativeformat(); plain.shipout(name,f,format=format,view=false); files.push(name+"."+format); shipped=false;
Dan di sini adalah bagaimana baris yang sama terlihat di modul izgraphiki.asy: //string format=nativeformat(); //plain.shipout(name,f,format=format,view=false); //files.push(name+"."+format); //shipped=false;
Dan di sini adalah modul izgraphiki.asy itu sendiri:modul izgraphiki.asy /***** * animation.asy * Andy Hammerlindl and John Bowman 2005/11/06 * * Produce GIF, inline PDF, or other animations. *****/ // animation delay is in milliseconds real animationdelay=50; typedef frame enclosure(frame); frame NoBox(frame f) { return f; } enclosure BBox(real xmargin=0, real ymargin=xmargin, pen p=currentpen, filltype filltype=NoFill) { return new frame(frame f) { box(f,xmargin,ymargin,p,filltype,above=false); return f; }; } struct animation { picture[] pictures; string[] files; int index; string prefix; bool global; // If true, use a global scaling for all frames; this requires // extra memory since the actual shipout is deferred until all frames have // been generated. void operator init(string prefix="", bool global=true) { prefix=replace(stripdirectory(outprefix(prefix))," ","_"); this.prefix=prefix; this.global=global; } string basename(string prefix=stripextension(prefix)) { return "_"+prefix; } string name(string prefix, int index) { return stripextension(prefix)+"+"+string(index); } private string nextname() { string name=basename(name(prefix,index)); ++index; return name; } void shipout(string name=nextname(), frame f) { // string format=nativeformat(); // plain.shipout(name,f,format="png",view=false); //generiruet!!!! //files.push(name+"."+format); // shipped=false; } void add(picture pic=currentpicture, enclosure enclosure=NoBox) { if(global) { ++index; pictures.push(pic.copy()); } else this.shipout(enclosure(pic.fit())); } void purge(bool keep=settings.keep) { if(!keep) { for(int i=0; i < files.length; ++i) delete(files[i]); } } int merge(int loops=0, real delay=animationdelay, string format="gif", string options="", bool keep=settings.keep) { string args="-loop " +(string) loops+" -delay "+(string)(delay/10)+ " -alpha Off -dispose Background "+options; for(int i=0; i < files.length; ++i) args += " " +files[i]; int rc=convert(args,prefix+"."+format,format=format); this.purge(keep); if(rc == 0) animate(file=prefix+"."+format,format=format); else abort("merge failed"); return rc; } void glmovie(string prefix=prefix, projection P=currentprojection) { if(!view() || settings.render == 0) return; fit(prefix,pictures,view=true,P); } // Export all frames with the same scaling. void export(string prefix=prefix, enclosure enclosure=NoBox, bool multipage=false, bool view=false, projection P=currentprojection) { if(pictures.length == 0) return; if(!global) multipage=false; bool inlinetex=settings.inlinetex; if(multipage) settings.inlinetex=false; frame multi; frame[] fits=fit(prefix,pictures,view=false,P); for(int i=0; i < fits.length; ++i) { string s=name(prefix,i); if(multipage) { add(multi,enclosure(fits[i])); newpage(multi); files.push(s+"."+nativeformat()); } else { if(pictures[i].empty3() || settings.render <= 0) this.shipout(s,enclosure(fits[i])); else // 3D frames files.push(s+"."+nativeformat()); } } if(multipage) { plain.shipout(prefix,multi,view=view); settings.inlinetex=inlinetex; } shipped=true; } string load(int frames, real delay=animationdelay, string options="", bool multipage=false) { if(!global) multipage=false; string s="\animategraphics["+options+"]{"+format("%.18f",1000/delay,"C")+ "}{"+basename(); if(!multipage) s += "+"; s += "}{0}{"+string(frames-1)+"}"; return s; } bool pdflatex() { return latex() && pdf(); } string pdf(enclosure enclosure=NoBox, real delay=animationdelay, string options="", bool keep=settings.keep, bool multipage=true) { if(settings.inlinetex) multipage=true; if(!global) multipage=false; if(!pdflatex()) abort("inline pdf animations require -tex pdflatex or -tex xelatex"); if(settings.outformat != "") settings.outformat="pdf"; string filename=basename(); string pdfname=filename+".pdf"; if(global) export(filename,enclosure,multipage=multipage); shipped=false; if(!keep) { exitfcn currentexitfunction=atexit(); void exitfunction() { if(currentexitfunction != null) currentexitfunction(); if(multipage || !settings.inlinetex) this.purge(); if(multipage && !settings.inlinetex) delete(pdfname); } atexit(exitfunction); } if(!multipage) delete(pdfname); return load(index,delay,options,multipage); } int movie(enclosure enclosure=NoBox, int loops=0, real delay=animationdelay, string format=settings.outformat == "" ? "gif" : settings.outformat, string options="", bool keep=settings.keep) { if(global) { if(format == "pdf") { export(enclosure,multipage=true,view=true); return 0; } export(enclosure); } return merge(loops,delay,format,options,keep); } } animation operator init() { animation a=animation(); return a; }
Saya perhatikan bahwa garis plain.shipout(name,f,format="png",view=false); //generiruet!!!!
Modul ini berbeda dari garis pra-gambarnya di modul animation.asy, tetapi ini adalah jejak penelitian saya, saya tidak mengubahnya: modul ini tidak mengganggu apa pun, tetapi memiliki efek ketika membatalkan komentar pada baris-baris ini. Tetapi untuk mendapatkan animasi .gif dari baris yang saya komentari di modul izgraphiki.asy, saya hanya perlu mengomentari satu baris dalam file animation.asy yang disalin dan diganti namanya menjadi izgraphikigif.asy - plain.shipout(name,f,format= format,view=false);
, mis. baris ini dalam modul izgraphikigif.asy terlihat seperti ini: //plain.shipout(name,f,format= format,view=false);
Tentu saja, Anda dapat menghapus baris ini sepenuhnya. Dengan demikian,modul animation.asy dan izgraphikigif.asy umumnya berbeda hanya dalam satu baris, namun demikian. Pada gilirannya, upaya untuk menggunakan modul izgraphikigif.asy untuk membuat animasi .pdf tidak berhasil, sehingga tidak akan berhasil mengurangi 2 modul ini menjadi satu. Meskipun, mungkin, entah bagaimana melalui jika, saya tidak tahu, saya tidak akan mengatakan apa-apa: Saya, ternyata, hari ini saya tidak tahu bahasa Asymptote dengan baik. Saya perhatikan bahwa, meskipun saya menggunakan file batch, mirip dengan file batch dari struktur yang dijelaskan di atas, untuk membuat animasi lain berfungsi, dalam satu kasus saya tidak berhasil - ketika mencoba untuk mendapatkan epicycloid animasi dengan melakukan file batch seperti itu:Epicycloid gagal cd /d %0\.. echo off set n=2 set name=kriv echo settings.twice=true; >%name%.asy echo settings.prc=false; >> %name%.asy echo // Uncomment the following 2 lines to support pdf animations: >>%name%.asy echo usepackage("animate"^); >>%name%.asy echo settings.tex="pdflatex"; >>%name%.asy echo import sinoid; >>%name%.asy echo animation a; >>%name%.asy echo int n=%n%; >>%name%.asy echo for(int i=0; i ^<= n; ++i^) { >>%name%.asy echo a.add(^); // Add currentpicture to animation. >>%name%.asy echo restore(^); >>%name%.asy echo } >>%name%.asy echo erase(^); >>%name%.asy echo label(a.pdf(BBox(0.25cm^),delay=250,"controls",multipage=false^)^); >>%name%.asy for /l %%k in (0,1,%n%) do ( echo import graph; > %name%+%%k.asy echo settings.twice=true; >> %name%+%%k.asy echo usepackage("animate"^); >> %name%+%%k.asy echo settings.tex="pdflatex"; >> %name%+%%k.asy echo import animation; >> %name%+%%k.asy echo limits((-6.3,-6.3^),(6.3,6.3^)^); >> %name%+%%k.asy echo size(0,100^); >> %name%+%%k.asy echo animation a=animation(global=false^);>>%name%+%%k.asy echo for(int i=0; i ^<= 0; ++i^) { >>%name%+%%k.asy echo real r=0.925; >> %name%+%%k.asy echo real R=3.61; >> %name%+%%k.asy echo real d=1.39; >> %name%+%%k.asy echo real x(real t^) {return (R+r^)*cos(t^)-d*cos((R+r^)*t/r^);} >> %name%+%%k.asy echo real y(real t^) {return (R+r^)*sin(t^)-d*sin((R+r^)*t/r^);} >> %name%+%%k.asy echo draw(graph(x,y,0,2*pi*%%k/%n%^),green^); >> %name%+%%k.asy echo axes("$x$","$y$",Arrow^); >> %name%+%%k.asy echo a.add(^); // Add currentpicture to animation. >>%name%+%%k.asy echo restore(^); >>%name%+%%k.asy echo } >>%name%+%%k.asy echo erase(^); >>%name%+%%k.asy echo // Merge the images into a pdf animation. >>%name%+%%k.asy echo label(a.pdf(^)^); >>%name%+%%k.asy ) rem for /f %%l in (0,1,%n%) do asy '%name%+%%l'.asy rem asy *.asy for /l %%l in (0,1,%n%) do ( asy %name%+%%l.asy taskkill /IM AcroRd32.exe ) for /l %%l in (0,1,%n%) do rename %name%+%%l.pdf _%name%+%%l.pdf asy %name%.asy
.
Meskipun saya akan membunuh Anda, saya tidak mengerti mengapa itu tidak berhasil: file kriv.asy dengan loop kosong terbentuk, 2d frames.pdf terbentuk, masing-masing memiliki grafik, semuanya OK, Asymptote memproses file kriv.asy tanpa hambatan, file kriv.pdf ukuran non-nol muncul, Anda membukanya, di sana, seperti biasa untuk .pdf diperoleh dari file mudah dari konten seperti: tombol kontrol animasi, persegi panjang putih di atasnya di mana frame animasi harus berkedip. Mereka harus, tetapi mereka tidak berkewajiban: Klik persegi panjang putih atau tombol putar, tombol ini diganti dengan tombol Jeda, semuanya baik-baik saja, tetapi tidak ada bingkai dan hanya itu, satu persegi panjang putih! Mengapa - pertanyaan sejuta. Ngomong-ngomong, ada satu hal lagi yang membuatku bingung: aku menggunakan nama kriv alih-alih nama yang jelas epicykloida.Saat mencoba menggunakan nama ini, tidak ada yang terjadi, itu tidak berhasil, dan saat membuat animasi lain, gunakan nama Astroida. Perubahan dalam kedua kasus dalam file batch nilai hanya satu nama variabel dalam satu kasus di krivaja, yang lain di kriv segera menyebabkan munculnya .pdf dengan animasi yang biasanya ditampilkan. Tetapi jelas bahwa masalah ini disebabkan oleh Asymptote: dan ketika mencoba untuk memproses, misalnya, file dengan tubuh kosong dari siklus Astroida.asy, masalah yang sama diamati. Sedangkan untuk produksi file .mpg dari jumlah frame yang besar (saya ulangi, dalam batas wajar) sewenang-wenang dalam semangat artikel ini, saya belum berurusan dengan ini, tapi, saya pikir, tidak ada masalah yang tidak dapat diatasi muncul. Ya, ketika saya ingat, ini tidak berlaku untuk file batch yang dijelaskan di sini, tetapi mengacu pada animasi di Asymptote secara umum: file .asy,dari mana animasi .pdf diperoleh berbeda dari file .asy, dari mana animasi .gif diperoleh, dengan satu baris, terakhir, baris.Baris terakhir paling sederhana dari file .asy yang akan menghasilkan animasi .pdf adalah: label(a.pdf());
Baris terakhir paling sederhana dari file .asy, dari mana animasi .gif akan muncul, terlihat seperti ini: a.movie();
Dan baris terakhir yang paling sederhana dari file .asy, yang darinya .mpg yang dapat dikerjakan akan berubah, adalah sama dengan baris terakhir yang paling sederhana dari file .asy, darimana animasi .gif akan muncul. Pada saat yang sama, .mpg yang dapat dikerjakan sudah muncul saat memproses file .asy, yang baris yang saya cari begitu lama belum ditulis settings.twice=true;
Sekarang, sepertinya, itu saja.