Đồ họa máy tính là một lĩnh vực của khoa học máy tính nghiên cứu về ở toán học, các thuật toán cũng như các kĩ thuật để cho phép tạo, hiển thị và điều khiển hình ảnh trênmàn hình máy tín
Trang 1TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO MÔN HỌC
ĐỒ HỌA MÁY TÍNH
Đ TI:
SỬ DỤNG THƯ VIỆN OPENGL MÔ PHỎNG
CHUYỂN ĐỘNG CỦA T U VŨ TRỤ
Sinh viên thực hiện
Giảng viên hướng dẫn
HO NG NGỌC LONG PHẠM THỊ HUY N : NGÔ NGỌC TH NH : CÔNG NGHỆ THÔNG TIN : CÔNG NGHỆ PHẦN M M : D14CNPM5
: 2019 - 2023
Hà Nội, tháng 4 năm 2022
Trang 3CHƯƠNG 1: ĐỒ HỌA HAI CHI U 6
1 Thuật toán vẽ đường thẳng 6
1.1.1 Thuật giải 6
1.1.2 Lưu đồ thuật toán 8
1.1.3 Kết quả đạt được 9
1.2.Thuật toán Midpoint để vẽ đường thẳng 9
1.2.1 Thuật giải 9
1.2.2 Lưu đồ thuật toán 11
2.1.Thuật toán Bressenham vẽ đường tròn 12
2.1.1 Thuật giải 12
2.1.2 Lưu đồ thuật toán 14
2.1.3 Kết quả đạt được 15
2.2.Thuật toán Midpoint vẽ đường tròn 15
2.2.1 Thuật giải 15
2.2.2 Lưu đồ thuật toán 17
2.2.3 Kết quả đạt được 18
3 Thuật toán vẽ Ellipse 3.1.Thuật toán Bressenham vẽ Ellipse 18
3.1.1 Thuật giải 18
3.1.2 Kết quả đạt được 20
3.2.Thuật toán Midpoint vẽ Ellipse 20
3.2.1 Thuật giải 20
3.2.2 Lưu đồ thuật toán 23
3.2.3 Kết quả đạt được 24
4 Các thuật toán tô màu 4.1.Thuật toán tô màu loang 24
4.1.1 Khái niệm 24
4.1.2 Giải thuật 24
4.1.3 Kết quả đạt được 26
4.2.Thuật toán tô màu quét 26
Trang 44.2.1 Khái niệm 26
4.2.2 Thuật giải 27
4.2.3 Lưu đồ thuật toán 28
CHƯƠNG 2: PHÁT TRIỂN ỨNG DỤNG 29
1 Phát biểu bài toán 29
2 Các bước giải quyết 29
2.2.Thiết lập các hiệu ứng, màu sắc, kích thước cửa sổ, góc nhìn 30
2.3.Vẽ các đối tượng đồ họa 30
2.4.Tạo hiệu ứng chuyển động cho các đối tượng 31
Trang 5LỜI MỞ ĐẦU
Như chúng ta đã thấy trong những năm gần đây sự phát triển vượt bậc về côngnghệ đồ họa đã mang lại cho con người chúng ta vô vàn sự tiện nghi, những trảinghiệm mới mẻ, chân thực
Vậy đồ họa máy tính là gì : Đồ họa máy tính là phương pháp và công
nghệ dùng trong việc chuyển đổi qua lại giữa dữ liệu và hình ảnh bằng máy tính.
Đồ họa máy tính là một lĩnh vực của khoa học máy tính nghiên cứu về ở toán học, các
thuật toán cũng như các kĩ thuật để cho phép tạo, hiển thị và điều khiển hình ảnh trênmàn hình máy tính Đồ họa máy tính có liên quan ít nhiều đến một số lĩnh vực nhưđại số, hình học giải tích, hình học họa hình, quang học, và kĩ thuật máy tính, đặc
biệt là chế tạo phần cứng (các loại màn hình, các thiết bị xuất, nhập, các vỉ mạch đồ
họa ).
Là sinh viên khoa Công nghệ thông tin trường Đại học Điện Lực Chúng emcũng được tiếp xúc với môn học đồ họa máy tính Với những kiến thức em đã được
học chúng em đã thực hiện đề tài “MÔ PHỎNG CHUYỂN ĐỘNG PHÓNG T U
VŨ TRỤ” Trong quá trình thực hiện nghiên cứu chúng em đã sử dụng thư viện đồ
họa openGL đang được sử dụng rộng rãi hiện nay
Có lẽ rằng chương trình và báo cáo của chúng em chưa được chuyên nghiệp,hoàn chỉnh nhất, còn có những thiếu xót Vì thế em rất mong thầy cô và các bạn cóthể góp ý để nhóm em xây dựng đề đạt kết quả tốt nhất có thể
Trang 6CHƯƠNG 1: ĐỒ HỌA HAI CHI U
1 Thuật toán vẽ đường thẳng
1.1.Thuật toán Bressenham để vẽ đường thẳng
1.1.1 Thuật giải
Xét đoạn thẳng có hệ số góc 0<=m<=1 và deltax>0 Với các đoạn thẳng dạng
bước thứ i+1 sẽ là một trong hai điểm sau:
Vấn đề đặt ra là chọn điểm vẽ như thế nào để đường thẳng được vẽ gần vớiđường thẳng muốn vẽ nhất và đạt được tối ưu hóa về mặt tốc độ ?
Hình 1.1 Mô tả thuật toán Bressenham
Trang 7Xét Pi = ∆x(d1-d2)
Ta có : d1 - d2 = 2 yi +1 - 2yi – 1
= x[2∆y/∆x (xi +1)+ 2b-2yi - 1] =2 y(xi+1) - 2 x.yi + x(2b - 1)
= 2 y.xi - 2 x.yi + 2 y + x(2b - 1) Vậy C = 2 y + x(2b - 1) = Const
(x0 ,y0 ) theo công thức :
Trang 81.1.2 Lưu đồ thuật toán
Hình 1.2 Lưu đồ thuật toán Bressenham vẽ đường
thẳng 1.1.3 Kết quả đạt được
Trang 9Hình 1.3 Đường thằng vẽ bằng thuật toán Bresenham
1.2.Thuật toán Midpoint để vẽ đường thẳng
1.2.1 Thuật giải
Đối với việc lựa chọn điểm vẽ tiếp theo sau A, ta có hai lựa chọn đó là điểm P
và Q với M là trung điểm giữa chúng Việc quyết định chọn điểm nào để vẽ tiếp theophụ thuộc vào vị trí của M so với đường thẳng đang vẽ Nếu M nằm phía dưới đườngthẳng, ta chọn điểm Q Ngược lại, nếu M nằm phía trên đường thẳng ta chọn điểm P
Hình 1.4 Midpoint ở giữa hai điểm cần xét
Ta có dạng tổng quát của PT đường thẳng:
Ax + By +C=0
Với A= yo –y1; B= -(x2 –x1); C=x2y1 –x1y2
Đặt F(x,y)= Ax+ By +C
Ta có nhận xét:
Vị trí tương đối của điểm Midpoint (x,y) với đường thẳng:
F(x,y) < 0 nếu (x,y) nằm phía trên đường thẳng
F(x,y) = 0 nếu (x,y) thuộc về đường thẳng F(x,y)
> 0 nếu (x,y) nằm phía dưới đường thẳng
Lúc này việc chọn các điểm Q, P ở trên được đưa về việc xét dấu
của pi = 2F(Midpoint) = 2F(xi+1 , yi +1/2)
●Nếu pi < 0 ⇒ Midpoint nằm phía trên đường thẳng
Trang 10⇒Lúc này điểm thực Q nằm phía dưới điểm Midpoint
●Nếu pi >= 0 ⇒ Midpoint nằm phía dưới đường thẳng
Mặt khác:
pi+1 –pi = 2F(xi+1 +1 , yi+1 +1/2) – 2F(xi +1 , yi +1/2)
Vậy pi+1 =pi + 2Dy nếu pi =0 do ta chọn yi+1 = yi +1
Ta tính giá trị p1 ứng với điểm ban đầu (x1 , y1) với nhận xét rằng điểm (x1 ,y1) là điểm thuộc đường thẳng, tức là có Ax1 + By1 + C =0 p1 = 2F(x1 +1, y1 +1/2)
= 2[A(x1 +1) +B(y1 +1/2) +C]
Trang 111.2.2 Lưu đồ thuật toán
Hình 1.5 Lưu đồ thuật toán Midpoint vẽ đường
thẳng 1.2.3 Kết quả đạt được
Hình 1.6 Đường thẳng vẽ bằng thuật toán Midpoint
Trang 122 Thuật toán vẽ đường tròn
2.1.Thuật toán Bressenham vẽ đường tròn
2.1.1 Thuật giải
Cho đường tròn tâm (xc,yc) bán kính R: (x-xc)2 + (y-yc)2 = R2
Đường tròn có tính đối xứng nên ta chỉ cần vẽ 1/8 cung tròn và lấy đối xứng quacác điểm:
(-x, y), (x, y), (y, x), (y, -x), (x, -y), (-x, -y), (-y, -x), (-y, x)
Hình 1.7 Đường tròn với các điểm đối xứng Ta có xi+1 = xi +1 và yi+1 = yi hay yi+1 = yi -1
R2 Đặt d1 = yi2 – y2 và d2 = y2 – (yi -1)2
d1 = y2 – y2 = y2 – (R2 – (x +1)2) d2 = y2 – (y -1)2 = (R2 – (x +1)2) - (y -1)2
Trang 13Hình 1.8 Khoảng cách d1 và d2 khi xét điểm tiếp theo Xét pi = d1-d2 = (yi)2+(yi-1)2-2(R2 – (xi+1)2)
Tính pi+1 - pi = 4xi + 6 + 2((yi-1)2 – (yi)2) – 2(yi+1 – yi))
●pi+1 = pi + 4xi + 6 + 2((yi-1)2 – (yi)2) – 2(yi+1 – yi))
Nếu pi < 0 thì yi+1 = yi khi đó pi+1 = pi + 4xi + 6
Nếu pi >= 0 thì yi+1 = yi-1 nên pi+1 = pi + 4(xi – yi) + 10
Trang 142.1.2 Lưu đồ thuật toán
Hình 1.9 Lưu đồ thuật toán Bressenham vẽ đường
tròn 2.1.3 Kết quả đạt được
Hình 1.10 Đường tròn vẽ bằng thuật toán Bressenham
Trang 152.2.Thuật toán Midpoint vẽ đường tròn
2.2.1 Thuật giải
giữa S1 và S2
Hình 1.11 Cách chọn điểm dựa vào Midpoint Đặt F(x,y) = x2 + y2 - R2 , ta có :
- F(x,y) < 0 , nếu điểm (x,y) nằm trong đường tròn
- F(x,y) = 0 , nếu điểm (x,y) nằm trên đường tròn
- F(x,y) > 0 , nếu điểm (x,y) nằm ngoài đường tròn Xét Pi = F(MidPoint) = F(xi +1, yi - 1/2)
Ta có :
●Nếu Pi < 0 : điểm MidPoint nằm trong đường tròn Khi đó, điểm
Trang 16yi - 1 Khi đó Pi+1 = Pi + 2xi - 2yi +5.
●Pi ứng với điểm ban đầu ( x0 , y0 ) = (0,R) là:
P0 = F(x0 + 1, y0 - 1/2) = F(1, R - 1/2) = 5/4 -R
2.2.2 Lưu đồ thuật toán
Hình 1.12 Lưu đồ thuật toán Midpoint vẽ đường tròn
Trang 172.2.3 Kết quả đạt được
Hình 1.13 Đường tròn vẽ bằng thuật toán Midpoint
3 Thuật toán vẽ Ellipse 3.1.Thuật toán Bressenham vẽ Ellipse
3.1.1 Thuật giải
Tính khoảng cách từ điểm thực đến 2 điểm vẽ được, xem khoảng cách nào ngắn hơn
Vẽ 1 nửa elip, sau đó lấy đối xứng qua các đường phân giác
Phương trình đường elip có dang: x2/a2 + y2/b2 =1 => y2 = -(b2 / a2).x2 +
b2 => x2 = -( a2 / b2).y2+ a2
Chúng ta sẽ đi vẽ từng nửa elip Ở mỗi nửa elip, chúng ta lại phải vẽ theo hai nhánhkhác nhau Đó là một nhánh từ trên xuống, và một nhánh từ dưới lên Hai nhánh nàycắt nhau tại giao điểm mà ở đó hệ số góc của tiếp tuyến với Elip bằng -1.Chúng ta dễdàng thấy được nhánh vẽ từ trên xuống :
khi x tăng lên 1 đơn vị thì y chỉ tăng lên rất ít ; và ngược lại với nhánh vẽ từ dưới lên:
khi y tăng lên 1 đơn vị thì x chỉ tăng lên rất ít Nếu như chúng ta chọn cách vẽ liền
Trang 18một mạch thì việc tăng lên không đồng đều của tọa độ x và y sẽ khiến đường elipkhông mịn, đứt gãy, rất xấu Do đó, muốn vẽ được đường elip mịn nét, chúng ta sẽ
Hình 1.14 Giao điểm khi vẽ từ 2 nhánh − Xét nhánh 1 từ trên xuống:
Trang 19=> pi = d1 - d2 = 2[a 2 /b 2 (yi + 1) 2 -a 2 ] + 2(xi 2 + xi) -1 pi+1
pi+1 - pi = 2 a 2 /b 2 [(yi+1 + 1) 2 - (yi + 1) 2 ] + 2[(xi+1) 2 + xi+1 - xi 2 - xi] (*) ● pi pi+1 = pi + 2.(a 2 /b 2 ).(2y+3)
● pi ≥ 0 chọn xi+1 = xi – 1 từ (*) => pi+1 = pi + 2.(a 2 /b 2 ).(2y+3) – 4xi Với điểm đầu tiên (a,0) ta có: pi = 2(a 2 / b 2 ) – 2a + 1
3.1.2 Kết quả đạt được
Hình 1.15 Hình Ellipse vẽ bằng thuật toán
Bressenham 3.2.Thuật toán Midpoint vẽ Ellipse
3.2.1 Thuật giải
Phương trình của đường Elip:
f(x,y) = b2x2 + a2y2 – a2b2 f(x,y) < 0 nếu (x,y) nằm bên trong elip
f(x,y) = 0 nếu (x,y) nằm trên elip f(x,y) > 0 nếu (x,y) nằm bên ngoài elip
Trang 20Hình 1.16 Lựa chọn điểm trong thuật toán Midpoint
● Chia Elip làm 2 phần tại điểm Q nơi có hệ số góc của tiếp tuyến với Elip bằng -1 (véc
tơ gradient bằng 1) (lý do tại sao lại phải chia làm 2 phần thì bài 6 mình đã giải thích rồinhé) Tại vùng thứ nhất, x biến thiên nhanh hơn y và tại vùng thứ hai, y biến thiên nhanhhơn x Nhớ lại công thức hệ số góc của đường cong:
x, theo y
● Trong phần thứ nhất:
nhảy i+1 là T hoặc S Trung điểm I của TS sẽ quyết định điểm nào được chọn Giá trịcủa f(x,y) tại điểm I:
di = f(xi + 1, yi – ½) = b2(xi + 1)2 + a2(yi – ½)2 – a2b2
Ta lại có:
di+1 = f(xi+1 + 1, yi+1 – ½) = b2(xi+1 +1)2 + a2(yi+1 – ½)2 – a2b2 Suy ra:
di+1 – di = b2[(xi+1 +1)2 – (xi +1)2] +a2[(yi+1 – ½)2 – (yi – ½)2] Vì xi+1 = xi+1 nên di+1 – di
= 2b2xi+1 + b2 + a2[(yi+1 – ½)2 – (yi – ½)2] + Nếu điểm được chọn là T (di < 0) thì yi+1 =
Trang 21di+1 = di + 2bxi+1 + b – 2ayi+1 (= di + fx + b – fy)
trên elip trong bước j+1 Điểm được chọn là U hoặc V Trung điểm K của UV sẽquyết định việc chọn điểm U hay điểm V Giá trị của f(x,y) tại điểm K:
ej = f(xj + ½, yj – 1) = b2(xj + ½)2 + a2(yj – 1)2 – a2b2 + Nếu ej ≥ 0 điểm được chọn là U
Trang 223.2.2 Lưu đồ thuật toán
Hì
nh 1.17 Lưu đồ thuật toán Midpoint vẽ
Ellipse 3.2.3 Kết quả đạt được
Hình 1.18 Ellipse vẽ bằng thuật toán Midpoint
Trang 234 Các thuật toán tô màu 4.1.Thuật toán tô màu loang
4.1.1 Khái niệm
Thuật toán tô màu loang (hay còn gọi là tô màu theo đường biên, tô lâncận.Đường biên của vùng tô màu ở thuật toán tô loang được xác định bởi tập các đỉnhcủa 1 đa giác, đường biên trong thuật toán được mô tả bằng một giá trị duy nhất, đó làmàu của tất cả các điểm thuộc về đường biên (nói ngắn gọn là chúng ta sẽ tô đườngbiên một màu riêng) Bắt đầu từ 1 điểm nằm bên trong vùng tô, ta sẽ kiểm tra cácđiểm lân cận của nó đã được tô màu hay có phải điểm biên hay không Nếu khôngphải là điểm đã tô và không phải là điểm biên ta sẽ tô màu nó Lặp lại cho tới khi nàokhông còn tô được điểm nào nữa thì dừng
4.1.2 Giải thuật
Thuật toán đệ quy:
-Bước 1: Kẻ vùng biên cần tô
-Bước 2: Xác định một điểm (x,y) bên trong vùng cần tô
-Bước 3: Tô điểm (x,y) sau đó tô loang những điểm lân cận
-Bước 1: Cất điểm hạt giống đầu tiên vào kho
-Bước 2: Lặp nếu kho không rỗng
+Lấy điểm hạt giống
+Tô điểm hạt giống, sau đó tô loang sang 2 bên
+Bổ sung những điểm hạt giống mới vào kho từ dòng trên và dòng dưới.Tiêu chuẩn để làm điểm hạt giống: điểm này chưa được tô màu và không phải điểm biên
Trang 244.1.3 Kết quả đạt được
Hình 1.19 Tô màu loang
4.2.Thuật toán tô màu quét
Trang 254.2.2 Thuật giải
Hình 1.20 Tô màu theo dòng quétDanh sách các cạnh (Edge Table - ET) : chứa toàn bộ các cạnh của đa giác (loạicác cạnh song song với trục Ox) được sắp theo thứ tự tăng dần của trục y
Danh sách các cạnh đang kích họat (Active Edge Table - AET) : chứa các cạnhcủa đa giác có thể cắt ứng với dòng quét hiện hành, các cạnh này được sắp theo thứ tựtăng dần của hoành độ giao điểm của hoành độ giao điểm giữa cạnh và dòng quét.Khi dòng quét đi từ ymin đến ymax, các cạnh thoả điều kiện sẽ được chuyển từ
ET sang AET Nghĩa là, khi dòng quét y=k bắt đầu cắt một cạnh, khi đó k ≥ ymin,cạnh này sẽ được chuyển từ ET sang AET Khi dòng quét không còn cắt cạnh nàynữa, khi đó, k > ymax, cạnh này sẽ bị loại khỏi AET Khi không còn cạnh nào trong
ET hay AET thì quá trình tô màu kết
Trang 264.2.3 Lưu đồ thuật toán
Hình 1.21 Lưu đồ thuật toán tô màu
quét 4.2.4 Kết quả đạt được
Hình 1.22 Tô màu bằng thuật toán scan-line
Trang 27CHƯƠNG 2: PHÁT TRIỂN ỨNG DỤNG
1 Phát biểu bài toán
Nội dung của chương trình là mô phỏng chuyển động của tàu vũ trụ khi đượcphóng Chương trình sử dụng thư viện OpenGL để xây dựng môi trường đồ họa 3D.Chương trình khi khởi động sẽ bệ phóng tàu, tàu vũ trụ gắn với tên lửa đẩy ở trạngthái bắt đầu phóng, tia lửa được vẽ ở đuôi tên lửa đẩy, màu xung quanh sẽ chuyểndần từ xanh da trời sang đen Khi bay lên khỏi bệ phóng sẽ ngừng vẽ bệ phóng, saukhi lên cao một lúc tàu sẽ bay qua mây, lúc này mới vẽ mây và sau khi mây chuyểnđộng ra khỏi màn hình cũng sẽ ngừng vẽ mây Khi đã lên vũ trụ, màu xung quanhchuyển đen, tên lửa đẩy ngừng phun tia lửa và tách khỏi tàu, khi đó tàu bắt đầu phuntia lửa, khi màu xung quanh đã chuyển đen hoàn toàn thì bắt đầu vẽ sao, tàu vũ trụchuyển động tịnh tiến ra dần khỏi khung hình
Thứ tự công việc để giải quyết bài toán là:
tên lửa đẩy, bệ phóng tàu, mây, tia lửa, sao
biến đổi hình học để thay đổi vị trí, kích thước, hướng của các vật thể nhằm tạo hiệu ứngchuyển động Các phép biến đổi sử dụng trong bài toán là:
1 ]
2 Các bước giải quyết
2.1.Tạo dựng môi trường đồ họa
Sử dụng lần lượt các hàm:
Trang 28● glutInit(): khởi tạo thư viện GLUT và đàm phán một phiên với hệ thốngcửa sổ Trong quá trình này, glutInit có thể khiến chương trình GLUT chấm dứt vớithông báo lỗi cho người dùng nếu
GLUT không thể được khởi tạo đúng cách
đầu được sử dụng khi tạo các cửa sổ cấp cao nhất, cửa sổ phụ và lớp phủ để xác địnhchế độ hiển thị OpenGL cho cửa sổ hoặc lớp phủ được tạo GLUT_SINGLE: chế độđệm đôi; GLUT_RGB: sử dụng hệ màu RGB
được tạo
trái màn hình
đề "Mo phong phong tau vu tru"
2.2.Thiết lập các hiệu ứng, màu sắc, kích thước cửa sổ, góc nhìn
Thiết lập chế độ màu mới cho toàn bộ ứng dụng bằng hàm glClearColor().Gọi hàm glEnable() để kích hoạt một số tính năng của OpenGL như ánh sáng,
độ sâu
Sử dụng glLightfv() để cài đặt vị trí chiếu sáng và loại ánh sáng, glMaterialfv()
để tùy chỉnh ánh sáng của đối tượng(có thể gọi là tạo màu), gọi hàm glMateriali()giúp điều chỉnh cường độ của điểm chiếu sáng
Dùng glViewport() để thiết lập một vùng cửa sổ để hiển thị lên đó
Những gì được vẽ sẽ vào vùng viewport này
Chỉ định ma trận hiện tại bằng glMatrixMode(GL_PROJECTION): dùng đểchỉnh hình hoặc chiếu phối cảnh
Dùng glLoadIdentity(): đặt lại ma trận trở về trạng thái mặc định
nhìn bằng gluLookAt()
2.3.Vẽ các đối tượng đồ họa
Một vài thiết lập trước khi vẽ:
Trang 29● Sử dụng ma trận chuyển đổi đối tượng thay cho ma trận chiếu phối cảnh: glMatrixMode(GL_MODELVIEW).
(GL_MODELVIEW)
Bắt đầu vẽ hình:
phép biến đổi hình học(glRotatef() và glTranslatef()) để vẽ liên tiếp các hình trụ ghéplại với nhau tạo thành bệ phóng tàu
chóp
và buồng lái bằng hàm gluSphere() tạo ra khối cầu, trước đó sử dụng glScalef() đểkéo giãn làm cho khối cầu dùng làm buồng lái thành hình bầu dục Phần đuôi và cánhđược vẽ bằng cách ghép cách hình tứ giác với nhau, các hình tứ giác được vẽ bằngglBegin(GL_QUADS) sau đó truyền vào tọa độ 4 điểm của tứ giác
glTranslatef() để ghép các khối lại với nhau tạo thành đám mây
sắc, sử dụng glVertexPointer() xác định một mảng dữ liệu
Point vừa định nghĩa, glEnableClientState(GL_VERTEX_ARRAY) để chophép gọi đến glDrawArrays() dùng để vẽ điểm Vì glDrawArrays() sẽ vẽngẫu nhiên các điểm trên vùng rộng(do tọa độ các điểm được sinh ngẫunhiên) nên ta sẽ dùng glScalef() để thu nhỏ vùng vẽ và kích thước các điểm
vẽ, kết hợp với hàm glTranslatef() dịch vùng vẽ về đuôi của tàu và tên lửađẩy giúp nó trông gioongss tia lửa
2.4.Tạo hiệu ứng chuyển động cho các đối tượng
Ta viết hàm timer() có chức năng cập nhật lại tọa độ và hướng của các vật thể,hàm chứa glutPostRedisplay() để yêu cầu hiển thị lại và glutTimerFunc() để gọi lạihàm timer() tính toán tiếp các thông số
Mỗi lần hiển thị lại ta sẽ dùng các hàm glTranslatef() và glRotatef() với cáctham số truyền vào là các biến đã được cập nhật trong hàm timer() để tạo hiệu ứng
chuyển động cho các vật thể 3 Kết quả thực nghiệm