kỹ thuật lập trình đồ họa thực tại ảo vẽ cái bàn 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 } } } }
Trang 1TRƯỜ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 ngày sinh: 15/05/1993
Lớp: CML314 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 toá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 toán DDA là thuật toá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 toá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.
Trang 2Yi+1=m(xi +1) + b
Yi+1 =mxi +b+m
Yi+1 =yi +m
3) Lưu đồ của thuật toán DDA:
Trang 3Thuậ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)
Trang 4Từ thuật toá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 [
Trang 5Transform {
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 }
} }
Trang 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 }
}
Trang 7}
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 {
Trang 8translation 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 -0.6 0.7 0.3 children [
Trang 9Shape {
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 }
Trang 10
appearance Appearance { texture ImageTexture {
url ["hinhcaiban.jpg"] }
} }
] }
]
}
]
}