Witam,
Jak w asemblerze narysować linię łączącą dwa punkty w trybie 13h. Punkty nie leżą w tej samej linii więc linia ma być ukośna. Są jakieś procedury do tego czy trzeba wszytko liczyć?
0
0
czy trzeba wszytko liczyć
0
Punkty nie leżą w tej samej linii więc linia ma być ukośna.
0
A wiec w jaki sposób najszybciej taką linie narysować?
0
Co tak nagminnie powstrzymuje Cię od wpisania assembler draw line
w Google?
0
@Bohun wylicz funkcje liniową między tymi punktami i następnie rysuj f(x) dla każdego x pomiędzy tymi punktami
0
Tylko że te punkty mi się przemieszczają po okręgu tworząc kwadrat wiec dla każdego obrotu musiał bym wyliczać nowo funkcje
0
To oblicz raz a potem wykonuj przekształcenie wektorowe. Tzn przesuwaj każdy punkt o pewien wektor wynikający z obrotu.
0
Napisałem funkcje liniową ale coś źle mi liczy oto kod
line_5:
add di,1
mov ax,[pointX]
add ax,1
mov [pointX],ax
mov ax,[pointX2]
mov bx,[pointX1]
sub ax,bx
mov si,ax
mov ax,[pointY2]
mov bx,[pointY1]
sub ax,bx
cmp ax,0
je b
mov si,ax
mov ax,[pointX]
sub ax,[pointX1]
mul si
b:
add ax,[pointY2]
mov [pointY],ax
; zapal pixel
mov ax,0a000h
mov es,ax
mov ax,[pointY]
mov bx,320
mul bx
add ax,[pointX]
mov bx,ax
mov al,4
mov byte [es:bx],al
cmp di,42
jne line_5
Co jest źle?
0
http://pl.wikipedia.org/wiki/Algorytm_Bresenhama Na Googe są implementacje w różnych jęęzykach.