Metapost. /default/texmf/doc/metapost/base> och i Knuths Metafont-bok. IPLab, Nada, KTH Staffan Romberger 03-09-26



Relevanta dokument
Exempel add 2 div Stackens successiva utseende med toppen åt höger:

Matrisen och sidan forts.

varandra. Vi börjar med att behandla en linjes ekvation med hjälp av figur 7 och dess bildtext.

SF1626 Flervariabelanalys Tentamen Måndagen den 27 maj, 2013

Grafisk produktion och tryckkvalitet TNM015

UPPGIFT 2 KVADRATVANDRING

9-1 Koordinatsystem och funktioner. Namn:

Laborationer i kursmomentet Datoranvändning E1. Laboration nr 5: Mer om FrameMaker

Svängningar - laborationsrapport + L A TEX-nyttigheter Fysik - mekanik och vågor (FAFA01) Första utkastet 12 maj 2014

ATT RITA GRAFER MED KOMMANDOT "PLOT"

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

InkScape. Inkscape är ett gratisprogram för objektgrafik (vektorgrafik) Man använder programmet till att illustrera, rita, skapa logotyper och figurer

2D1342 Programkonstruktion för F1, ht 2006

Sockets: server. with Ada.Command_Line; use Ada.Command_Line; with Ada.Exceptions; use Ada.Exceptions; with Ada.Text_IO; use Ada.

Styra olika typer av objekt som animering, video, ljud och Flashfilm

Rita med ritstift. Raka banor Klicka med Ristiftet vid varje hörn.

Linjen P Q tangerar cirkeln i P och enligt en sats i geometrin är OP vinkelrät. tan u = OP. tan(180 v) = RS. cos v = sin v = tan v, tan v = RS.

Kurvlängd och geometri på en sfärisk yta

Matematik 2 Digitala övningar med TI-82 Stats, TI-84 Plus och TI-Nspire CAS

Guide för PDF/A Författare Avd Telefon Datum Version Sid Göran Lindqvist (9)

Komposanter, koordinater och vektorlängd Ja, den här teorin gick vi igenom igår. Istället koncentrerar vi oss på träning inför KS3 och tentamen.

Guide för pdf-formulär

Quiz name: FV4 Date: 10/03/2015 Question with Most Correct Answers: #2 Total Questions: 11 Question with Fewest Correct Answers: #3

Partiklars rörelser i elektromagnetiska fält

Innehållsförteckning

Vektorgeometri för gymnasister

ANDRAGRADSKURVOR Vi betraktar ekvationen

Matematik och modeller Övningsuppgifter

AB2.1: Grundläggande begrepp av vektoranalys

Kapitel 16 Situationplan... 3

Matematik 1 Digitala övningar med TI-82 Stats, TI-84 Plus och TI-Nspire CAS

Att använda bildhanteringsprogram, del 2

Observationer rörande omvandling av digitala yttäckande vektordata till rasterformat.

Laboration i Fourieroptik

BERÄKNING AV KURVINTEGRALER (LINJEINTEGRALER)

SF1624 Algebra och geometri Tentamen Onsdagen 29 oktober, 2014

Skapa en pdf-fil med hög kvalitet, lämpad för tryckning Skapa pdf-filen i en PC med Windows Skapa pdf-filen i en Mac

Verktyget Ritstift är ett kraftfullt verktyg när man vill rita raka linjer, Bézierkurvor och komplexa former. Verktyget Penna är enklare att använda

Självkoll: Ser du att de två uttrycken är ekvivalenta?

Lathund för att arbeta med pdf

TANA17 Matematiska beräkningar med MATLAB för M, DPU. Fredrik Berntsson, Linköpings Universitet. 9 november 2015 Sida 1 / 28

Innehållsförteckning

Överbyggnadsbeskrivning

Vektoranalys, snabbrepetition. Vektorfält

Introduktion till Gnuplot

Laborationsrapport för laboration 2 i ESS010 Elektronik. Olle Ollesson 29 september 2012 Handledare: Sven Svensson

Programmering A. Johan Eliasson

