Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[C++] Rotacja bitmapy o 90 stopni.

30 Mar 2011 11:29 1782 1
  • Level 2  
    Witam!
    Mam za zadanie wczytać bitmape i obrócić ją o 90 stopni, rozwiązanie problemu ma nie korzystać z bibliotek do obsługi grafiki. Zadanie wydaje sie banalnie proste bo wystarczy przekopiować nagłówek (zamienić jedynie wysokość z szerokością) i wczytać do macierzy kolejne pixele i transponować macierz. Niestety gdzieś popełniłem błąd i obrazek jest obracany tylko jak wysokość=szerokości.

    Tak wygląda moja reprezentacja pixela

    Code: cpp
    Log in, to see the code


    Tak wczytuje sobie obrazek do macierzy

    Code: cpp
    Log in, to see the code


    A tak obracam i zapisuje


    Code: cpp
    Log in, to see the code


    Przekopałem się przez tony tematów i nie udało mi się znaleźć sensownego rozwiązanie.
    Z góry dziękuje za pomoc.
  • Level 31  
    Trochę Twój kod nie wygląda na rotację. Popatrz, dla narożnika o współrzędnych 0,0 wpisujesz piksel też pod pozycję 0,0. De facto odbijasz obrazek wzdłuż przekątnej.
    Spróbuj innego podejścia. Zakładając, że czytasz wierszami od lewego, górnego rogu, to jeśli będziesz zapisywał od górnego, prawego rogu kolumnami, obraz powinien się przekręcić o 90 stopki przeciwnie do ruchu wskazówek zegara. W tym momencie nie musisz nawet wykonywać przepisywania do drugiej tablicy.
    Poczytaj http://www.google.pl/search?q=how+to+rotate+bitmap - są gotowe źródła choćby w pierwszym linku.