Exempel 40 60 add 2 div Stackens successiva utseende med toppen åt höger:.. 40. 40 60. 100. 100 2. 50



Relevanta dokument
Matrisen och sidan forts.

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

Objektorienterad programmering D2

Svar och arbeta vidare med Student 2008

Påminnelse: en datatyp för bilder. Programmering. En datatyp för bilder. Spegelbild. hh.se/db2004

Tentamen TEN1 HI

Hjälpmedel för kompilatorkonstruktion, DVB004

Programmering A. Johan Eliasson

Programmeringsteknik med C och Matlab

Datorlära 3 Octave Workspace ovh mijlö Skriva text på skärmen Värdesiffror Variabler och typer Strängar Makro Vektorer

Objektorienterad programmering

Tentamen OOP

Grundläggande programmering med C# 7,5 högskolepoäng

2011 Studsvik AB PANORAMA-BILDTAGNING. Tony Björkman

Föreläsning 3.1: Datastrukturer, en översikt

Programmering för språkteknologer II, HT2014. Rum

AB2.1: Grundläggande begrepp av vektoranalys

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

Tentamen Grundläggande programmering

a), c), e) och g) är olikheter. Av dem har c) och g) sanningsvärdet 1.

Föreläsning 4: Poster

Funktioner och grafritning i Matlab

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

För att skriva data till skärmen ( konsolen) används objektet System.out tillsammans med metoden println eller print.

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

OOP Objekt-orienterad programmering

Föreläsning 6: Introduktion av listor

ARKITEKTPROVET 2013 DAG 1. 1: LINJE & VECK [ENKELHET, UNDERSÖKNING] [1H]

Innehållsförteckning. Exempel. Åtkomst & användarhandledning

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

Textsträngar från/till skärm eller fil

Övningar Dag 2 En första klass

Redovisning av inlämningsuppgifter

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

Grunderna i stegkodsprogrammering

Introduk+on +ll programmering i JavaScript

Vektorgeometri för gymnasister

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Introduktion till integrering av Schenkers e-tjänster. Version 2.0

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

Tentaupplägg denna gång

Pixelgrafik. Utdrag ur Adobe Photoshops handbok. Om bitmappsbilder (pixelbilder) Om vektorgrafik (kallas ibland objektgrafik)

Enklast att skriva variabelnamn utan ; innehåll och variabelnamn skrivs ut

Mattestegens matematik

Grafik i DrRacket AV TOMMY KARLSSON

Uppgift 1 ( Betyg 3 uppgift )

Introduktion till programmering. Standardfunktioner. Vad används datorer till? Standardfunktioner. Föreläsning 2. Prelude. $ ghci...

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

TENTAMEN: Design och konstruktion av grafiska gränssnitt DAT215

6 Rekursion. 6.1 Rekursionens fyra principer. 6.2 Några vanliga användningsområden för rekursion. Problem löses genom:

Adobe. Illustrator CS3.

Introduktion till Gnuplot

Programmering A C# VT Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson

Sätt att skriva ut binärträd

Affina avbildningar och vektorgrafik

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

Introduktion till algoritmer - Lektion 3 Matematikgymnasiet, Läsåret Lektion 3

Objektorienterad programmering

Guide för pdf-formulär

Pascal... Pascal. Pascal... Pascal...

Partiklars rörelser i elektromagnetiska fält

Handbok Kig. Dominique Devriese Översättare: Stefan Asserhäll

Pascal. reserverade ord fördefinierade funktioner och procedurer egendefinierade funktioner, procedurer och objekt

Introduktion till programmering SMD180. Föreläsning 2: Variabler, uttryck och satser

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

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Macromedia Flash MX 2004

Föreläsning 13 och 14: Binära träd

Programmeringsuppgifter 1

4.4. Mera om grafiken i MATLAB

Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll,

Föreläsning 10. ADT:er och datastrukturer

MATEMATIK 5 veckotimmar

Designspecifikation den 13 december 2007

SMD 134 Objektorienterad programmering

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

HTML5 Multimedia. Produktion för Webb och Multimedia

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Grunderna i SQL del 1

Tentamen i Objektorienterad modellering och design

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Paket (2) nautisk_mil : constant Float := * foot; ångström : constant Float := 10.0E-10; mile : constant Float := 5280.

Distriktsfinal. Del 1: 7 uppgifter Tid: 60 min Maxpoäng: 21 (3p/uppgift)

Lösningsförslag, tentamen FYTA11 Javaprogrammering

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

