Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 19 kwi 2024, o 20:35


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 19 lip 2019, o 18:20 
Offline
Użytkownik

Dołączył(a): 03 sie 2017
Posty: 94
Pomógł: 0

Witam,
od pewnego czasu próbuję napisać funkcję rysują okrąg na wyświetlaczu. Na razie udało mi się ustalić, że w funkcji mogą być zawarty tylko takie stałe jak położenie środka okręgu X I Y oraz jego promień R. Na początku chciałem zrobić coś takiego, że bym zmniejszał lub zwiększał wartości A i B które oznaczają najdalej wysunie punkty z każdej strony okręgu, jednak doszedłem do wnioski, że tak nie można, gdyż na okręgu tak naprawdę jest nieskonczenie wiele połączonych ze sobą punktów. Wówczas miałbym narysowany okrąg, ale z przerwami.
Próbowałem kombinować trochę na funkcjach trygonometrycznych i na wzorze który znalazłem w necie[ (x-a)^2+(y-b)^2=r^2)], ale nic konkretnego mi nie wychodzi.

Jeżeli ktoś wie jak można byłoby to zrobić to proszę o pomoc :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lip 2019, o 18:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 19 lis 2015
Posty: 219
Pomógł: 20

Popacz tutaj
http://members.chello.at/~easyfilter/bresenham.html



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 lip 2019, o 22:31 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

witam,
Bystrzacha napisał(a):
...w funkcji mogą być zawarty tylko takie stałe jak położenie środka okręgu X I Y oraz jego promień R. ...

ponieważ to jest najprostszy sposób na usytuowanie okręgu.
Należy się zastanowić:
na jakich współrzędnych na osiach X i Y należy narysować punkty, by powstał zamierzony okrąg.
musimy wiedzieć gdzie jest jego środek, i jaki jest promień okręgu.
dodatkowo można oczekiwać grubości linii która będzie reprezentować nasz okrąg, czy musi być wypełniony(kolo)... .
Jeżeli środek będzie w pozycji "0,0" to wykresem na ekranie będzie wycinek-ćwiartka okręgu.
Program musi wiedzieć gdzie np. zacząć rysować i z jaką rozdzielczością.
Poza tym są jeszcze metody na rysowanie pikseli sąsiednich, nie wynikających bezpośrednio z punktów okręgu,
tylko pośrednio z sąsiednich dla uzyskania lepszego odwzorowania optycznego wrażenia okręgu.
Tu trzeba się wczytać i zapoznać z koncepcjami autorów takich rozwiązań i sposobem ich realizacji.
W moim przypadku, jak do tej pory do celów testowych i małych projektów wystarcza podstawowa wersja bez cieni oczywiście z zaokrągleniem wyniku współrzędnych Y na poziomie '+0,5'. chodzi o t żeby program czytając wynik np. '10,8' nie wstawił piksela w pozycji '10' tylko w pozycji '11'.
Kolejną ważną z punktu widzenia prędkości rysowania(wyliczania) okręgu jest jego symetryczność.
Jeżeli wyliczysz punkt odsunięty w prawo w osi X i w górę w osi Y od środka, to już masz wyliczone odsunięcie od środka pozostałych czterech punktów w pozostałych kierunkach, a nawet ośmiu.
Kiedyś próbowałem sam pisać taki kod :roll: , ale po co wymyślać koło od nowa. :)
Są gotowe rozwiązania, poszukaj pod hasłem np. "algorytmy Bresenhama" albo zerknij na podesłany przez kolegę link.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lip 2019, o 22:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 paź 2014
Posty: 233
Lokalizacja: Rzeszów
Pomógł: 11

Kiedyś coś takiego popełniłem. Nie potrafię podać źródeł - bo nie zapisałem, ale na wyświetlaczy nokii działało.

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Mr. Nobody



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO