Professional Documents
Culture Documents
Set (x,y);
BFA (x,y - 1); BFA (x,y + 1);
BFA (x - 1,y); BFA (x + 1,y);
end
end;
2 0
4 1
Không đúng đối với đa giác tự cắt
3
1 0 0
2 0 1
0 1
y
Thay thế
Xóa
Chiếu sáng các điểm gần nhất với đường thẳng thực
tế trong trường hợp chỉ có hai cách thể hiện một
điểm:
– Điểm được thắp sáng hoặc không thắp sáng
Có thể thay đổi tên của trục tọa độ, HOẶC, tăng theo trục x nếu
dy<dx, nếu không thì tăng theo trục y
17 01/11/22 Ma Thị Châu - Bùi Thế Duy
Thuật toán DDA
DDA = Digital Differential Analyser
(Phân tích vi phân số hóa)
Xét đường thẳng theo phương trình tham số theo t:
{ n - range of t.
float x,y;
int dx = x2-x1, dy = y2-y1;
int n = max(abs(dx),abs(dy));
float dt = n, dxdt = dx/dt, dydt = dy/dt;
x = x1;
y = y1;
while( n-- ) {
point(round(x),round(y));
x += dxdt;
y += dydt;
}
20 } 01/11/22 Ma Thị Châu - Bùi Thế Duy
Thuật toán DDA
xi = xi – 1 + 1 = i
yi = yi – 1 + b/a = i*b/a
while( n-- )
{
draw(x,y);
move right;
if( below line )
move up;
}`
Để cài đặt được thuật toán mới cần kiểm tra xem
một điểm nằm ở phía nào của đường thẳng.
Viết phương trình đường thẳng:
F ( x, y ) ax by c 0
• Dễ nhận thấy nếu F<0, điểm đó nằm trên
đường thẳng, nếu F>0 điểm đó nằm dưới đường
thẳng.
F ( x, y ) ax by c 0
Cần phải tìm các hệ số a,b,c.
Xét dạng khác của phương trình đường thẳng:
Do đó:
dy
y mx b do đó y xb
dx
F ( x, y ) dy.x dx. y c 0
29 01/11/22 Ma Thị Châu - Bùi Thế Duy
Đại lượng quyết định
Tính F tại điểm M
Coi đây là đại lượng quyết định
1
d F ( x p 1, y p )
2
NE
M
E
Điểm trước Các phương án Các phương án cho điểm tiếp theo
(xp,yp) cho điểm
hiện tại
M Do đó:
NE
d moi d cu a b
E
d moi dy dx
Điểm trước Những lựa
(xp,yp) Những lựa chọn cho
chọn cho điểm tiếp theo
điểm hiện tại
d batdau dy dx / 2
Nhân đại lượng này với 2 để loại bỏ mẫu số không ảnh hưởng đến dấu.
WritePixel(x,y);
Hệ số nghiêng từ ½ đến 1
Hệ số nghiêng từ 1 và 2
M
SE
f ( x, y ) ( x xc ) 2 ( y yc ) 2 r 2
Neu SE duoc chon d moi d cu (2 x p 2 y p 5)
Neu E duoc chon d moi d cu (2 x p 3)