line macro x1,y1,x2,y2,color
local exit
local linezheng,linefun
local linezhengzheng,linezhengfun
local linefunzheng,linefunfun
local line1,line2,line3
local line11,line12,line13
local line21,line22,line23
local line31,line32,line33
push ax
push bx
push cx
push dx
push si
push di
mov si,0
mov di,0
mov ax,x1
mov bx,x2
mov cx,y1
mov dx,y2
cmp ax,bx
ja linefun
linezheng:
cmp cx,dx
ja linezhengfun
linezhengzheng:
mov ah,0ch
mov al,color
mov bh,0
mov cx,x1
mov dx,y1
line1:add si,(y2-y1)
cmp si,(x2-x1)
jbe line2
sub si,(x2-x1)
inc dx
line2:add di,(x2-x1)
cmp di,(y2-y1)
jbe line3
sub di,(y2-y1)
inc cx
line3:int 10h
cmp cx,x2
jb line1
lea bx,exit
jmp bx
linezhengfun:
mov ah,0ch
mov al,color
mov bh,0
mov cx,x1
mov dx,y1
line11:add si,(y1-y2)
cmp si,(x2-x1)
jbe line12
sub si,(x2-x1)
dec dx
line12:add di,(x2-x1)
cmp di,(y1-y2)
jbe line13
sub di,(y1-y2)
inc cx
line13:int 10h
cmp cx,x2
jb line11
lea bx,exit
jmp bx
linefun:
mov cx,y1
mov dx,y2
cmp cx,dx
ja linefunfun
linefunzheng:
mov ah,0ch
mov al,color
mov bh,0
mov cx,x1
mov dx,y1
line21:
add si,(y2-y1)
cmp si,(x1-x2)
jbe line22
sub si,(x1-x2)
inc dx
line22:add di,(x1-x2)
cmp di,(y2-y1)
jbe line23
sub di,(y2-y1)
dec cx
line23:int 10h
cmp cx,x2
ja line21
jmp exit
linefunfun:
mov cx,x1
mov dx,y1
mov ah,0ch
mov al,color
mov bh,0
line31:add si,(y1-y2)
cmp si,(x1-x2)
jbe line32
sub si,(x1-x2)
dec dx
line32:add di,(x1-x2)
cmp di,(y1-y2)
jbe line33
sub di,(y1-y2)
dec cx
line33:int 10h
cmp cx,x2
ja line31
exit:
pop di
pop si
pop dx
pop cx
pop bx
pop ax
endm
畫直線演算法
畫直線演算法 前段時間做了一下光柵直線生成演算法的研究,並且在vc下實現了dda 演算法 bresenham 演算法 對稱演算法 兩步演算法 及四步演算法。這裡給個總結,希望和大家交流。主要研究的演算法主要有 dda演算法 bresenham 演算法 對稱演算法 兩步演算法 及四步演算法,此外還對自...
DDA演算法畫直線
畫直線的 適合所有斜率的直線 void cmyview linedda cdc pdc,int x0,int y0,int x1,int y1,colorref clr while y ymax return if y0 y1 水平線 while x xmax return double dx x1...
IOS開發 畫直線
介紹兩種畫直線的方法 1 通過quartzcore 2 通過uibezierpath 先建立乙個自定義view 然後在匯入quartzcore框架 然後在m檔案打出下面 三種函式都是同樣的效果 import zcview.h import implementation zcview only ove...