JavaScript is required

Đoạn mã sau mô tả thuật toán nào?

void Line(int x1, int y1, int x2, int y2, Color mau)
{
float m = (float)(y2-y1)/(x2-x1);
if (m < 1)
{
int x = x1;
float y = y1;
putpixel(x, round(y), mau);
}
else
{
int y = y1;
float x = x1;
putpixel(round(x),y, mau)
while (y < y2)
{
x+= float(1)/m;
y++;
putpixel(round(x),y,mau);
}
}
}

A.

Giải thuật DDA vẽ đường thẳng

B.

Giải thuật MidPoint vẽ đường thẳng

C.

Giải thuật Bresenham vẽ đường thẳng

D.

Giải thuật trung điểm vẽ đường thẳng

Trả lời:

Đáp án đúng: A


Đoạn mã trên mô tả giải thuật DDA (Digital Differential Analyzer) để vẽ đường thẳng. Giải thuật DDA tính toán các điểm ảnh gần đúng nhất trên đường thẳng bằng cách tăng dần x hoặc y, tùy thuộc vào độ dốc của đường thẳng (m). Nếu |m| < 1, giải thuật tăng x lên 1 và tính y tương ứng. Ngược lại, nếu |m| >= 1, giải thuật tăng y lên 1 và tính x tương ứng. Việc sử dụng `putpixel(x, round(y), mau)` và `putpixel(round(x), y, mau)` cho thấy việc vẽ điểm ảnh tại vị trí (x, y) đã được làm tròn đến giá trị nguyên gần nhất, đây là đặc trưng của giải thuật DDA. Các giải thuật khác như Midpoint và Bresenham sử dụng các phương pháp khác để quyết định điểm ảnh nào sẽ được vẽ, thường dựa trên việc tính toán các giá trị quyết định để giảm thiểu việc sử dụng phép toán dấu phẩy động.

Cùng ôn thi với bộ câu hỏi trắc nghiệm môn Đồ họa máy tính có đáp án mà tracnghiem.net chia sẽ dưới đây, nhằm giúp các bạn sinh viên chuyên ngành chuẩn bị cho kì thi sắp tới.


50 câu hỏi 60 phút

Câu hỏi liên quan