nhomeXét đường thẳng có hệ số góc 0 < m ≤ 1 (giả sử điểm đầu A nằm bên trái và điểm cuối
B nằm bên phải). Nếu ta chọn Δx=1và tính giá trị y kế tiếp như sau:
yk+1 = yk + Δy = yk + m.Δx = yk + m
Với hệ số góc m>1: hoán đổi vai trò của x,y cho nhau. Nếu chọn Δy=1 thì:
xk+1 = xk + 1/m
Tương tự, nếu điểm B nằm bên trái và A nằm bên phải thì:
yk+1 = yk - m (0<m≤1, Δx= -1)
xk+1 = xk - 1/m (m>1, Δy= -1)
Tóm lại: Ta có thuật toán vẽ đường thẳng DDA như sau:
������ Nhập A(x1,y1) B(x2,y2)
������ Tính Δx = x2 - x1, Δy = y2 - y1 và Step = Max(|Δx| , |Δy|)
������ Khởi tạo các giá trị:
IncX = Δx/Step; IncY = Δy/Step; {bước tăng khi vẽ}
x = x1; y = y1; {Chọn điểm vẽ đầu tiên}
Vẽ điểm (x,y);
������ Cho i chạy từ 1 đến Step:
������ x = x + IncX; y = y + IncY;
������ Vẽ điểm (Round(x),Round(y))
Từ đó ta có hàm vẽ đoạn thẳng theo thuật toán DDA như sau:
int round(float x)
{
if(x>0) return int(x+0.5);
else return int(x-0.5);
}
void DDALine(int x1,int y1,int x2,int y2)
{
int step;
float dx,dy,xInc,yInc,x,y;
dx=x2-x1; dy=y2-y1;
if (abs(dx)>abs(dy)) step=abs(dx);
else step=abs(dy);
xInc=dx/step;
yInc=dy/step;
x:=x1; y:=y1;
Putpixel(round(x),round(y),15);
for(int i=1;i<=step;i++)
Putpixel(round(x+xInc),round(y+yInc),color);
}
hiểu chết ngay..................[-)
Xem thêm
Thích
Trả lời
08/07/2012
Đăng
mjkadoXét đường thẳng có hệ số góc 0 < m ≤ 1 (giả sử điểm đầu A nằm bên trái và điểm cuối
B nằm bên phải). Nếu ta chọn Δx=1và tính giá trị y kế tiếp như sau:
yk+1 = yk + Δy = yk + m.Δx = yk + m
Với hệ số góc m>1: hoán đổi vai trò của x,y cho nhau. Nếu chọn Δy=1 thì:
xk+1 = xk + 1/m
Tương tự, nếu điểm B nằm bên trái và A nằm bên phải thì:
yk+1 = yk - m (0<m≤1, Δx= -1)
xk+1 = xk - 1/m (m>1, Δy= -1)
Tóm lại: Ta có thuật toán vẽ đường thẳng DDA như sau:
������ Nhập A(x1,y1) B(x2,y2)
������ Tính Δx = x2 - x1, Δy = y2 - y1 và Step = Max(|Δx| , |Δy|)
������ Khởi tạo các giá trị:
IncX = Δx/Step; IncY = Δy/Step; {bước tăng khi vẽ}
x = x1; y = y1; {Chọn điểm vẽ đầu tiên}
Vẽ điểm (x,y);
������ Cho i chạy từ 1 đến Step:
������ x = x + IncX; y = y + IncY;
������ Vẽ điểm (Round(x),Round(y))
Từ đó ta có hàm vẽ đoạn thẳng theo thuật toán DDA như sau:
int round(float x)
{
if(x>0) return int(x+0.5);
else return int(x-0.5);
}
void DDALine(int x1,int y1,int x2,int y2)
{
int step;
float dx,dy,xInc,yInc,x,y;
dx=x2-x1; dy=y2-y1;
if (abs(dx)>abs(dy)) step=abs(dx);
else step=abs(dy);
xInc=dx/step;
yInc=dy/step;
x:=x1; y:=y1;
Putpixel(round(x),round(y),15);
for(int i=1;i<=step;i++)
Putpixel(round(x+xInc),round(y+yInc),color);
}
quá bá đạo, em k hiểu gì :((
Xem thêm
Thích
Trả lời
08/07/2012
Đăng
KnowzoneXét đường thẳng có hệ số góc 0 < m ≤ 1 (giả sử điểm đầu A nằm bên trái và điểm cuối
B nằm bên phải). Nếu ta chọn Δx=1và tính giá trị y kế tiếp như sau:
yk+1 = yk + Δy = yk + m.Δx = yk + m
Với hệ số góc m>1: hoán đổi vai trò của x,y cho nhau. Nếu chọn Δy=1 thì:
xk+1 = xk + 1/m
Tương tự, nếu điểm B nằm bên trái và A nằm bên phải thì:
yk+1 = yk - m (0<m≤1, Δx= -1)
xk+1 = xk - 1/m (m>1, Δy= -1)
Tóm lại: Ta có thuật toán vẽ đường thẳng DDA như sau:
Nhập A(x1,y1) B(x2,y2)
Tính Δx = x2 - x1, Δy = y2 - y1 và Step = Max(|Δx| , |Δy|)
Khởi tạo các giá trị:
IncX = Δx/Step; IncY = Δy/Step; {bước tăng khi vẽ}
x = x1; y = y1; {Chọn điểm vẽ đầu tiên}
Vẽ điểm (x,y);
Cho i chạy từ 1 đến Step:
x = x + IncX; y = y + IncY;
Vẽ điểm (Round(x),Round(y))
Từ đó ta có hàm vẽ đoạn thẳng theo thuật toán DDA như sau:
int round(float x)
{
if(x>0) return int(x+0.5);
else return int(x-0.5);
}
void DDALine(int x1,int y1,int x2,int y2)
{
int step;
float dx,dy,xInc,yInc,x,y;
dx=x2-x1; dy=y2-y1;
if (abs(dx)>abs(dy)) step=abs(dx);
else step=abs(dy);
xInc=dx/step;
yInc=dy/step;
x:=x1; y:=y1;
Putpixel(round(x),round(y),15);
for(int i=1;i<=step;i++)
Putpixel(round(x+xInc),round(y+yInc),color);
}
Xem thêm
Thích
Trả lời
08/07/2012
Đăng
Xóa bài viết.
Bạn có chắc muốn xóa bài viết này không?
Là thành viên của Muare bạn sẽ được
Kinh doanh mọi lúc mọi nơi trên Muare
Bán hàng hiệu quả với thị trường 50.000 khách hàng tiềm năng hoạt động hàng ngày trên Muare
Mua hàng hóa với giá trị hời tại hơn 1.000 shop uy tín
Tham gia cộng đồng thương mại hoạt động nhộn nhịp bậc nhất