Övningsuppgift 8. ArchiCAD 16. Eget Bibliotek ! Med kopieringsrätt för Peder Skrivares skola, Varberg

SCRIBUS grund. Guide och uppgifter. ITlyftet Gunnar Markinhuhta. Sida 1

Stefan Nilsson

Användarhandledning pcskog Bmwin 2011

Laboration 10: LaTeX. Redovisning. Omgivningen document. Början. Instruktionerna nedan. Repetitionsuppgifter

Elektromagnetiska fält och Maxwells ekavtioner. Mats Persson

NATIONELLT PROV I MATEMATIK KURS E HÖSTEN 1996

Vektorer. 1. Vektorer - definition och räkneoperationer F H

Rhino3D. Schackbräde. Krav. Några detaljer som kan vara bra att känna till:

2D1339 Programkonstruktion för F1, ht 2003

Tentamen Mekanik F del 2 (FFM520)

Kapitel 2 Vägg/golv... 3

SF1626 Flervariabelanalys Lösningsförslag till tentamen DEL A

16 Programmering TI -86 F1 F2 F3 F4 F5 M1 M2 M3 M4 M5

LABORATIONSHÄFTE NUMERISKA METODER GRUNDKURS 1, 2D1210 LÄSÅRET 03/04. Laboration 3 3. Torsionssvängningar i en drivaxel

LATHUND PA-WEBBEN KOMPETENSSÖKNING. Version Sida 1 av 7

Modul 1: Komplexa tal och Polynomekvationer

TMV036 Analys och linjär algebra K Kf Bt, del C

Riksarkivets författningssamling

NYHETER I AUTOCAD 2006

SF1626 Flervariabelanalys Bedömningskriterier till tentamen Onsdagen den 15 mars 2017

Lite om reella tal. Programmering. I java. Om operatorers associativitet och prioritet

1 Paint. 1.1 Öppna Paint. 1.2 Rita linjer

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Dagens ämnen. Repetition basbyten och linjära avbildningar Diagonalisering Kvadratiska former. Andragradskurvor

J A G T Ä N K E R, D Ä R F Ö R Ä T E R J A G.

Grafik i DrRacket AV TOMMY KARLSSON

TAIU07 Matematiska beräkningar med Matlab

Tentamen OOP

SF1626 Flervariabelanalys Lösningsförslag till tentamen DEL A. 1. En svängningsrörelse beskrivs av

2D1339 Programkonstruktion för F1, ht 2003

Tentamen i Robotteknik MPR211, 12 mars 1999

LINJÄRA AVBILDNINGAR

6. Räkna ut integralen. z dx dy dz,

Öppna bilden C:\Photoshop5-kurs\Bananer 96ppi.psd. Aktivera verktyget Färgpyts i verktygslådan.

Fräs Manual CNC. COPYRIGHT ( ) peter@pdahlen.se

Twincat: PLC Control

UMEÅ UNIVERSITET Datavetenskap. Praktiska uppgifter. Metoder och verktyg för datavetare Ht07

9 NAVIGATIONSUTRUSTNING

Manual för Typo3 version 4.04

Ellära. Laboration 3 Oscilloskopet och funktionsgeneratorn

Topocad nyheter från version 15.0

Tema Linjär optimering

Tentamen TNM061, 3D-grafik och animering för MT2. Onsdag 20/ kl SP71. Inga hjälpmedel

Excelfiler läggs till i ArcMap på samma sätt som annan data, genom Lägg till Data-knappen.

Uppsala Universitet Matematiska Institutionen Thomas Erlandsson

diverse egenskapspaletter

SF1626 Flervariabelanalys Lösningsförslag till tentamen DEL A

Gemensamt projekt: Matematik, Beräkningsvetenskap, Elektromagnetism. Inledning. Fysikalisk bakgrund

Del A: Digitala verktyg är inte tillåtna. Endast svar krävs. Skriv dina svar direkt på provpappret.

Exempel :: Spegling i godtycklig linje.

Kompletterande lösningsförslag och ledningar, Matematik 3000 kurs A, kapitel 6

