Seuraavat tehtävät tulevat usein vastaan, jos aikoo piirtää vaikka jonkin
käyrän tietokoneella:
1. Muunnos sovelluskoordinaateista ikkunan pikselikoordinaatteihin.
Pikselin paikka ikkunassa olkoon
xp = pikselin etäisyys vasemmasta reunasta (pikseleitä). xp >= 0
yp = pikselin etäisyys yläreunasta, jolloin siis yp-akseli osoittaa alaspäin.
yp >= 0. Pikselit oletetaan neliön muotoisiksi.
Sovelluskoordinaatisto on tavanomainen koulukoordinaatisto, missä y-akseli
osoittaa ylöspäin. Olkoon ikkunan vasen alakulma sovelluskoordinaateissa
(x0, y0) ja oikea yläkulma (x1, y1).
Ikkunan piirtoalueen leveys on w pikseliä ja korkeus h pikseliä. Annettava
muunnos sovelluskoordinaateista (x,y) pikselikoordinaateiksi (xp, yp):
xp = ax b,
yp = cx d.
Määrättävä a, b, c ja d.
2. Tietokoneen näytöllä on käytettävissä suorakulmainen alue, jonka leveys
on W pikseliä ja korkeus H pikseliä. Tähän alueeseen on asetettava
mahdollisimman suuri ikkuna, jonka piirtoalueen korkeuden suhde leveyteen on q.
Ikkunassa on kehykset. Yläkehyksen paksuus on a pikseliä ja sivu- ja alakehysten
paksuus on b pikseliä. Määrättävä ikkunan leveys w ja korkeus h
(kehykset mukaan luettuna).
Tietokonegrafiikkaa
1
86
Vastaukset
- pixy
Oma versioni tehtävien ratkaisusta:
1. x-pikselikoordinaatti saadaan verrannosta
px / w = (x - x0) / (x1 - x0), mistä
px = (w / (x1 - x0)) (x - x0), jolloin
a = w / (x1 - x0) ja b = -w*x0 / (x1 - x0).
y-pikselikoordinaatti saadaan verrannosta
py / h = (y1 - y) / (y1 - y0). mistä
py = h*(y1 - y) / (y1 - y0), jolloin
c = -h / (y1 - y0) ja d = h*y1 / (y1 - y0).
Jos pikselikoordinaatit pitää muuttaa kokonaisluvuiksi, niin termeihin b ja d
lisätään 0.5, jolloin voidaan käyttää pyöristystä katkaisemalla ((int)-cast).
2. Ikkunan sijoitukselle on kaksi vaihtehtoa:
2.1. Ikkuna täyttää alueen sivusuunnassa, jolloin ikkunan leveys w = alueen
leveys W. Silloin piirtoalueen leveys on W - 2b ja korkeus q*(W - 2b). Siitä
saadaan ikkunan korkeudeksi q*(W - 2b) a b
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Voitasko leikkiä jotain tunnisteleikkiä?
Tietäisi ketä täällä käy kaipaamassa.. kerro jotain mikä liittyy sinuun ja häneen eikä muut tiedä. Vastaan itsekin kohta801965Tietysti jokainen ansaitsee
Hän varmasti ansaitsee vain parasta ja sopivinta tietenkin, suon sen onnen hänelle enemmän kuin mielelläni. Aika on nyt181743- 161604
50+ naiset kyl
Lemottaa sillille mut myös niitte kaka lemottaa pahlle ku kävin naiste veskis nuuhiin201356Välitän sinusta mies
Kaikki mitä yritin kertoa tänään ei mennyt ihan putkeen..Joka jäi jälkeenpäin ajateltuna suoraan sanottuna harmittaa aiv61262En voi sille mitään
Tulen niin pahalle tuulelle tästä paikasta nykyisin. Nähnyt ja lukenut jo kaiken ja teidän juttu on samaa illasta toisee121254hieman diabetes...
Kävin eilen kaverin kanssa keskusapteekissa kun on muutama kuukausi sitten tullut suomesta ja oli diabetes insuliinit lo121236Jotain puuttuu
Kun en sinua näe. Et ehkä arvaisi, mutta olen arka kuin alaston koivu lehtiä vailla, talven jäljiltä, kun ajattelen sinu451233Miten joku voi käyttää koko elämänsä
siihen että nostelee täällä vanhoja ketjuja ja troIIaa niihin jotain linkkiä mitä kukaan ei avaa? Ihmisellä ei ole mitää101212Annetaanko olla vaan
Siinä se, tavallaan kysymys ja toteamuskin. Niin turhaa, niin rikkovaa. On niin äärettömän tärkeä, ja rakas olo.. N291191