Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Szybkie rysowanie elips i wypełnianie figur na graficznym LCD

11 Cze 2010 13:37 4386 11
  • Poziom 12  
    Jest to niejako kontynuacja tematu "Wyświetlacz S1D15705 - śmieci przy zapalaniu pojedynczych pikseli". Ze wszystkim się uporałem ale, teraz borykam się z szybkimi metodami rysowania figur geometrycznych. O ile prostokąty/kwadraty da się szybko rysować o tyle elipsy/okręgi już nie. Poza tym rysowanie figur wypełnionych też nie idzie zbyt szybko - nawet wypełnianie prostokątów zajmuje trochę czasu. Program piszę w C.
    W tej chwili mam działające funkcje oparte na wzorach matematycznych (elipsa/okrąg) ale rysowanie idzie dość długo, a zależy mi na tym żeby odbywało się to jak rysowanie linii/prostokątów/kwadratów. A jeszcze lepiej by było gdyby nie trzeba było korzystać z biblioteki "math.h" bo to dodaje do programu ~1kB.

    Czy macie jakieś pomysły, gotowe przykłady takich funkcji?
  • Poziom 12  
    Dzięki. Na pewno sprawdzę po weekendzie, ale wygląda sensownie.

    A coś do wypełniania szybkiego?
  • Użytkownik usunął konto  
  • Poziom 12  
    Elipsy nie działają - pozostaję przy moim sposobie, a te algorytmy wypełniania są dobre do użytku typu Paint, a ja wiem jakie są granice tych figur.

    W międzyczasie dopisałem procedury obsługujące znaki do wysokości 16px i szerokości dowolnej - ograniczeniem jest jak na razie pamięć programu. Potem tablice czcionek (które zajmują sporo miejsca) przeniosę do EEPROM'u albo wew/zewnętrznej pamięci FLASH. Powstał równierz prosty program do tworzenia takich czcionek - jest jeszcze rozwijany bo brakuje mu sporo do pełnej użyteczności.

    W załącznikach:
    - program na PC do tworzenia czcionek
    - moduł z procedurami dla wyświetlacza na kontrolerze S1D15705 (S1D15710 po kilku zmianach)
    Załączniki:
  • Użytkownik usunął konto  
  • Poziom 12  
    Akurat linie to się u mnie rysują szybko - problem jest tylko z elipsą i wypełnianiem figur. Elipsa z wcześniej podanych przykładów działała tak że w 4 miejscach (góra, dół, prawo i lewo na krańcach elipsy) powstawały 2 linie o wspólnym początku (taki daszek) składające się z 2-4 punktów i na tym rysowanie się kończyło. Fakt że przykład był w Pascalu, ale ten język znam dużo lepiej nić C i przekład na C nie był problemem. Więc w przykładzie musiał być jakiś błąd - już nie dochodziłem bo zająłem się trybem tekstowym.
  • Użytkownik usunął konto  
  • Poziom 12  
    Też myślałem o bajtach, ale na granicach nie będzie już tak prosto.
    Co do linii: nie tyle szybko co prędkość jest na tyle duża że nie widzę jak je rysuje, one po prostu się pojawiają, ale wypróbuję sposób który podałeś wcześniej.
  • Poziom 12  
    Linie działają ładnie, ale elipsy po naprawie mojego błędu (zły typ zmiennych) nadal źle wyświetla. Ale co ciekawe małe elipsy po części rysują się dobrze ale tylko krańce lewy i prawy - góra i dół jak wcześniej, a duże całkiem źle wychodzą. Co zauważyłem XChange jest liczone źle i nie mogę tego w żaden sposób obejść - ani typ zmiennej nie pomaga ani rozbijanie obliczenia na kilka części.
    Jakieś inne pomysły?
  • Użytkownik usunął konto  
  • Poziom 12  
    Temat nieaktualny - zamykam.