1. För vilka värden på konstanterna a och b är de tre vektorerna (a,b,b), (b,a,b) och (b,b,a) linjärt beroende.

Transkript:

Metapost Metafont är det teckensnittsdesignprogram som D E Knuth skapade för TeX-projektet. Det är ett ritprogram som innehåller en del matematikkunskap. John Hobby inspirerades till att göra ett lite generellare ritprogram, Metapost, som istället för teckensnittsfiler skapar Postscript-filer. I många fall är Metapost ett lämpligt verktyg när man ska göra tekniska illustrationer. Dokumentation finns i John D Hobby: A user s manual for Metapost </pkg/tetex /default/texmf/doc/metapost/base> och i Knuths Metafont-bok.

Exempel 1 beginfig(1); u=1cm; draw (2u,2u)- -(0,0)- -(0,3u)- - (3u,0)- -(0,0); pickup pencircle scaled 4pt; for i=0 upto 2: for j=0 upto 2: draw (i*u,j*u); endfort endfor endfig; end Resultatet blir: Med Metapostkoden i filen ex1.mp gör man mpost ex1 och får ex1.1 som innehåller Postscriptkod som döps om till ex11.mps och kan infogas i ett Latex-dokument med \usepackage{graphics} \insertgraphics{ex1.mps} som kompileras med pdflatex.

Genererad Postscript %!PS %%BoundingBox: -2-2 86 86 %%Creator: MetaPost %%CreationDate: 2003.08.26:1318 %%Pages: 1 %%EndProlog %%Page: 1 1 0 0.5 dtransform truncate idtransform setlinewidth pop [] 0 setdash 1 setlinecap 1 setlinejoin 10 setmiterlimit newpath 56.6929 56.6929 moveto 0 0 lineto 0 85.03935 lineto 85.03935 0 lineto 0 0 lineto stroke 0 3.98505 dtransform truncate idtransform setlinewidth pop newpath 0 0 moveto 0 0 rlineto stroke newpath 0 28.34645 moveto 0 0 rlineto stroke newpath 0 56.6929 moveto 0 0 rlineto stroke newpath 28.34645 0 moveto 0 0 rlineto stroke newpath 28.34645 28.34645 moveto 0 0 rlineto stroke newpath 28.34645 56.6929 moveto 0 0 rlineto stroke newpath 56.6929 0 moveto 0 0 rlineto stroke

newpath 56.6929 28.34645 moveto 0 0 rlineto stroke newpath 56.6929 56.6929 moveto 0 0 rlineto stroke showpage %%EOF

Infoga i MSWord Postscript-filen kan infogas i ett MSWorddokument om man redigerar filen så att den börjar med %!PS-Adobe-3.0 EPSF-3.0 och har filnamnstillägget.eps och därefter konverterar den till PDF med GhostView. EPSfilen kan istället monteras direkt. En mp-fil kan innehålla många bilder omgivna av beginfig(bildnummer); endfig;. Varje sådan bild ger en Postscriptfil med bildnumret som tillägg. Metaposts datatyper är numeric (tal), pair (punkt), path (kontur), picture (figur), färg, transformation. Koordinaterna är i Postscripts startsystem. Konturer består av punkter förbundna med rät konturlinje»--» eller med splinekurvor beskrivna på olika sätt»..»,»»,»..controls p and q..»,»riktning..»,»..riktning»,»..tension t..»,»{curl n}..».

Splines i Metapost p1..controls p2 and p3..p4 beskriver kurvan x = (1 - t) 3 p 1 + 3(1 - t) 2 tp 2 + 3(1 - t)t 2 p 3 + t 3 p 4 Detta är ett Bernstein-polynom av grad 3 och kurvan är en Bezier-spline. Kurvan ligger inom fyrsidingen med p i som hörn. Med p1..p2 får man approximativt cirkelbågar och med p1 p2 får man, om möjligt, ett kurvsegment utan inflexionspunkt. Om man avslutar kurvbeskrivningen med cycle får man en sluten kurva. Man kan ange riktningen vid punkterna med {riktning} som dir v, p, (x,y) eller någon inbyggd riktning (right, up, left, down). Man kan styra krökningen vid en punkt med {curl s} med s=1 som skönsvärde. Man kan slutligen ange»spänningen» i kurvsegmentets halvor som..tension s 1 and s 2.. eller..tension s.. Skönsvärdet är 1 och måste vara större än 3/4. Man kan behöva experimentera med dessa styrmöjligheter. Riktningsangivelse är nog mest användbart.

