Witam,
Od jakiegoś czasu bawię się wyświetlaczem graficznym 64x128 na sterowniku UC1601. Powstała potrzeba wykonania kompasu, który wyświetlał będzie strzałkę skierowaną w stronę północną, z wyświetleniem strzałki nie ma żadnego problemu, jednak problem powstaje gdy strzałkę trzeba obrócić. Na chwilę obecną AVR'ka musi do każdej klatki przeliczyć nowe współrzędne wszystkich pikseli obrazka, "obrót" korzysta z jednej z podstawowych macierzy transformacji - macierzy rotacji, a dzięki zredukowaniu liczby operacji zmiennoprzecinkowych do 4 na klatkę osiągam ok 45 odświeżeń ekranu na sekundę.
Jeeednak, co by nie było zbyt pięknie, sposób ten generuje "dziury" w obróconym obrazie, co widać na filmie. I tu powstaje pytanie nad którym się głowiłem już dłuższą chwilę,
Czy istnieje jakiś inny sposób wygenerowania obróconego obrazu ?
Jedyny pomysł jaki mi wpadł jeszcze do głowy to opisać strzałkę za pomocą kolejnych punktów, między którymi generowane będą linie, a następnie wypełniana byłaby jedna połowa. Zasadniczym plusem jest znacznie mniejsza ilość pamięci zajmowana przez wzorzec, zamiast 512 bajtów byłoby ich mniej niż 10.
Film:
Od jakiegoś czasu bawię się wyświetlaczem graficznym 64x128 na sterowniku UC1601. Powstała potrzeba wykonania kompasu, który wyświetlał będzie strzałkę skierowaną w stronę północną, z wyświetleniem strzałki nie ma żadnego problemu, jednak problem powstaje gdy strzałkę trzeba obrócić. Na chwilę obecną AVR'ka musi do każdej klatki przeliczyć nowe współrzędne wszystkich pikseli obrazka, "obrót" korzysta z jednej z podstawowych macierzy transformacji - macierzy rotacji, a dzięki zredukowaniu liczby operacji zmiennoprzecinkowych do 4 na klatkę osiągam ok 45 odświeżeń ekranu na sekundę.
Jeeednak, co by nie było zbyt pięknie, sposób ten generuje "dziury" w obróconym obrazie, co widać na filmie. I tu powstaje pytanie nad którym się głowiłem już dłuższą chwilę,
Czy istnieje jakiś inny sposób wygenerowania obróconego obrazu ?
Jedyny pomysł jaki mi wpadł jeszcze do głowy to opisać strzałkę za pomocą kolejnych punktów, między którymi generowane będą linie, a następnie wypełniana byłaby jedna połowa. Zasadniczym plusem jest znacznie mniejsza ilość pamięci zajmowana przez wzorzec, zamiast 512 bajtów byłoby ich mniej niż 10.
Film:
