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).
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).
Vastaukset 1
Vanhimmat
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