RödGrön-spelet Av: Jonas Hall. Högstadiet. Tid: minuter beroende på variant Material: TI-82/83/84 samt tärningar

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

Version Linjär algebra kapiltet från ett ODE-kompendium. Mikael Forsberg

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

5 Grundläggande in- och utmatning

Sammanfattningar Matematikboken Z

Photoshop Elemements 2.0

UPPGIFT 2 KVADRATVANDRING

Design och underhåll av databaser

Polygoner. Trianglar på tre sätt

Innehåll Introduktion... 3 InteractiveScene.config... 3 Scener <scenes>... 3 Typsnitt <fonts>... 3 Övergångar <transitions>...

Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012

Transkript:

Bilder i dator Vi ska se på bilder främst ur perspektivet datorstödd dokumentframställning. Det ligger nog något i talesättet»en bild säger mer än tusen ord.» Man behöver kunna infoga bilder i sina dokument, rita bilder och anpassa bilder så att de passar i dokument. Bilder finns av många slag: fotografier av olika slag, målningar och teckningar, diagram och datorgenererade bilder av 2D- eller 3D-objekt är några exempel. Det finns också många sätt att få in bilder i dator: bilden finns redan i dator, man kan använda bildläsare eller digitalkamera, man kan rita med musen eller ritplatta och något lämpligt program eller man kan göra en beskrivning av bilden (programmera). Det är ibland bra att göra en skiss med penna och papper, bildläsa den och renrita i något ritprogram. Exempel på program är Photoshop, Illustrator för teckning, språk såsom Postscript, Metafont och picture-omgivningen i Latex.

Postscript Postscript är ett»sidbeskrivningsspråk». Operationer påverkar»aktuell sida», en bitkarta (eller en bitkarta för varje delfärg). När en sida är färdig sänder operatorn showpage sidan till tryckverket och bitkartan återställs. Postscript är text som lätt kan överföras mellan program och också kan läsas av människor. Postscript-programmet tolkas normalt av en dator i utskriftsutrustningen. Postscript Language: Reference Manual (Addison & Wesley) 1990. URL Postscript har en lång historia med rötter från Ivan Sutherland vid företaget Evans and Sutherland via John Warnock och John Gaffney vid The ES Design System. John W flyttade till Xerox PARC 1978 och skapade där tillsammans med Martin Newell och Chuck Geschke JAM (John and Martin?) 1981. De gjorde sedan drivrutiner till många av Xerox laserskrivare. Steg mot enhetsoberoende gjordes med språket Press 1982 och med Interpress 1985. Interpress hade ungefär samma funktioner som tidig Postscript men binär lagring. Xerox ville inte släppa Interpress fritt. John W, Chuck G bildade tillsammans med Dough Brotz Adobe 1984 och skapade där Postscript. Ett viktigt steg är att Apple baserade sina laserskrivare på Postscript. Idag använder nästan alla laserskrivare och fotosättare samt många skärmhanterare PS. En ny tendens är att skrivare och skärmar istället arbetar direkt med PDF. PDF kan säga vara en kompilerad och komprimerad form av Postscript utan de programmeringskonstruktioner som finns i Postscript.

Postscript används alltså internt i de flesta datorsystem, men kan också användas som ett språk för människor att konstruera bilder med. Några begrepp i Postscript Aktuell sida trycks med showpage. De flesta geometriska former konstrueras i två steg: Först beskriver man konturer/banor (path). Konturer kan målas med angiven pensel och färg. Figur kan fyllas med angiven färg. Konturer byggs med räta linjer, cirkelbågar och kubiska splines. Färg kan vara gråton eller kulör. Tvåtonsbilder, gråtonsbilder och färgbilder kan infogas. Beskrivning av former underlättas av att man lätt kan ändra koordinatsystemet. Postscript är stackorienterat. Operander läggs på (exekverings-)stacken. Operatorer tar argument från stacken och lägger resultat på stacken samt kan ha bieffekter. Datatyper i Postscript är: integer, real, boolean, array, string, name, dictionary, operator, file, mark, null, save, fontid. Exempel 40 60 add 2 div Stackens successiva utseende med toppen åt höger:.. 40. 40 60. 100. 100 2. 50

Procedurer /average {add 2 div} def.. average. average {add 2 div} Operatorn def gör att proceduren {add 2 div} lagras under namnet average i aktuell symboltabell (dictionary). 17 40 60 average == pstack skriver 50.0 17 Man kan skicka en Postscript-fil till en Postscript-skrivare och få den tolkad och utskriven. Filen bör inledas med: %!PS-Adobe-3.0 Photoshop kan konvertera Postscript och EPS till bildpunktsbild, Acrobat med Distiller kan konvertera till PDF och Ghostview kan visa Postscript och EPS. Några viktiga avlusningshjälpmedel är operatorerna vadsomhelst == skriver toppelementet pstack skriver varje stackelement med == Med x y på stacken ger 180 mul cos exch 180 mul cos add 2 div 0.5(cos(180x) + cos(180y)). /box{ 0 1 rlineto 1 0 rlineto 0-1 rlineto closepath} def 72 72 scale 2 4.5 moveto box 0.04 setlinewidth stroke 5.5 2 moveto box fill showpage x y rlineto closepath

x y moveto num setlinewidth stroke fill showpage name value def Koordinatsystem Initialt är origo i nedre vänstra hörnet, x är åt höger och enheten är 1/72 inch. Koordinatsystemet kan flyttas, skalas, vridas och skjuvas (med transformationsmatris för»homogena koordinater»). Varje utmatningssystem har ett eget koordinatsystem, x. Postscript har alltid ett aktuellt koordinatsystem, x, och en aktuell transformation, T, som konverterar koordinater i det aktuella koordinatsystemet till enhetens koordinatsystem xt = x. En ändring av koordinatsystemet från x till x beskrivs också med en transformationsmatris, T. Om vi låter punkter vara radvektorer kan transformationsmatrisen skrivas som a b 0 c d 0 t x t y 1

men i Postscript skrivs den [a b c d t x t y ] (kallas matrix). Koordinatsystem kan ändras med operatorn matrix concat som åstadkommer T := matrixt eller med någon av t x t y translate [1 0 0 1 t x t y ] s x s y scale matrix=[s x 0 0 s y 0 0] v rotate [cos v sin v sin v cos v 0 0] Transformationer av detta slag är inte säkert kommutativa ordningen kan spela roll. 72 72 scale 2 2 translate /box{newpath 0 0 moveto 1 0 lineto 1 1 lineto 0 1 lineto closepath} def 1 72 div setlinewidth gsave box stroke 1 2 scale box stroke 30 rotate box stroke grestore 3 0 translate box stroke 30 rotate box stroke 1 2 scale box stroke showpage ger En transformationsmatris av formen [1 0 cos v sin v] innebär skjuvning dvs. ändring av vinkeln

mellan koordinataxlarna från 90 till v grader..

Rita en tårta /slice{ newpath 0 0 moveto 1 0 translate 15 rotate 0 15 sin translate 0 0 15 sin -90 90 arc closepath} def newpath x y translate vinkel rotate x y r v 1 v 2 arc % rosett 72 2.54 div dup scale 8 8 translate 4 4 scale 0.05 setlinewidth 2 1 13 { 13 div setgray gsave slice gsave fill grestore 0 setgray stroke grestore 30 rotate } for showpage gsave grestore s x s y scale num setgray fill beg steg gräns proc for

x 1 y 1 x 2 y 2 x 3 y 3 curveto

Text i Postscript Ett teckensnitt är en symboltabell (dictionary) som bl.a. innehåller en procedur för varje tecken en kodningstabell (encoding vector) som avbildar från 0..255 till namn på en»glyfprocedur» metrikinformation Teckensnitt av typ 1 är kodade, alltid konturer, effektiva typ 3, användardefinierade med glyfprocedurer av godtyckligt slag typ 0, sammansatta av tecken ur andra teckensnitt Grundstorleken är 1 enhet /smallfont /Times-Roman findfont 9 scalefont def /medfont /Times-Roman findfont 12 scalefont def /bigfont /Times-Roman findfont 18 scalefont def 228 204 moveto bigfont setfont (Architecture) show 228 174 moveto medfont setfont (In the sense in which Architecture) show 228 160 moveto (is an art) show showpage Architecture In the sense in which Architecture is an art name findfont dict dict faktor scalefont dict dict setfont string show proc string kshow

