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.
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
Oho, se olikin 21 x 21. Kertoisitko koordinaatit uudestaan? Kuvissa pitää olla väli. (en tajunnut laskusta mitään)
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; }
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.
Ää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.
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ä.
Joo kuva oli kuvankäsittelyvirheestä ja hätäisestä ajattelusta.
Aihe on jo aika vanha, joten et voi enää vastata siihen.