Łączenie dwóch punktów linią

0

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

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.

1 użytkowników online, w tym zalogowanych: 0, gości: 1