procedury rysowania po LCD

Feb 27, 2006 16 Replies

Witam



pisze sobie sterownik graficznego LCD i potrzebuje porocedurek rysowania różnych rzeczy. wszystko w C na uC O ile z odcinkiem już sobie poradziłem prawie i jest nawet ładny to kółko i okrąg mnie przerażają. Stąd pytanie: czy ktoś to gdzieś widział? rysowanie okręgu w C bez float, bez sin, cos i sqrt?



i pytanie 2 prostsze: o szablon znaków 7x5 lub 8x5? taki do testów, zadany juz tablicą w C.



CosteC


Moze tak przyklady do 8 bitowcow z lat 80...

wyjsc ze wzoru x^2+y^2=r^2

kolo jest symetryczne wiec wystarczy narysowac jedna cwiartke i potem ja odbic...

formatting link

A myslales nad wrzuceniem wspó³rzêdnych punktów okrêgów do tablicy? Pewnie i tak interesuj± Ciê okrêgi o ¶rednicy mniejszej niz wymiary ekranu. Wystarczy wpisac do tablicy tylko dane dla 45stopni i oczywiscie dla wszystkich promieni. Z rysowaniem kol nie ma problemu, wypelniasz po prostu dodatkowo srodek. O ile sie nie pomylilem, dane dla okregow o promieniach do 512 zajma okolo

8KB.

peters

nada się?

formatting link

CosteC przemówił ludzkim głosem:

formatting link

A jak sobie z kreską poradziłeś? IMHO najlepszy jest algorytm Bresenhama. Istnieje również algorytm Bresenhama dla okręgu. Wygooglaj sobie. "Bresenham algorithm" daje mnóstwo odpowiedzi.

TP.

[...]

Wymaga sqrt.

Wystarczy 1/8

Nie wymaga. Zajrzyj pod podany link.

CosteC napisał(a):

[...]

Ja też naspawałem w firmie kupę różnych procedurek do LCD, ujętych w ładną niemałą bibliotekę. No tylko co z tego, jak w praktyce używamy jedynie rysowania wypełnionych prostokątów, czcionek i bitmap oraz obiektów wyższego poziomu składanych z bitmap (progressbar, trackbar, scrollbar itp), czasem ale bardzo rzadko odcinków prostych.

Zastanów się, czy w praktyce rzeczywiście to rysowanie przeróżnych figur będzie Ci w praktyce przydatne...

Algorytmy Bresenhama.

Uwierzysz ze do okregu wystarcza liczby calkowite .. i mnozenie przez

4 ? :-)

J.

1/4 - wiekszosc wyswietlaczy posiada inny aspekt piksela niz 1:1 - dlatego kolo ktore ma byc na wyswietlaczu kolem to w rzeczywistosci elipsa a elipsa ma tylko dwie osie symetrii...

po pierwsze dzięki wszystkim za pomoc. Te algorytmy bardzo mi pomogą.

po drugie ma być koło i okrąg i już :) odcinki też poprawie bo nie jestem z nich zadowolony.

wyświetlacz akurat ma kwadratowy pixel więc jest fajnie.

CosteC

0-957382453-1141117263=:45729 Content-Type: TEXT/PLAIN; charset=iso-8859-2; format=flowed Content-Transfer-Encoding: 8BIT

Podniesienie do potêgi drugiej liczby ca³kowitej wykonuje siê przez jednokrotne przesuniecie bitowe w lewo.

i dla mno¿enia przez 4,8,16 ... analogicznie :)

Odróżniasz mnożenie razy 2 od potęgowania? Bo mam watpliwości...

[...]

Masz racje, zakrêci³em siê.

Te procedury s± REWELACYJNE. W paru miejscach trzeba daæ >= zamiast > i tyle. W razie czego s³u¿ê poprawkami. Odcinki rysujê jak na razie nawet bez INT ale to dlatego ¿e wy¶wietlacz jest dostatecznie ma³y. :-D

Jeszcze raz dziêki.

Pozdrawiam CosteC

Bardzo proszę o te poprawki (na priv); ale ZTCP to to wszystko dobrze działało tak, jak jest teraz.

w.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required