<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl">
	<id>https://mirror.atariki.pl/w/index.php?action=history&amp;feed=atom&amp;title=Programowanie%3A_Rysowanie_linii</id>
	<title>Programowanie: Rysowanie linii - Historia wersji</title>
	<link rel="self" type="application/atom+xml" href="https://mirror.atariki.pl/w/index.php?action=history&amp;feed=atom&amp;title=Programowanie%3A_Rysowanie_linii"/>
	<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=Programowanie:_Rysowanie_linii&amp;action=history"/>
	<updated>2026-10-02T14:14:35Z</updated>
	<subtitle>Historia wersji tej strony wiki</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>https://mirror.atariki.pl/w/index.php?title=Programowanie:_Rysowanie_linii&amp;diff=3306&amp;oldid=prev</id>
		<title>imported&gt;Atariki recovery: Reconstructed from archived HTML; see provenance manifest</title>
		<link rel="alternate" type="text/html" href="https://mirror.atariki.pl/w/index.php?title=Programowanie:_Rysowanie_linii&amp;diff=3306&amp;oldid=prev"/>
		<updated>2026-10-01T08:51:48Z</updated>

		<summary type="html">&lt;p&gt;Reconstructed from archived HTML; see provenance manifest&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Nowa strona&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;Ten artykuł wymaga poszerzenia lub poprawek.&amp;#039;&amp;#039;&amp;#039;&amp;lt;br /&amp;gt;Zajrzyj na stronę [[Dyskusja:Programowanie: Rysowanie linii|dyskusji]], by dowiedzieć się, czego brakuje, i - jeśli jesteś w stanie - uzupełnij braki.&amp;lt;br /&amp;gt;&lt;br /&gt;
Po naprawieniu mankamentów szablon {{SDP}} można usunąć z treści hasła.Draw dla trybu lowres (Graphics 15) 160x192 rysujący linię o długości 50 pikseli w pionie od pozycji (x,0) o kącie nachylenia z zakresu [-45;45] stopni:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
COLOR = 1  ;kolor z zakresu 0,1,2,3&lt;br /&gt;
&lt;br /&gt;
  org $80&lt;br /&gt;
dx .ds 2&lt;br /&gt;
tmp .ds 1&lt;br /&gt;
&lt;br /&gt;
;A = x, X = alpha (U2 - $c0=-45..0=0..$40=45)&lt;br /&gt;
draw:&lt;br /&gt;
  ldy #0&lt;br /&gt;
  sty tmp&lt;br /&gt;
&lt;br /&gt;
  cpx #$80  ;rozszerzenie alpha na 16 bit&lt;br /&gt;
  scc&lt;br /&gt;
  dey&lt;br /&gt;
  stx dx&lt;br /&gt;
  sty dx+1&lt;br /&gt;
&lt;br /&gt;
  lsr       ;obliczenie pozycji punktu w linii&lt;br /&gt;
  ror tmp&lt;br /&gt;
  lsr&lt;br /&gt;
  ror tmp&lt;br /&gt;
  tay&lt;br /&gt;
  ldx tmp&lt;br /&gt;
&lt;br /&gt;
.rept 49&lt;br /&gt;
  lda screen+40*#,y&lt;br /&gt;
  and bytemask,x&lt;br /&gt;
  ora bytepxl,x&lt;br /&gt;
  sta screen+40*#,y&lt;br /&gt;
&lt;br /&gt;
  txa&lt;br /&gt;
  adc dx&lt;br /&gt;
  tax&lt;br /&gt;
  tya&lt;br /&gt;
  adc dx+1&lt;br /&gt;
  tay&lt;br /&gt;
.endr&lt;br /&gt;
&lt;br /&gt;
  lda screen+40*49,y&lt;br /&gt;
  and bytemask,x&lt;br /&gt;
  ora bytepxl,x&lt;br /&gt;
  sta screen+40*49,y&lt;br /&gt;
  rts&lt;br /&gt;
&lt;br /&gt;
bytemask:&lt;br /&gt;
:256 .byte ~(%11 &amp;amp;lt;&amp;amp;lt; (6 - ((# / 64) * 2)))&lt;br /&gt;
bytepxl:&lt;br /&gt;
:256 .byte COLOR &amp;amp;lt;&amp;amp;lt; (6 - ((# / 64) * 2))&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Algorytm wykorzystuje właściwość funkcji liniowej y=ax+b określającą współczynnik kierunkowy a prostej, jako a=tg(alpha) kąta odchylenia prostej od pionu - określa on poziomy przyrost dx o jaki z każdym krokiem odchylana jest prosta.&lt;br /&gt;
&lt;br /&gt;
Ponieważ można założyć, że w zakresie [-45;45] stopni a=tg(alpha) jest w przybliżeniu funkcją liniową, dlatego zrezygnowano z obliczania funkcji na rzecz wartości a podawanej bezpośrednio do procedury draw (kąt alpha w zakresie [-45;45] stopni jest mapowany na współczynnik kierunkowy a w zakresie [-$40;$40]).&lt;br /&gt;
&lt;br /&gt;
Rejestry YX w pętli zawierają pozycję x piksela, modyfikowaną o przyrost dx. Jest to liczba z 6 bitami części ułamkowej (najmłodsze bity rejestru X) i 2 bitami wskazującymi na pozycję piksela w bajcie (dwa najstarsze bity rejestru X mapowane na konkretne maski przez tablice bytemask i bytepxl). Rejestr Y zawiera pozycję bajtu w linii ekranowej.&lt;br /&gt;
&lt;br /&gt;
Algorytm zaniedbuje błędy wynikające z małej rozdzielczości części ułamkowej pozycji x piksela (ma ona rozmiar 6 bitów), ponieważ jest ona wystarczająca do rysowania linii o długości mniejszej niż 2&amp;lt;sup&amp;gt;6&amp;lt;/sup&amp;gt;=64 pikseli.&lt;br /&gt;
&lt;br /&gt;
Dodatkowo błędy mogące wynikać z niewielkiej rozdzielczości współczynnika kierunkowego (alpha) odcinka w zakresie [-45;45] stopni są w przypadku tak krótkiej linii pomijalne.&lt;br /&gt;
&lt;br /&gt;
[[Kategoria:Strony do poszerzenia]]&lt;br /&gt;
[[Kategoria:Niezbędnik kodera]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Atariki recovery</name></author>
	</entry>
</feed>