Suomi24 Keskustelussa on viikonlopun aikana ollut poikkeuksellisen paljon bottien automaattiseti luomia kommentteja. Pahoittelemme tästä aiheutunutta harmia. Olemme kiristäneet Keskustelujen suojausasetuksia ja kommentointi on toistaiseksi estetty ulkomailta.

Tietokonegrafiikkaa

pixy

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).

1

86

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • 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

    1. 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 kohta
      Ikävä
      80
      1965
    2. Tietysti jokainen ansaitsee

      Hän varmasti ansaitsee vain parasta ja sopivinta tietenkin, suon sen onnen hänelle enemmän kuin mielelläni. Aika on nyt
      Ikävä
      18
      1743
    3. Millä voin

      Hyvittää kaiken?
      Ikävä
      16
      1604
    4. 50+ naiset kyl

      Lemottaa sillille mut myös niitte kaka lemottaa pahlle ku kävin naiste veskis nuuhiin
      Ikävä
      20
      1356
    5. Vä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 aiv
      Työpaikkaromanssit
      6
      1262
    6. En 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 toisee
      Ikävä
      12
      1254
    7. hieman diabetes...

      Kävin eilen kaverin kanssa keskusapteekissa kun on muutama kuukausi sitten tullut suomesta ja oli diabetes insuliinit lo
      Pattaya
      12
      1236
    8. Jotain puuttuu

      Kun en sinua näe. Et ehkä arvaisi, mutta olen arka kuin alaston koivu lehtiä vailla, talven jäljiltä, kun ajattelen sinu
      Ikävä
      45
      1233
    9. Miten 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ää
      Tunteet
      10
      1212
    10. Annetaanko olla vaan

      Siinä se, tavallaan kysymys ja toteamuskin. Niin turhaa, niin rikkovaa. On niin äärettömän tärkeä, ja rakas olo.. N
      Ikävä
      29
      1191
    Aihe