<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=24&amp;t=22424&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2019-07-22T22:36:30+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=24&amp;t=22424&amp;mode</id>
<entry>
<author><name><![CDATA[APAP75]]></name></author>
<updated>2019-07-22T22:36:30+01:00</updated>
<published>2019-07-22T22:36:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22424&amp;p=220576#p220576</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22424&amp;p=220576#p220576"/>
<title type="html"><![CDATA[Re: Funkcja rysująca okrąg na wyswietlaczu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22424&amp;p=220576#p220576"><![CDATA[
Kiedyś coś takiego popełniłem. Nie potrafię podać źródeł - bo nie zapisałem, ale na wyświetlaczy nokii działało.<br /><br />[syntax=c]void circle(int x0, int y0, int r)<br />{<br /><br />void circle_points(int x, int y) // funkcja odbija symetrycznie punkt<br />{<br />draft_pixel(x0 - x, y0 - y);<br />draft_pixel(x0 - x, y0 + y);<br />draft_pixel(x0 + x, y0 - y);<br />draft_pixel(x0 + x, y0 + y);<br />draft_pixel(x0 - y, y0 - x);<br />draft_pixel(x0 - y, y0 + x);<br />draft_pixel(x0 + y, y0 - x);<br />draft_pixel(x0 + y, y0 + x);<br />}<br /><br />int d = 5 - (4 * r);<br />int x = 0;<br />int y = r;<br /><br />int deltaA = ((-2 * r) + 5) * 4;<br />int deltaB = 3 * 4;<br />while (x &lt;= y)<br />{<br />circle_points(x, y);<br />if (d &gt; 0)<br />{<br />d += deltaA;<br />y -= 1;<br />x += 1;<br />deltaA += 4 * 4;<br />deltaB += 2 * 4;<br />}<br />else<br />{<br />d += deltaB;<br />x += 1;<br />deltaA += 2 * 4;<br />deltaB += 2 * 4;<br />}<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6195">APAP75</a> — 22 lip 2019, o 22:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Daro69]]></name></author>
<updated>2019-07-20T22:31:37+01:00</updated>
<published>2019-07-20T22:31:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22424&amp;p=220538#p220538</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22424&amp;p=220538#p220538"/>
<title type="html"><![CDATA[Re: Funkcja rysująca okrąg na wyswietlaczu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22424&amp;p=220538#p220538"><![CDATA[
witam,<br /><div class="quotetitle">Bystrzacha napisał(a):</div><div class="quotecontent"><br />...w funkcji mogą być zawarty tylko takie stałe jak położenie środka okręgu X I Y oraz jego promień R. ...<br /></div><br />ponieważ to jest najprostszy sposób na usytuowanie okręgu.<br />Należy się zastanowić:<br />na jakich współrzędnych  na osiach X i Y należy narysować punkty, by powstał zamierzony okrąg.<br />musimy wiedzieć gdzie jest jego środek, i jaki jest promień okręgu.<br />dodatkowo można oczekiwać grubości linii która będzie reprezentować nasz okrąg, czy musi być wypełniony(kolo)... .<br />Jeżeli środek będzie w pozycji &quot;0,0&quot; to wykresem na ekranie będzie wycinek-ćwiartka okręgu.<br />Program musi wiedzieć gdzie np. zacząć rysować i z jaką rozdzielczością.<br />Poza tym są jeszcze metody na rysowanie pikseli sąsiednich, nie wynikających bezpośrednio z punktów okręgu,<br />tylko pośrednio z sąsiednich dla uzyskania lepszego odwzorowania optycznego wrażenia okręgu.<br />Tu trzeba się wczytać i zapoznać z koncepcjami autorów takich rozwiązań i sposobem ich realizacji.<br />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'.<br />Kolejną ważną z punktu widzenia prędkości rysowania(wyliczania) okręgu jest jego symetryczność.<br />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.<br />Kiedyś próbowałem sam pisać taki kod <img src="https://forum.atnel.pl/images/smilies/icon_rolleyes.gif" alt=":roll:" title="Udaje, że to nie on" /> , ale po co wymyślać koło od nowa. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br />Są gotowe rozwiązania, poszukaj pod hasłem np. &quot;algorytmy Bresenhama&quot; albo zerknij na podesłany przez kolegę link.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11549">Daro69</a> — 20 lip 2019, o 22:31</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jez2000]]></name></author>
<updated>2019-07-19T18:52:07+01:00</updated>
<published>2019-07-19T18:52:07+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22424&amp;p=220498#p220498</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22424&amp;p=220498#p220498"/>
<title type="html"><![CDATA[Re: Funkcja rysująca okrąg na wyswietlaczu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22424&amp;p=220498#p220498"><![CDATA[
Popacz tutaj<br /><a href="http://members.chello.at/~easyfilter/bresenham.html"  class="postlink">http://members.chello.at/~easyfilter/bresenham.html</a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11828">jez2000</a> — 19 lip 2019, o 18:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Bystrzacha]]></name></author>
<updated>2019-07-19T18:20:28+01:00</updated>
<published>2019-07-19T18:20:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=22424&amp;p=220497#p220497</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=22424&amp;p=220497#p220497"/>
<title type="html"><![CDATA[Funkcja rysująca okrąg na wyswietlaczu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=22424&amp;p=220497#p220497"><![CDATA[
Witam,<br />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. <br />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. <br /><br />Jeżeli ktoś wie jak można byłoby to zrobić to proszę o pomoc <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=17681">Bystrzacha</a> — 19 lip 2019, o 18:20</p><hr />
]]></content>
</entry>
</feed>