En metodisk løsning av problemet bør kanskje gå etter følgende spor:
Kan problemet dels opp, er det så fall noen opplagt eller smart rekkefølge, eller kan problemene løses hver for seg ?
Hvis vi analyserer den aktuelle oppgaven så involverer den i hvert fall tre problemer:
Hvordan printer vi en skisse på papir?
Hvordan finner vi ut hvor mange punkter som tilsvarer 5cm?
Hvordan tegner vi en hensiktsmessig utbrettet kube?
Vi må da spørre oss om de kan løses hver for seg, og i vilken rekkefølge de i så fall kan eller bør løses.
I dette tilfellet kan problemene åpenbart løses hver for seg.
Når det gjelder rekkefølgen så kan det være at vi må tenke litt nærmere etter.
Hvis vi skal finne ut hvor mange punkter som tilsvarer 5cm på papir, må vi kanskje få utskriften til å virke før vi kan måle.
Vi kan kanskje gå for en strategi der vi løser deloppgavene i den rekkefølgen vi har skrevet dem over.
Hvordan printer vi en skisse
Her får vi starte med å sjekke dokumentasjone av Processing, reference (Links to an external site.)Links to an external site.
Der finner vi en print() funksjon, men den skriver tekst til consolet( tekstområdet unnder koden) så den kan vi ikke bruke.
Men vi har en save() funksjon som kopierer det vi har tegnet til en fil.
Denne må vi kunne bruke og deretter åpne fila i et tegneprogram og printe den derfra.
Vi trenger en måte å starte save-operasjonen. Vi kan velge å bruke et museklikk.
I sum løser vi deloppgave 1 med følgende program.
_terningSave.pde
void setup(){
size(400,400);
}
void draw(){
// hva som helst
line(10,10,200,200);
}
void mouseClicked(){
save("test1.png");
}
Vi kan raskt konstatere at file "test1.png" dukker opp i samme katalog som skissen.
Hvis vi vil kan vi lese den inn i et tegneprogram og printe den.
Hvor mang punkter er 5 cm
Dette er en litt utfordrende oppgave. Vi må i korthet finne ut hvor mange punkter i skissen vi må bruke for å få 1 cm på utskriften. Vi kan lete rundt på nettet etter beskrivelse av skjermoppløsning og finne ut hva som skjer når vi skriver ut fra et skjermbilde, er det slik at en strek er like lang på papir som den er på skjerm ?
Alternativet er at vi prøver oss fram: tegner -> printer -> måler. Hvis vi gjør dette kommer vi fram til at vi treffer ganske bra med 28.6 punkter pr cm. Problemet er imidlertid at dette er tilpasset de settingene tegneprogrammet lar oss bruke år vi spesifiserer utskriften. Løsningen gjelder alså betinget.
Skissen som kan hjelp oss å eksperimenter kan se slik ut:
_terningMeasure.pde
void setup(){
size(600,500);
//hvit bakgrunn
background(255,255,255);
}
void draw(){
// prøver oss fram
// printer og måler og endrer
line(0,10,100,10);
line(0,20,125,20);
line(0,30,130,30);
line(0,40,140,40);
}
void mouseClicked(){
save("test1.png");
}
Hvordan tegner vi en utbrettet terning
Her er det mange muligheter. En løsning som minimaliserer limingen kan jo se slik ut (forminsket):
_terning1.pde
/*
Tegn en utbrettet terning med sidekanter 5 cm
*/
// fra deloppgave 2
float cm=28.4;
void setup(){
size(600,800);
//hvit bakgrunn
background(255,255,255);
}
void draw(){
// marg
translate(20,10);
// fire vertikale
rect(5*cm,0*cm,5*cm,5*cm);
rect(5*cm,5*cm,5*cm,5*cm);
rect(5*cm,10*cm,5*cm,5*cm);
rect(5*cm,15*cm,5*cm,5*cm);
// to på siden
rect(0,5*cm,5*cm,5*cm);
rect(10*cm,5*cm,5*cm,5*cm);
}
// fra deloppgave 1
void mouseClicked(){
save("test1.png");
}
Alternativt
Hvis jeg tror at dette oppsettet med å tegne på en A-4-side var noe jeg kunne få bruk for senere
kan jeg ordne koden min på en alternativ måte.
Jeg kunne ha laget ferdig en skisse som tar seg av dimensjonering og utskrift, se A4 nedenfor
Fordelen ville være at vi hadde en gjenbrukbar komponent som vi kunne bruke i
andre geometrioppgaver der riktige utskriftsdimensjoner er i fokus.
_A4.pde
/*------------------------------------------------------
Eksempelprogram som viser hvordan vi kan lage en A4-side
og tegne på den.
IKKE ENDRE DENNE FILA HVIS DU IKKE ER SIKKER PÅ HVA DU GJØR
-------------------------------------------------------*/
// skalerer slik at vi kan bruke (tilnærmet) cm
// på en A4-side. Du trenger ikke gjøre noe med dette
void lagA4(String navnet){
// punkter pr cm
float sfactor=28.4;
// tenk og skriv i cm, origo oppe til venstre
// og y-aksen nedover
scale(sfactor,sfactor);
// behold en tynn strek
strokeWeight(1/sfactor);
// hvit bakgrunn
background(255);
textSize(18/sfactor);
fill(0);
textAlign(RIGHT);
text(navnet,20,1);
textAlign(LEFT);
fill(255);
// sett origo 1 cm inn og ned på siden
translate(1,1);
}
//----------------------------
// når programmet starter
void setup(){
// tilnærmet A4
size(596, 843);
//frameRate(1);
}
//-----------------
// tegn ut
void draw(){
// så tegnes din tegning
minTegning();
}
//---------------------------------------------
// Når du klikker kopieres vinduet til
// en til en tegning du kan skrive ut senere
void mouseClicked() {
save("resultat.png");
}
og
_dittSvar.pde
/*
Her kan du lage din løsning.
Tegne området er et A4-ark md origo oppe til venstre
og du kan tenke i cm
Det er antagelig lurt å lagre denne skissen med et annet navn
enn A4 (menyen: File/SaveAs...)
og du kan legge til flere skisse-filer etter behov
*/
void minTegning(){
// lager A4.format og merker siden med et navn du vil ha på utskriften
lagA4("jens");
// her kommer din kode
}