Dialog Metapost kan lösa linjära ekvationssystem och variabler kan skrivas ut under tolkningen med show v-lista;

Exempel 2 (niopunktscirkeln) beginfig(2); u=1cm; A=origin; B-A=7u,0); C-A=(u,5u); D=.5[A,B]; E=.5[B,C]; F=.5[A,C]; G=whatever[B,C] =whatever[a,a+((c-b) rotated 90)]; H=whatever[A,C] =whatever[b,b+((c-a) rotated 90)]; I=whatever[B,A] =whatever[c,c+((b-a) rotated 90)]; X=(A G) intersectionpoint (C I); J=.5[A,X]; K=.5[B,X]; L=.5[C,X]; N=whatever[.5[D,I], (.5[D,I]+((D-I) rotated 90))] =whatever[.5[d,h], (.5[D,H]+((D-H) rotated 90)]; r=arclength(i--n); draw A B--C--cycle; draw A--G; draw B--H; draw C--I; draw fullcircle scaled 2r shifted N; dotlabel.bot(btex $A$ etex,a); dotlabel.bot(btex $B$ etex,b); dotlabel.top(btex $C$ etex,c); dotlabel.lrt(btex $D$ etex,d); dotlabel.urt(btex $E$ etex,e); dotlabel.ulft(btex $F$ etex,f); dotlabel.urt(btex $G$ etex,g); dotlabel.ulft(btex $H$ etex,h); dotlabel.llft(btex $I$ etex,i); dotlabel.lft(btex $J$ etex,j); dotlabel.ulft(btex $K$ etex,k); dotlabel.lrt(btex $L$ etex,l);

dotlabel.top(btex $N$ etex,n); dotlabel.lrt(btex $X$ etex,x); endfigure;

Montering Om man monterar figuren direkt i MSWord kommer inte säkert texten med. Texten kommer ut när man sätter ett dokument med figuren i Latex och det går att få med texten till MSWord och PDF-filer. Med Acrobat kan man beskära figuren ur PDF-filen genererad av pdflatex och sedan montera den.

Transformation Punkter, konturer och figurer kan transformeras med rotated v, scaled s, shifted p, slanted s, xscaled x, yscaled y, zscaled p, reflectedabout p1 p2, rotatedaround p v. Identitetstransformationen heter identity. s[p1,p2] är punkten p1+s(p2 p1). whatever är ett godtyckligt tal. c1 intersectionpoint c2 är skärningspunkten mellan konturerna (det finns regler när det är många skärningspunkter). arclength ger längden av en kurva. Prioriteterna mellan operatorerna är väldefinierade men inte alltid intuitiva; man kan sätta ut parenteser. label sätter ut en figur, vanligen text, vid en punkt. Man kan med ett suffix ange var i förhållande till punkten utmärkningen ska sättas. dotlabel markerar också punkten tydligt. Dessutom finns kommandon för linjemönster, pilspetsar, pennform, fyllning, radering, maskning, makrodefinition m.m.

Exempel 3 beginfig(3); path a, b, aa, ab; a=fullcircle scaled 2cm; b=a shifted (0,1cm); aa=halfcircle scaled 2cm; ab=buildcycle(aa,b); picture pa, pb; pa=thelabel(btex $A$ etex, (0,-.5cm)); pb=thelabel(btex $B$ etex. (0,1.5cm)); fill a withcolor.7white; fill b withcolor.7white; fill ab withcolor.4(1,0,0); unfill bbox pa; draw pa; unfill bbox pb; draw pb; label.lft(btex $U$ etex, (-1cm,.5cm)); draw bbox currentpicture; endfig; Standardcirkeln har radie 1 och börjar i vinkel 0. Med buildcycle görs en sluten kurva, om möjligt, av parametrarna mellan successiva skärningspunker. Färger är vektorer med 3 komponenter, R, G och B. 0 motsvarar

svart=ingen färg. bbox är en omslutande box (axelparallell rektangel).

Exempel 4 beginfig(4); boolean timetofillbox; timetofillbox:=true; partway:=0.9; l:=.75in; u:=1.75in; n:=4; theta:=360/n; z1=(0,u); for i:=2 upto n: z[i]=z1 rotated ((i-1)*theta); endfor forever: path p; p:=z1 for j:=2 upto n: --z[j] endfor --cycle; if timetofillbox: fill p; timetofillbox:=false; else: unfill p; timetofillbox:=true; fi pair Z[]; for j:=1 upto n: Z[j]:=partway[z[j-1],z[j]]; endfor Z1:=partway[z[n],z1]; for j:= 1 upto n: x[j]:=xpart Z[j]; y[j]:=ypart Z[j]; endfor if not timetofillbox: l:=abs(z1); fi exitif l<0.05u; endfor endfig;

Resultat Boken Michel Goossens, Sebastian Rahtz och Frank Mittelbach (1997) The Latex graphics companion. Addison Wesley. innehåller mycket information om att infoga bilder i Latex och annat om bilder i digitala dokument.

Koordinattransformation vid rotation Nedanstående gur och formler troliggör formeln för koordinattransformation vid rotation av koordinatsystemet. y y H B P D G F C x O A E x x = OC y = OD x = OA = OE AE = OE F C = x cos v y sin v y = GB+OG = DH+OG = x sin v+y cos v dvs. (x, y) = (x, y ) ( cos v sin v sin v cos v ) 1

Omgivningen picture Ett alternativ till att infoga bilder genererade med Metapost är att använda Latex omgivning picture. En vinst med detta är bättre portabilitet. Enheten i koordinatsystemet sätts med t.ex. \setlength{\unitlength}{25mm}. Omgivningen specificeras med begin{picture}(bredd, höjd)(ll-x,ll-y) end{picture} Måttenheten är \unitlength och origos läge kan utelämnas om origo ligger i nedre vänstra hörnet. Delfigurer utplaceras med \put(x,y){delbild} eller \multiput(x,y)(dx,dy){antal}{delbild}. En delbild kan vara text, \parbox[pos]{bredd}{innehåll} där pos kan vara t eller b ett box-kommando t.ex. \makebox(bredd,höjd)[pos]{innehåll}, \framebox eller \dashbox{mönster} en linje med \line(dx,dy){längd} där dx och dy är 6..0..6 och anger lutningen

en pil med \vector(dx,dy){längd} en cirkel med \circle{diameter} eller svartfylld med \circle*{diameter} rundade hörn med \oval(bredd,höjd)[del] där utelämnad del ger en rektangel med fyra rundade hörn och man kan välja del bland t, l, b, r, tl, tr, bl, br kvadratiska splines med \bezier{antal}(x1,y1)(x2,y2)(x3,y3) eller \qbezier. För den senare får man utelämna antal som är antalet punkter kurvan utmärks med. Man styr linjebredden med \linethickness{bredd}, \thinlines eller \thicklines. En picture-omgivning får innehålla en picture-omgivning.

Exempel 1 \section{exempel 1} \setlength{\unitlength}{1mm} \begin{picture}(20,15) \multiput(0,0)(1,2){7}{\circle*{1}} \multiput(8,0)(2,0){10} {\begin{picture}(0,0) \multiput(0,0)(1,2){7} {\circle*{1}} \end{picture}} \end{picture}

Exempel 2 \section{exempel 2} \setlength{\unitlength}{2mm} \begin{picture}(20,30) \linethickness{1bp} \multiput(0,0)(10,0){3} {\line(0,1){30}} \multiput(0,0)(0,10){4} {\line(1,0){20}} \linethickness{0.3bp} \multiput(5,0)(10,0){2} {\line(0,1){30}} \multiput(0,5)(0,10){3} {\line(1,0){20}} \linethickness{0.1bp} \multiput(1,0)(1,0){19} {\line(0,1){30}} \multiput(0,1)(0,1){29} {\line(1,0){20}} \end{picture}

Exempel 3 \section{exempel 3} \setlength{\unitlength}{1mm} \newcounter{ic} \begin{picture}(25,40) \thicklines \scriptsize \put(5,0){\framebox(15,40){}} \thinlines \multiput(5,37.5)(0,-5){8} {\oval(8,3)[l]% \stepcounter{ic}\makebox(0,0)[r] {\arabic{ic}\,\,}} \put(20,2.5){\oval(8,3)[r]% \stepcounter{ic}\makebox(0,0)[l] {\,\,\arabic{ic}}} \multiput(20,7.5)(0,5){7} {\oval(8,3)[r]% \stepcounter{ic}\makebox(0,0)[l] {\,\arabic{ic}}} \put(6.5,38.5){\circle*{1}} \end{picture}

Maskning i Postscript %!PS % x y box % en box med hörn i (0,0) och (x,y) /box {/y exch def /x exch def newpath 0 0 moveto x 0 rlineto 0 y rlineto x neg 0 rlineto closepath} def /Times-Roman findfont 20 scalefont setfont 72 72 translate gsave 72 72 box gsave stroke grestore clip -12-12 moveto (Text i Times-Roman beskuren till boxen) show -2 18 moveto (Text i Times-Roman beskuren till boxen) show -22 48 moveto (Text i Times-Roman beskuren till boxen) show grestore

Maskning med teckenkontur gsave /Times-Roman findfont 100 scalefont setfont 0 80 moveto (A) true charpath gsave stroke grestore clip 36 108 translate 0 5 360 { newpath gsave rotate 0 0 moveto 300 0 rlineto stroke grestore } for grestore showpage

Slumpmönster Rita ett mönster med slumpmässigt svarta och vita rutor. /picstr 64 64 mul string def 0 1 64 dup mul 1 sub {/i exch def picstr i rand 1073741800 ge {0}{255} ifelse put} for 72 72 translate 144 144 scale 64 64 8 [64 0 0-64 0 64] {picstr} image

Viktiga Unix-program ghostview visning av Postscript ps2pdf motsvarar distiller eps2pdf behåller omgivningsboxen ps2eps genererar omgivningsbox eps2eps rensar bort vissa fel ps2ascii extraherar text pdf2ps printafm eps2tiff skaper förhandsbild od oktal dump iconv teckenkodskonvertering locale avläs lokaliseringsinformation

Viktiga tecken i Unicode <BR>* *U+00A0 NO-BREAK-SPACE <BR>* *U+2002 EN-SPACE <BR>* *U+2003 EM-SPACE <BR>* *U+2013 EN-DASH <BR>* *U+2014 EM-DASH <BR>*»*U+00BB RIGHT POINTING GUILLEMET <BR>*Å*U+00C5 LATIN CAPITAL LETTER A WITH RING ABOVE <BR>*Ä*U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS <BR>*Ö*U+00D6 LATIN CAPITAL LETTER O WITH DIAERESIS <BR>*å*U+00E5 LATIN SMALL LETTER A WITH RING ABOVE <BR>*ä*U+00E4 LATIN SMALL LETTER A WITH DIAERESIS <BR>*ö*U+00F6 LATIN SMALL LETTER O WITH DIAERESIS <BR>*þ*U+00FE LATIN SMALL LETTER THORN <BR>*א*U+05D0 HEBREW LETTER ALEF <BR>* *U+2019 RIGHT SINGLE QUOTATION MARK <BR>* *U+201D QUOTATION MARK RIGHT DOUBLE

Moiré Parallella linjer med frekvenser f1 och f2: fm= f1 f2 ; pm=1/ f1 f2 Linjegrupper i vinkel v: vm=v/2; fm=f/(2 sin(v/2))