
PH N IV - MÔ PH NG OPENGLẦ Ỏ
CH NG 11 – MÔ PH NG HO T Đ NG H TH NG B NG L PƯƠ Ỏ Ạ Ộ Ệ Ố Ằ Ậ
TRÌNH MFC S D NG TH VI N OPENGL.Ử Ụ Ư Ệ
11.1. GI I THI U CHUNG V OPENGL.Ớ Ệ Ề
11.1.1. OpenGL.
Hình 11.1:OpenGL logo
OpenGL- là ch vi t t t c a Open Graphic Library- là m t th vi n đ h a t c đữ ế ắ ủ ộ ư ệ ồ ọ ố ộ
cao và đ c l p v i h th ng giao di n các h đi u hành. Th vi n này đ c phát tri nộ ậ ớ ệ ố ệ ệ ề ư ệ ượ ể
b i t p đoàn Silicon Graphic Library Inc. Và hi n nay OpenGL là m t công c đ c sở ậ ệ ộ ụ ượ ử
d ng r ng rãi trong các h đi u hành nh : win9x, win NT...ụ ộ ệ ề ư
Ngày nay vi c ng d ng các công ngh đ h a vào cu c s ng đang phát tri nệ ứ ụ ệ ồ ọ ộ ố ể
m nh m . Trong k thu t, vi c s d ng các ng d ng c a OpenGL hay DirectX vàoạ ẽ ỹ ậ ệ ử ụ ứ ụ ủ
vi c mô ph ng các c c u máy móc, các ho t đ ng c a các thi t b máy móc, robot côngệ ỏ ơ ấ ạ ộ ủ ế ị
nghi p tr c khi đi vào thi t k , th nghi m..b ng mô hình th c đang đ c r t nhà chệ ướ ế ế ử ệ ằ ự ượ ấ ế
t o quan tâm b i tính tr c quan đem l i khi xây d ng đ c các mô hình đ h a ho tạ ở ự ạ ự ượ ồ ọ ạ
đ ng trong không gian 3 chi u. Và đó cũng là lý do tôi ch n th vi n l p trình OpenGLộ ề ọ ư ệ ậ
k t h p l p trình C++ đ xây d ng bài toán mô ph ng cho quá trình s n xu t đang ti nế ợ ậ ể ự ỏ ả ấ ế
hành.

11.1.2. Đ c đi m c a OpenGL.ặ ể ủ
OpenGl là m t th vi n đ h a r t l n, g m kho ng 150 hàm h tr m t s tínhộ ư ệ ồ ọ ấ ớ ồ ả ỗ ợ ộ ố
năng c b n nh sau:ơ ả ư
•Kh năng th hi n các hàn đ i t ng đ h a c b n.ả ể ệ ố ượ ồ ọ ơ ả
OpenGL có th th hi n đ cc các đ i t ng đ h a c b n nh : đi m, đo nể ể ệ ượ ố ượ ồ ọ ơ ả ư ể ạ
th ng, đa giác, các đ ng cong hay m t cong b c hai. Ngoài ra còn m t s đ i t ng 3ẳ ườ ặ ậ ộ ố ố ượ
chi u c b n khác nh : hình c u, hình tr , hình h p...T đó có th xây d ng nên cácề ơ ả ư ầ ụ ộ ừ ể ự
đ i t ng 3 chi u phút t p h n, th m chí có th t đ nh nghĩa hay thi t k các ph nố ượ ề ạ ơ ậ ể ự ị ế ế ầ
m m h tr 3 chi u nh AutoCad, SolidWorks, 3Dmax.ề ỗ ợ ề ư
•Kh năng quan sát đ i t ng.ả ố ượ
Các đ i t ng có th quan sát t nhi u góc đ khác nhau thông qua các phép bi n đ iố ượ ể ừ ề ộ ế ổ
v trí m t hay phép bi n đ i v trí v t cũng nh các phép chi u...ị ắ ế ổ ị ậ ư ế
•Kh năng đ nh màu s c v t li u đ i t ng.ả ị ắ ậ ệ ố ượ
Cho phép th hi n màu s c đ i t ng m t cách đa d ng và thu c tính v t li u.ể ệ ắ ố ượ ộ ạ ộ ậ ệ
•Kh năng t o hi u ng ánh sáng trong ch ng trình mô ph ng.ả ạ ệ ứ ươ ỏ
Cho phép t o hi u ng ánh sáng nh th c t t o ra c m giác th t cho các mô hình vàạ ệ ứ ư ự ế ạ ả ậ
khung c nh 3 chi u.ả ề
•Kh năng t o khung c nh mô ph ng th c t OpenGL.ả ạ ả ỏ ự ế
H tr các k thu t t o các khung c nh gi ng th c t nh :ỗ ợ ỹ ậ ạ ả ố ự ế ư
-K thu t dán nh (texture mapping) đ t o các khung c nh th c t .ỹ ậ ả ể ạ ả ự ế
-K thu t s ng mù (fog) cho phép t o hi u ng nh m d n khi đ i t ngỹ ậ ươ ạ ệ ứ ả ờ ầ ố ượ
chuy n đ ng xa kh i m t nhìn.ể ộ ỏ ắ
-K thu t tr n màu (blending) t o các v t th trong m có th nhìn xuyên quaỹ ậ ộ ạ ậ ể ờ ể
đ c.ượ
-K thu t lo i b răng c a (antialiasing).ỹ ậ ạ ỏ ư
•Kh năng c i thi n t c đ OpenGL.ả ả ệ ố ộ
Cho phép c i thi n t c đ hi n th b ng k thu t danh sách hi n thì (display list)ả ệ ố ộ ể ị ằ ỹ ậ ể
•Kh năng ch n các đ i t ng đ h a (selection and hitting derect).ả ọ ố ượ ồ ọ
K thu t cho phép ch n các đ i t ng đ h a 3 chi u và ng d ng trong k thu tỹ ậ ọ ố ượ ồ ọ ề ứ ụ ỹ ậ
mô ph ng va ch m c a v t th .ỏ ạ ủ ậ ể

