– Trong máy tính chỉ có thể được như vậy với các đường. thẳng song song với trục tọa độ hoặc có góc 45 o với trục tọa[r]
(1)Đồ họa máy tính
(2)Hướng tới đường thẳng lý tưởng
l Chúng ta vẽ xấp xỉ đường thẳng cách
rời rạc
l Chiếu sáng điểm gần với đường thẳng
thực tế trường hợp có hai cách thể điểm:
(3)Thế đường thẳng lý tưởng
l Trông phải thẳng liên tục
– Trong máy tính với đường
thẳng song song với trục tọa độ có góc 45o với trục tọa
độ
l Phải qua hai điểm đầu cuối
l Phải có mật độ cường độ sáng
– Đều đường thẳng tất đường
thẳng
(4)Đường thẳng đơn giản
Dựa phương trình đường thẳng:
y = mx + b
Cách tiếp cận đơn giản: tăng x, tìm y
(5)Thuật tốn ổn với
đường thẳng có hệ số góc nghiêng (slope) nhỏ hơn,
tuy nhiên, không tốt cho
(6)Thay đổi thuật tốn cho góc phần tám (45°) hệ tọa độ
(7)Thuật toán DDA
l DDA = Digital Differential Analyser
(Phân tích vi phân số hóa)
l Xét đường thẳng theo phương trình tham số theo t:
) ( ) ( ) ( ) ( 1 y y t y t y x x t x t x -+ = -+ = ) , ( ) , ( 2 1 y x y x
(8)-Thuật toán DDA
l Bắt đầu với t = 0
l Tại bước, tăng t một lượng
dt
l Chọn giá trị thích hợp cho dt
l Sao cho không bỏ điểm nào:
– Nghĩa là:
l Chọn dt giá trị max dx và dy
(9)Thuật toán DDA
line(int x1, int y1, int x2, int y2) {
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));
(10)Thuật toán DDA
l Vẫn sử dụng nhiều phép toán số
thực.
– phép làm tròn hai phép cộng số thực
l Liệu có cách đơn giản khơng?
l Có cách mà cần dùng
phép toán số nguyên?
– Như cài đặt dễ dàng máy tính