Litteraler»Litteraler» är skrivsätt för värden. Tecknen ( ) < > [ ] { } / % är specialtecken. Tal: 12-98 +17 -.002-1. 0.0 123.6e10 1E-5 8#1777 Vektor: [ 123 /abc (xyz) ] Procedur: {add 2 div} Symboltabell: << /Type /Font /Subtype /Type1 /BaseFont /Helvetica >> Syntax för strängar string == "(" ch * ")". ch =="\n"! "\r"! "\t"! "\b"! "\f"! "\\"! "\("! "\)"! "\" 0 3 oktala siffror! "\" radbyte! "\" annat tecken! tecken utom \. Sträng i sedecimal form (bas 16) <901fA> Strukturkonventioner Postscript-dokument bör följa»konventioner för strukturering av Postscript-dokument» (DSC version 3.0). Konventionen innebär att man lägger in rader som inleds med %% och således är kommentarer för interpretatorn men som ger viktig information till program som ska hantera Postscript-dokument. EPSF använder dessa funktioner för att beskriva objekt som kan fogas in i Postscriptdokument. En EPSF (encapsulated Postscript file) ska inledas med: %!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: llx lly urx ury där ll betyder»lower left» och ur betyder»upper right». Koordinaterna bestämmer klippning och

relationen mellan EPS-objektets koordinatsystem och omgivningen. En EPS-fil innehåller ofta en lågupplöst bild att visa på skärmen. EPSF-exempel %!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 5 5 105 105 10 setlinewidth 55 10 moveto 45 45 rlineto -45 45 rlineto -45-45 rlineto closepath stroke som bl.a. kan infogas i ett MSWord-dokument eller konverteras till PDF och infogas: Mer om Postscript Ett exempel på att rita en snögubbe. %!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 250 330 340 470 /circle {1 1 moveto 0 1 1 0 360 arc} def % Rita en cirkel och förbered för % nästa med 0,2 radie överlapp % och 0,8 så stor /segment {circle gsave 1 setgray fill grestore stroke 0 1.8 translate 0.8 dup scale}

def % Ögat är en punkt ritad med bred % pensel /eye {0.5 1.5 moveto 0 0 rlineto 0.2 setlinewidth 1 setlinecap stroke} def % Näsan är en fylld triangel /nose {0.9 0.9 moveto 2 1 lineto 0.9 1.1 lineto closepath fill} def /snowman {0 setlinewidth segment segment circle gsave 1 setgray fill grestore stroke nose eye} def % Välj skala så att enheten blir % 1 cm. Placera snögubben mitt % på ett A4-papper. Linjebredden % skalas med koordinatsystemet men % bredd 0 tolkas som minsta möjliga % synliga bredd 72 2.54 div dup scale 10 12 translate snowman

Upplösningstest %!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 0 0 220 220 72 25.4 div dup scale 60 dup scale /min { /a exch def /x exch def a x gt {x} {a} ifelse } def /picstr 2000 string def /j 3 def /m 80 def 2000 2000 8 [2000 0 0-2000 0 2000] {1 1 2000{ /ii exch def /i -3 ii 1 sub 0.003 mul add def % min(255,floor((sin(m* % arctan(x,y))+1)*256)) /f j i atan m mul sin 1 add 256 mul floor 255 min def %från -3 till 3 %beräkna f %lägg i picstr} for picstr ii 1 sub f cvi put} for /j j 0.003 sub def picstr

} image bool proc1 proc2 ifelse om bool är true utförs proc1 annars utförs proc2 bool proc if om bool är true utförs proc int string string string är en teckenvektor med int element numrerade 0..n 1 width height bitspersample matrix datasrc image En bild med height rader, width kolumner, bitspersample bitar per bildpunkt ritas, normalt i enhetskvadraten. matrix avbildar en width height-rektangel på enhetskvadraten i»rad-först-ordning och datasrc lägger en vektor med bilddata på stacken och anropas när image behöver mer bilddata. num floor int int blir floor(num) num cvi int int blir trunc(num) array index any put array[index]:=any

Todo defrita bilder: behovet, frihand och bildläsning eller med ritplatta, banor: Postscript, Illustrator, Metapost, picture, eps, PDF PS: historik, uppbyggnad och exempel, eps Metapost: Metafont, uppbyggnad och exempel picture-omgivningen, andra Latex-paket PDF: Distiller, Acrobat, Gnu, PDF-latex med hjälpmedel och exempel Bilder: lagring: kontinuerliga, bildpunkter, element, program, läsning: bildläsare, kamera, handbildläsare skrivning: bildskärm, laserskrivare, lasersättare, CTP Rastrering, Bildoperationer: geometriska, punktvisa, lokala, transformer Färg: färgseende, färgsyntes, färgomfång, färgrum, kvalitet, kalibrering, karaktärisering, färgtryck Photoshps begrepp, friläggning Datakomprimering, bildlagring, textläsning (OCR) Dokument på webben Presentation/projektion