11.2. GI I THI U NGÔN NG L P TRÌNH VISUAL C++ VÀ NG D NG MFC.Ớ Ệ Ữ Ậ Ứ Ụ
Visual C++ là m t trong các ngôn ng l p trình thu c dòng Visual Studio c a hãngộ ữ ậ ộ ủ
Microsoft, phát tri n d a trên n n t ng là ngôn ng l p trình h ng đ i t ng Cể ự ề ả ữ ậ ướ ố ượ ++.
Visual C++ ra đ i kho ng nh ng năm 1990 và càng ngày càng đ c s d ng r ng rãiờ ả ữ ượ ử ụ ộ
nh t là các ng d ng trong k thu t nh là l p trình nhúng, l p trình đi u khi n và l pấ ứ ụ ỹ ậ ư ậ ậ ề ể ậ
trình mô ph ng. Vi c t o ra các giao di n ph c t p và trình bày đ p đ i v i Visual Cỏ ệ ạ ệ ứ ạ ẹ ố ớ ++
khá là đ n gi n, và đây chính là th m nh c a Visual Cơ ả ế ạ ủ ++ trong vi c tr giúp đ c l c choệ ợ ắ ự
ng i l p trình khi xây d ng nh ng d án l n ho c trong k thu t l p trình h th ng.ườ ậ ự ữ ự ớ ặ ỹ ậ ậ ệ ố
MFC (Microsoft Foundation Classes) – là th vi n c s ch a các l p (class) C++ư ệ ơ ở ứ ớ
do Microsoft cung c p nh m đ t m t trình bao b c Windows API t o s thu n l i caoấ ằ ặ ộ ọ ạ ự ậ ợ
cho ng i dùng trong vi c phát tri n ng d ng. Ngoài ra, MFC còn cung c p ki n trúcườ ệ ể ứ ụ ấ ế
View/Document giúp đ nh nghĩa c u trúc ch ng trình và c u trúc tài li u cho trình ngị ấ ươ ấ ệ ứ
d ng đ n gi n, uy n chuy n và d phát tri n h n. Do đó MFC còn đ c xem là m tụ ơ ả ể ể ễ ể ơ ượ ộ
khung ng d ng (application framework).ứ ụ
L p trình Windows v i MFC là k thu t l p trình s d ng b th vi n MFC đậ ớ ỹ ậ ậ ử ụ ộ ư ệ ể
xây d ng các trình ng d ng trong Windows (Window App) và các d ng ng d ng khácụ ứ ụ ạ ứ ụ
nh DLL, COM, ActiveX...ư
11.3. MÔ PH NG BÀI TOÁN C N TH C HI N.Ỏ Ầ Ự Ệ
11.3.1. Cách t o m t Project MFC đ mô ph ng ho t đ ng.ạ ộ ể ỏ ạ ộ
Các b c ti n hành nh sau:ướ ế ư
-Ch n ọFile→New, ch n ọtab Projects, khi đó xu t hi n các Project đ c l p trình trênấ ệ ượ ậ
Visual C++ 6.0→Ch n ọMFC AppWizard(exe). Trong Project name, gõ tên mu n đ t vào,ố ặ
ví d “van”, và trong ụlacation ch n v trí l u Project v a t o.ọ ị ư ừ ạ

Hình 11.2: B t đ u thi t l p Project MFC.ắ ầ ế ậ
-Ti p đó xu t hi n các h p tho i cho phép thi t l p đ c tính c a Project t o ra, c thế ấ ệ ộ ạ ế ậ ặ ủ ạ ụ ể
nh sau:ư
B c 1ướ : Ch n ọSingle Document Interface- đây là lo i giao di n đ n tài li u t i m t th iạ ệ ơ ệ ạ ộ ờ
đi m, ch có m t tài li u đ c m và hi n hành, đ cho ng i dùng thao tác trên đó.ể ỉ ộ ệ ượ ở ệ ể ườ
Trong tr ng h p này, do c n mô ph ng ho t đ ng c a m t h th ng hàn nên s d ngườ ợ ầ ỏ ạ ộ ủ ộ ệ ố ử ụ
ki u tài li u này.ể ệ

Hình 11.3: Thi t l p 1ế ậ
B c 2ướ : Do ng d ng không s d ng d li u nên trong m c ứ ụ ử ụ ữ ệ ụ Database Support ch nọ
None.
Hình 11.4: Thi t l p 2.ế ậ
B c 3ướ : Do không dùng tài li u ph c t p nên ch n ệ ứ ạ ọ None.

