Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: Kuvien asettelu ruudukoksi

Sivun loppuun

TVdata [17.06.2013 16:32:14]

#

Eli minulla on alustettu yhdeksän kuvaa slick2d kirjastoa käyttäen, joista yksi on keskellä ja muut ympärillä. Nyt keskimmäinen on kohdassa y 200 x 300 eli näytön keskellä. Kuvat ovat kokoa 21 x 26. Mihin koordinaatteihin asetan kuvat? Nyt ruudulla on kolme kuvaa joista yksi leikkaa toista.

jlaire [17.06.2013 16:38:53]

#

En ole varma, vastaako tämä kysymykseen, mutta: (200 + 26*y, 300 + 21*x) missä y ja x ovat {-1,0,1}.

Eli kuvien koordinaateiksi tulee:

y, x
174, 279
200, 279
226, 279
174, 300
200, 300
226, 300
174, 321
200, 321
226, 321

TVdata [17.06.2013 17:05:09]

#

Oho, se olikin 21 x 21. Kertoisitko koordinaatit uudestaan? Kuvissa pitää olla väli. (en tajunnut laskusta mitään)

Teuro [17.06.2013 20:32:49]

#

Eli kuvan koordinaatit ovat x, y. Kuvan koko on w ja h pikseliä. Näin ollen reunoilla olevien kuvien koordinaatit voidaan laskea helposti.

kuva_2 olkoon vasemmalle ja ylös. Luodaan kerrointaulukko, jotta kuva liikkuu oikeaan suuntaan. Eli indeksin 0 suunta = -1 indeksi 1 = 0 ja viimeinen on 1. Lopuksi luodaan silmukka, jolla lasketaan koordinaatit. Alla esimerkki aiheesta. Kuvien koot kannattaa toki lukea kuvan tiedoista, ellei se sitten sattumalta ole aina sama.

#include <iostream>

int main(int argc, char** argv) {
    int x = 300;
    int y = 200;
    int h = 21;
    int w = 21;
    int VALI = 2;

    int kerroin[] = {-1, 0, 1};

    for (int i = 0; i < 3; ++i) {
        for (int j = 0; j < 3; ++j) {
            int tmp_x = x + kerroin[j] * w + kerroin[j] * VALI;
            int tmp_y = y + kerroin[i] * h + kerroin[i] * VALI;

            std::cout << tmp_x << ", " << tmp_y << std::endl;
        }
    }

    return 0;
}

Metabolix [17.06.2013 21:00:29]

#

Eikö sinulla todellakaan ole mitään käsitystä, mitä koordinaatit ovat ja miten niillä lasketaan? O_o Jos keskimmäisen kuvan x-koordinaatti on 300 ja kuvan leveys on 21, tietenkin seuraavan kuvan voi laittaa kohtaan 300 + 21 = 321 ja edellisen kuvan kohtaan 300 - 21 = 279. Sama pätee y-koordinaatteihin. Jos haluat välin, muuta koordinaatteja vielä sen verran.

TVdata [18.06.2013 14:04:19]

#

Ääh, kun yritän saada keskimmäisen pisteen, se ei mene keskelle ja siitä on poissa osa alaosaa ja pala sivulta. Ei taida toimia kokoruututilassa.

Teuro [18.06.2013 14:08:28]

#

TVdata kirjoitti:

Ääh, kun yritän saada keskimmäisen pisteen, se ei mene keskelle ja siitä on poissa osa alaosaa ja pala sivulta. Ei taida toimia kokoruututilassa.

Teet jotakin ilmeisen väärin, koska yllä olevalla algoritmilla kuva on takuulla keskellä.

TVdata [18.06.2013 14:13:47]

#

Joo kuva oli kuvankäsittelyvirheestä ja hätäisestä ajattelusta.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta