Tải bản đầy đủ (.docx) (10 trang)

kỹ thuật lập trình đồ họa thực tại ảo vẽ cái bàn

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (189.86 KB, 10 trang )

TRƯỜNG ĐẠI HỌC MỞ HÀ NỘI
TRUNG TÂM ĐÀO TẠO TRỰC TUYẾN

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập – Tự do – Hạnh phúc
****

Họ và tên sinh viên: NGUYỄN ANH ĐỨC
Lớp: CML314

ngày sinh: 15/05/1993

Mã Học viên: 21C-10-42.8-00298

MÔN: Kỹ thuật lập trình đồ họa(IT32)
Câu 1: (4 điểm)
Trình bày giải thuật vẽ đường thẳng theo thuật tốn DDA. Cho ví dụ minh họa.
DDA là tên viết tắt của Digital Differential Analyzer. chúng ta có thể hiểu thuật tốn DDA là
thuật tốn vẽ đường thẳng theo cách làm tròn tọa độ các điểm mà đường thẳng đó đi qua.
Ví dụ: Thuật tốn DDA
1) Đặt vấn đề: Cho 2 điểm A(x1,y1) và B(x2,y2). Hãy vẽ đường thẳng đi qua 2 điểm đó.
2) Xây dựng thuật toán:
-Với kiến thực được học hồi nhỏ (cấp 2), phương trình đường thẳng có thể phát biểu dưới
dạng:
(d) y=m.x +b
m=(y2-y1)/(x2-x1)
b=y1-mx1
Trong đó: m là hệ số góc
-Giả sử vẽ được (xi,yi). Tiếp theo, chọn yi+1 là yi hay yi+1 dựa vào phương trình của
đường thẳng d.



Yi+1=m(xi +1) + b
Yi+1 =mxi +b+m
Yi+1 =yi +m
3) Lưu đồ của thuật toán DDA:


Thuật toán DDA là vẽ đường thẳng theo việc làm tròn tọa độ các điểm . Điều này khiến
đường thẳng được vẽ ra bị gấp khúc, không mịn . Chúng ta vẽ được càng nhiều điểm thì
đường thẳng sẽ càng đẹp, càng mịn. Chính vì lý do này mà ta phải so sánh khoảng cách
abs(dx) và abs(dy). Khoảng cách nào lớn hơn thì ta sẽ vẽ được nhiều điểm hơn, đường thẳng
vẽ ra sẽ đẹp hơn. Xét vào ví dụ trên, nếu vẽ theo x thì ta sẽ vẽ được 5 điểm , làm cho đoạn
thẳng mịn hơn so với việc vẽ theo y (chỉ có 3 điểm).


Từ thuật tốn trên, các bạn cũng có thể code theo 2 hướng : tính y theo x hoặc tính x theo y
để vẽ được đường thẳng.
Câu 2: (6 điểm)
Sử dụng ngôn ngữ thực tại ảo VRML vẽ cái bàn như sau (kích thước
1200*600*750mm)
Lưu ý: Nộp file báo (doc hoặc pdf) và file wrl (file đối tượng). Trên file báo cáo trình bày
cả câu 1 và 2.
DEF

chanban Transform {
children [
Transform {
children [



Transform {
translation

0.6 0 0.3

children [

Shape {
geometry Box {
size 0.05 0.05 0.6
}
appearance Appearance {
material Material {
diffuseColor 0 0 0
}
}
}
]
}

Transform {
translation

-0.6 0 0.3

children [

Shape {
geometry Box {
size 0.05 0.05 0.6

}
}
}


}
]
}

Transform {
translation

0.6 0.34 -0.05

children [

Shape {
geometry Box {
size 0.05 0.75 0.1
}

}
]
}

Transform {
translation

-0.6 0.34 -0.05


children [

Shape {
geometry Box {
size 0.05 0.75 0.1
}

}


]
}
Transform {
translation

-0.6 0.34 0.6

children [

Shape {
geometry Box {
size 0.05 0.75 0.1
}

}
]
}
Transform {
translation


0.6 0.34 0.6

Shape {
geometry Box {
size 0.05 0.75 0.1
}

}
]
}

Transform {


translation

0 0.70 -0.05

children [
Shape {
geometry Box {
size 1.2 0.05 0.05
}

}
]
}

Transform {
translation


0 0.70 0.6

children [
Shape {
geometry Box {
size 1.2 0.05 0.05
}

}
]
}

Transform {
translation
children [

-0.6 0.7 0.3


Shape {
geometry Box {
size 0.05 0.05 0.6
}

}
]
}

Transform {

translation

0.6 0.7 0.3

Shape {
size 0.05 0.05 0.6
}
appearance USE den
}
]
}

DEF

matban Transform {
translation

0 0.75 0.28

Shape {
geometry Box {
size 1.4 0.05 0.8
}


appearance Appearance {
texture ImageTexture {
url
}
}

}

]
}
]

}

]
}

["hinhcaiban.jpg"]



×