
Ch ng 10: ươ
Các gi i thu t ả ậ nâng cao

Scan conversion
ªScan conversion: quá trình bi u di n m t đi t ng hình h c (đo n ể ễ ộ ố ượ ọ ạ
th ng, vòng tròn,...) trong b đm nh đn (frame buffer) c a h ẳ ộ ệ ả ơ ủ ệ
th ng đ h a quét raster.ố ồ ọ
ªv n hành (drive) the frame buffer thông qua các th t cậ ủ ụ
–SetPixel()
–GetPixel()

Frame buffer và thi t b hi n thế ị ể ị
ªMô hình ch c năng c a frame bufferứ ủ
làm t i nhươ ả
C
R
x
y
B
Màn hình
• B=1
•(value=0) => (pixel off) black
•(value=1) => (pixel on) white

Truy c p vào frame bufferậ
const {moät ví duï}
MaxColumn = 639; {= C - 1}
MaxRow = 479; {= R - 1}
MaxColor = 255; {= soá caùc maøu - 1}
type
col = 0..MaxColumn;
row = 0..MaxRow;
color = 0..MaxColor;
procedure SetPixel(c : col, r : row, value : color); {load frame buffer}
function GetPixel(c : col, r : row) : color; {read frame buffer}
procedure SetPixelWord(c : col, r : row, value : word);
function GetPixel(c : col, r : row) : word;
0 MaxColumn1 2
0
1
2
ªMô hình l p trìnhậ
–Mô hình cho frame buffer
–Các thao tác lên frame buffer.
MaxRow

Thu t toán v ậ ẽ đo n th ngạ ẳ
ªYêu c uầ
–Đi qua 2 đi m ểđu mút c a ầ ủ đo n th ngạ ẳ
–Đ sáng ộđng ồđu, trề ơn
–Đưng th ng có ờ ẳ đ d c khác nhau ph i có ộ ố ả đ sáng nhộ ư nhau
–Gi i thu t ph i có tính l p l i (dùng ả ậ ả ặ ạ đ xóa ểđưng th ng)ờ ẳ
–Không ph thu c vào các ch n ụ ộ ọ đi m b t ể ắ đu vầ ẽ

