MetaPost
Acest articol sau secțiune despre subiectul software nu menționează sursele necesare sau cei prezenți sunt insuficienți . |
MetaPost software | |
---|---|
Tip | Grafică pe computer |
Dezvoltator | Taco Hoekwater, Luigi Scarso |
Data primei versiuni | 1994 |
Ultima versiune | 1.207 (8 decembrie 2009 ) |
Sistem de operare | Multiplatform |
Limba | C. |
Licență | Domeniu public ( licență gratuită ) |
Site-ul web | Site-ul dezvoltatorului |
MetaPost se referă atât la numele limbajului de programare pentru generarea diagramelor, cât și la interpretul limbajului însuși. Ieșirea generată este în PostScript . [1]
MetaPost împărtășește sintaxa pentru manipularea liniilor, curbelor, punctelor și transformărilor geometrice cu interpretul Metafont ; cu toate acestea, există unele diferențe cu programul lui Donald Knuth :
- Metafont este folosit pentru a produce fonturi, cu fișiere imagine (extensie .gf) și fișiere metrice (fișiere .tfm), în timp ce MetaPost generează fișiere eps .
- Metafont ca ieșire produce imagini cu rezoluție fixă, în timp ce MetaPost produce grafică vectorială (curbe, linii Bézier ).
- Ieșirea Metafont este monocromă, în timp ce ieșirea MetaPost utilizează RGB .
Multe dintre limitările Metapost derivă din caracteristicile Metafont. De exemplu, precizia redusă cu care sunt reprezentate numerele, suficientă pentru a reprezenta coordonatele într-un grafic mic, dar ar putea crea probleme pentru un sistem de coordonate suficient de mare. Mai mult, Metapost nu acceptă toate caracteristicile PostScript (de exemplu, PostScript 3 acceptă umbrirea Gouraud ). Asimptota a fost dezvoltată pentru a rezolva aceste probleme.
Exemple
Următorul fișier example.mp produce odată interpretat cu MetaPost (prin comanda mpost sub Linux ) produce trei fișiere eps example.1 , example.2 , example.3 . Graficele sunt prezentate în dreapta.
transforma pagecoords; pagecoords: = identitate scalată 10mm deplasată (100mm, 150mm); beginfig (1) umplere ((0,0) - (2,0) - (2,1) - (1,1) - (1,2) - (0,2) - ciclu) pagecoords transformate cu culoare verde; draw ((2.0) .. (2.1) .. (1.1) .. (1.2) .. (0.2)) pagecoords transformate; drawarrow ((0,0) - (2,2)) pagecoords transformate; endfig; beginfig (2) draw (pentru i = 0 până la 7: dir (135i) - ciclu final) pagecoords transformate; endfig; pagecoords: = identitate scalată 15mm deplasată (100mm, 150mm); beginfig (3); % declară căile de utilizat calea p [], p [] t; % stabiliți puncte definind relațiile z1 = (0,0); z2 = z1 + 2up; z3 = z1 + orice * dir (60) = z2 + orice * dir (-50); z4 = z3 + (- 1,5, -. 5); z5 = z1 + dir (135); z0 = orice [z1, z2] = orice [z3, z4]; % configurați căi p0 = fullcircle yscaled .5 rotit 45 deplasat z0; p1 = z2 --- z4..z0..z3 --- z1; p2 = p1 cutbefore p0 cutafter p0; p3 = p0 cutbefore p1 cutafter p1; p4 = p2 --- p3 --- ciclu; % definește versiunile transformate ale căilor și punctelor pentru i = 0 până la 4: p [i] t = p [i] pagecoorduri transformate; endfor pentru i = 0 până la 5: z [i] t = z [i] pagecoords transformate; endfor % face niște desene umpleți p4t cu culoare (1,1,0,2); desenează z1t --- z2t cu culoare .5 alb; desenează z3t --- z4t cu culoare .5 alb; pickup în cerc; trage p0t puncte puncte retrase scalate .3; desenați p1t întrerupt uniform; desenează p2t cu culoare albastră; desenați p3t cu roșu de culoare; label.lrt (btex $ z_0 $ etex, z0t); label.llft (btex $ z_1 $ etex, z1t); label.top (btex $ z_2 $ etex, z2t); label.rt (btex $ z_3 $ etex, z3t); label.llft (btex $ z_4 $ etex, z4t); pentru i = 0 până la 4: drawdot z [i] t withpen pencircle scaled 2; endfor endfig; pa
Fișierele astfel generate pot fi utilizate în TeX prin comenzile LaTeX \ includegraphics , ConTeXt \ externalfigure , Plain TeX \ epsfbox sau (în Plain pdftex) prin comanda \ convertMPtoPDF din supp-pdf.tex . Pentru a vedea sau tipări al treilea grafic, este necesară includerea, deoarece fonturile Metafont nu sunt incluse în fișierele eps generate de MetaPost.
Notă
- ^ Întrebări despre METAFONT și MetaPost , pe linux.it . Adus la 25 mai 2020 (Arhivat din original la 15 martie 2012) .
Elemente conexe
Alte proiecte
- Wikimedia Commons conține imagini sau alte fișiere pe MetaPost