Nó có thể hoạt động được trên nhiều nền tảng như MacOS, Linux hoặc Windows và hỗ trợ nhiều trình biên dịch như MS Visual C++ và GNU GCC.Bên cạnh đó, Code::Blocks còn có giao diện thân th
Trang 21.1.1 Thu t toán Bresenhamậ1.1.2 Thu t toán Midpointậ1.1.3 Thu t toán Bézierậ
2 Trình bày thu t toán đậược s d ngử ụ2.1 Thu t toán Bresenhamậ
2.2 Thu t toán Midpointậ
3 Ý tưởng xây d ng chựương trình
Trang 3CHƯƠNG 1: GI I THI U V Đ H A MÁY TÍNHỚỆỀ Ồ Ọ1.1.L ch s phát tri nịửể
- Graphics nh ng năm 1950-1960ữ
+ Năm 1959 Thi t b đ ho đ u tiên là màn hình xu t hi n t i Đ c.ế ị ồ ạ ầ ấ ệ ạ ứ
hi n bútsáng thao tác v i màn hình.ệ ớ
+ Năm 1960 William Fetter nhà khoa h c ngọ ười Mỹ, ông đang nghiên c u ứ xâyd ng mô hình bu ng lái máy bay cho hãng Boeing c a Mỹ Ông đã d a ự ồ ủ ự trên hình nh 3 chi u c a mô hình ngả ề ủ ườiphi công trong bu ng lái c a ồ ủ máy bay đ xây d ngnên m t mô hình t i u cho bu ng lái máy bay ể ự ộ ố ư ồ Phương pháp này cho phép các nhàthi t k quan sát m t cách tr c quan ế ế ộ ự v trí c a ngị ủ ười lái trong khoang Ông đ t têncho phặ ương pháp này là đ ồ ho máy tính (Computer Graphics) ạ
+ Màn hình là thi t b thông d ng nh t trong h đ ho , các thao tác c a ế ị ụ ấ ệ ồ ạ ủ h u h tcác màn hình đ u d a trên thi t k ng tia âm c c CRT (Cathode ầ ế ề ự ế ế ố ự ray tube) Khi đógiá đ làm tể ươi màn hình là r t cao, máy tính x lý ấ ử
ch m, đ t và không ch c ch n(không đáng tin c y).ậ ắ ắ ắ ậ
- Graphics: 1960-1970+ Năm 1963 Ivan Sutherland (h i ngh Fall Joint ộ ị Computer - l n đ u tiên có kh năng t o m i, hi n th và thay đ i đầ ầ ả ạ ớ ể ị ổ ược th c hi n trong th i gian th c trên mànCRT).ự ệ ờ ự
+ H th ng này đệ ố ược dùng đ thi t k m ch đi n: CRT, LightPen (bút ể ế ế ạ ệ sáng),computer (ch a chứ ương trình x lý thông tin) Ngử ườ ử ụi s d ng có th vẽ m ch đi ntr c ti p lên màn hình thông qua bút sáng.ể ạ ệ ự ế
- Graphics:1970-1980+ Raster Graphics (đ ho đi m) B t đ u chu n ồ ạ ể ắ ầ ẩ đ ho ví d nh : GKS(GraphicsKernel System): European effort (k t quồ ạ ụ ư ế ả c a châu âu), Becomes ISO 2D standard.ủ
- Graphics: 1980-1990+ M c đích đ c bi t v ph n c ng, thi t b hình ụ ặ ệ ề ầ ứ ế ị h c đ ho Silicon Xu t hi n cácchu n công nghi p: PHIGS ọ ồ ạ ấ ệ ẩ ệ
(Programmers Hierarchical Interactive GraphicsStandard) xác đ nh các ị phương pháp chu n cho các mô hình th i gian th c và l ptrình hẩ ờ ự ậ ướng đ i tố ượng.
Trang 4+ Giao di n ngệ ười máy Human-Computer Interface (HCI) - Computer Graphics: 1990-2000
+ OpenGL API (Application Program Interface – giao di n chệ ương trình ngd ng).
+ Completely computer-sinh ra ngành đi n nh phim truy n (Toy Story) ệ ả ệ r t thànhcông Các ti m tàng ph n c ng m i: Texture mapping (dán các ấ ề ầ ứ ớ
nh c a c nh th tlên b m t c a đ i t ng),blending (tr n màu)
- Computer Graphics: 2000- nay
+ nh hi n th c, các c c đ ho cho máy tính (Graphics cards for PCs), Ả ệ ự ạ ồ ạ gameboxes and game players.
+ Công nghi p phim nh nh vào đ ho máy tính (Computer graphics ệ ả ờ ồ ạ becomingroutine in movie industry): Maya (th gi i v t ch t tri giác ế ớ ậ ấ được)
1.2 Khái ni m đ h a máy tính và các kỹ thu t đ h a ệồ ọậồ ọ1.2.1 Đ h a máy tính là gì ?ồ ọ
- Đ h a máy tính là m t ngành khoa h c Tin h c chuyên nghiên c u v ồ ọ ộ ọ ọ ứ ề cácphương pháp và kỹ thu t đ có th mô t và thao tác trên các đ i tậ ể ể ả ố ượng c a th gi ith c b ng máy tínhủ ế ớ ự ằ
- V b n ch t: đó là m t quá trình xây d ng và phát tri n các công c trên ề ả ấ ộ ự ể ụ c hailĩnh v c ph n c ng và ph n m m h tr cho các l p trình viên thi t ả ự ầ ứ ầ ề ổ ợ ậ ế k các chế ươngtrình có kh năng đ h a cao.ả ồ ọ
- V i vi c mô t d li u thông qua các hình nh và màu s c đa d ng c a ớ ệ ả ữ ệ ả ắ ạ ủ nó, cácchương trình đ h a thồ ọ ường thu hút ngườ ử ụi s d ng b i tính thân ở thi n, d dùng, kích thích kh năng sáng t o và nâng cao năng su t làm ệ ể ả ạ ấ vi c.ệ
+ Các mô hình hình nh đả ược hi n th nh m t lể ị ư ộ ưới đi m (grid) các pixel ể r i r c, ờ ạ
+ T ng pixel đ u có v trí xác đ nh, đừ ề ị ị ược hi n th v i m t giá tr r i r c ể ị ớ ộ ị ờ ạ (s nguyên) các thông s hi n th (màu s c ho c đ sáng) ố ố ể ị ắ ặ ộ
Trang 5+ T p h p t t c các pixel c a grid cho chúng ta mô hình, hình nh đ i ậ ợ ấ ả ủ ả ố
+ Phương pháp r i r c hoá (s hoá) hình nh th c c a đ i tờ ạ ố ả ự ủ ố ượng
+ Có th s a đ i (image editing) ho c x lý (image processing) m ng các ể ử ổ ặ ử ả pixel thuđược theo nh ng phữ ương pháp khác nhau đ thu để ược hình nh ả đ c tr ng c a đ itặ ư ủ ố ượng.
1.2.2 Kỹ thu t đ h a Vectorậồ ọ
- Xây d ng mô hình hình h c cho hình nh đ i tự ọ ả ố ượng, xác đ nh các thu c ị ộ tính c amô hình hình h c, sau đó d a trên mô hình này đ th c hi n quá ủ ọ ự ể ự ệ trình tô trát đ hi n th t ng đi m c a mô hình, hình nh c a đ i tể ể ị ừ ể ủ ả ủ ố ượng - Kỹ thu t này ch l u tr mô hình toán h c c a các thành ph n trong mô ậ ỉ ư ữ ọ ủ ầ hình hìnhh c cùng v i các thu c tính tọ ớ ộ ương ng mà không c n l u l i toàn ứ ầ ư ạ b t t c cácpixel c a hình nh đ i tộ ấ ả ủ ả ố ượng.
+ Các mô hình hình nh đả ược hi n th nh m t lể ị ư ộ ưới đi m (grid) các pixel ể r i r c,ờ ạ
+ T ng pixel đ u có v trí xác đ nh, đừ ề ị ị ược hi n th v i m t giá tr r i r c ể ị ớ ộ ị ờ ạ (s nguyên) các thông s hi n th (màu s c ho c đ sáng) ố ố ể ị ắ ặ ộ
+ T p h p t t c các pixel c a grid cho chúng ta mô hình, hình nh đ i ậ ợ ấ ả ủ ả ố
Trang 6+ Có th s a đ i (image editing) ho c x lý (image processing) m ng các ể ử ổ ặ ử ả pixel thuđược theo nh ng phữ ương pháp khác nhau đ thu để ược hình nh ả đ c tr ng c a đ itặ ư ủ ố ượng.
1.2.2 Kỹ thu t đ h a Vectorậồ ọ
- Xây d ng mô hình hình h c cho hình nh đ i tự ọ ả ố ượng, xác đ nh các thu c ị ộ tính c a mô hình hình h c, sau đó d a trên mô hình này đ th c hi n quá ủ ọ ự ể ự ệ trình tô trát đ hi n th t ng đi m c a mô hình, hình nh c a đ i tể ể ị ừ ể ủ ả ủ ố ượng - Kỹ thu t này ch l u tr mô hình toán h c c a các thành ph n trong mô ậ ỉ ư ữ ọ ủ ầ hình hìnhh c cùng v i các thu c tính tọ ớ ộ ương ng mà không c n l u l i toàn ứ ầ ư ạ b t t c cácpixel c a hình nh đ i tộ ấ ả ủ ả ố ượng.
- So sánh gi a Đ h a đi m và Đ h a Vector:ữ ồ ọ ể ồ ọ • C u thành:ấ
Đ h a vector s d ng các công th c và hình h c đ xác đ nh các ồ ọ ử ụ ứ ọ ể ị đi m, để ường và vùng trong hình nh.ả
Có th phóng to mà không làm m t đi ch t lể ấ ấ ượng vì không d a trên pixel.ự • M c đích s d ng:ụ ử ụ
Thích h p cho các bi u đ , logo, bi u đ và các hình nh ch a các ợ ể ồ ể ồ ả ứ hình d ng đ n gi n.ạ ơ ả
• M r ng hình nh:ở ộ ả
Có th phóng to mà không làm m t đi đ nét và chi ti t c a hình nh.ể ấ ộ ế ủ ả • Dung lượng t p tin:ậ
Thường nh h n so v i hình nh đ h a đi m vì nó ch l u tr ỏ ơ ớ ả ồ ọ ể ỉ ư ữ thông tin v các đi m và hình d ng.ề ể ạ
Trang 7CHƯƠNG 2: GI I THI U Đ TÀIỚỆỀ
Vi c vẽ mô ph ng đ ng h b ng mã l p trình là m t đ tài thú v và sáng ệ ỏ ồ ồ ằ ậ ộ ề ị t o trong lĩnh v c công ngh thông tin Đ ng h không ch là m t thi t b ạ ự ệ ồ ồ ỉ ộ ế ị đ đo th i gian mà còn là m t bi u tể ờ ộ ể ượng c a th m mỹ và s s p x p ủ ẩ ự ắ ế Thông qua mã l p trình, chúng ta có th t o ra nh ng mô ph ng đ ng h ậ ể ạ ữ ỏ ồ ồ s ho c đ ng h c v i đ chính xác và tính năng đa d ng.ố ặ ồ ồ ơ ớ ộ ạ
Đ th c hi n đ tài này, chúng ta s d ng các ngôn ng l p trình nh ể ự ệ ề ử ụ ữ ậ ư JavaScript, Python ho c C++, cùng v i các th vi n đ h a nh Canvas ặ ớ ư ệ ồ ọ ư ho c Pygame Chúng ta có th t o ra các đ ng h kỹ thu t s hi n đ i, ặ ể ạ ồ ồ ậ ố ệ ạ đ ng h c v i các bánh răng và kim đ ng h ho t đ ng, hay th m chí là ồ ồ ơ ớ ồ ồ ạ ộ ậ nh ng đ ng h đ c đáo v i hi u ng đ c bi t.ữ ồ ồ ộ ớ ệ ứ ặ ệ
Vi c vẽ mô ph ng đ ng h không ch là vi c hi n th th i gian mà còn thúc ệ ỏ ồ ồ ỉ ệ ể ị ờ đ y s sáng t o và kh năng tẩ ự ạ ả ương tác v i ngớ ười dùng Chúng ta có th t oể ạ ra các tính năng b sung nh báo th c, đ ng h đ m ngổ ư ứ ồ ồ ế ược, ho c th m chíặ ậ là tích h p v i các d án khác nh ng d ng đo th d c ho c IoT.ợ ớ ự ư ứ ụ ể ụ ặ
V i s phát tri n không ng ng c a công ngh , vi c vẽ mô ph ng đ ng h ớ ự ể ừ ủ ệ ệ ỏ ồ ồ dùng mã l p trình không ch giúp chúng ta hi u rõ h n v cách th i gian ậ ỉ ể ơ ề ờ được đo và theo dõi, mà còn mang l i s thú v và thách th c trong vi c ạ ự ị ứ ệ khai thác ti m năng sáng t o c a l p trình viên Đây là m t đ tài thú v và ề ạ ủ ậ ộ ề ị đa d ng có th khám phá và phát tri n trong th gi i kỹ thu t s ngày nay.ạ ể ể ế ớ ậ ố
Trang 8Phân công công vi c c a các thành viênệ ủ
Nguy n Trung DũngễNguy n Vi t DũngễệNguy n Vi t NamễếĐ Quý Longỗ
Trang 9Có nhi u thu t toán khác nhau có th đề ậ ể ược s d ng đ vẽ hình tròn trongử ụ ể đ h a máy tính M t s thu t toán phồ ọ ộ ố ậ ổ bi n bao g m:ế ồ
Thu t toán Bresenhamậ Thu t toán Midpointậ Thu t toán Bézierậ
1.1.1.Thu t toán Bresenhamậ
Thu t toán Bresenham là thu t toán vẽ hình tròn đ n gi n nh t ậ ậ ơ ả ấ Thu t toán này ho t đ ng b ng cách b t đ u t tâmậ ạ ộ ằ ắ ầ ừ hình tròn và vẽ các đi m trên để ường tròn theo m t hộ ướng nh t đ nh.ấ ị
1.1.2.Thu t toán Midpointậ
Thu t toán Midpoint c i thi n đ chính xác c a thu t toán ậ ả ệ ộ ủ ậ
Bresenham b ng cách s d ng m t phằ ử ụ ộ ương pháp chia đôi kho ng ả cách Thu t toán này ho t đ ng b ng cách b t đ u t tâm hình trònậ ạ ộ ằ ắ ầ ừ và vẽ các đi m trên để ường tròn theo
m t hộ ướng nh t đ nh, theo hấ ị ướng đi c a góc ti p theo.ủ ế
Trang 10 Ph c t p h n thu t toán Bresenhamứ ạ ơ ậ
1.1.3.Thu t toán Bézierậ
Thu t toán Bézier s d ng các đậ ử ụ ường cong Bézier đ vẽ hình tròn Các ể đường cong Bézier là các đường cong tr n,ơ m m m i h n các đề ạ ơ ường
Ph c t p nh t trong các thu t toán vẽ hình trònứ ạ ấ ậ
2. Trình bày thu t toán đậược s d ngử ụ2.1 Thu t toán Bresenhamậ
Thu t toán Bresenham là thu t toán vẽ hình tròn đ n gi n nh t Thu t ậ ậ ơ ả ấ ậ toán này b t đ u t tâm hình tròn và s d ngắ ầ ừ ử ụ m t công th c đ n gi n độ ứ ơ ả ể tính toán đi m ti p theo trên để ế ường tròn.
Công th c tính toán đi m ti p theo trên đứ ể ế ường tròn nh sau:ư
t là góc c a đi m ti p theo trên đủ ể ế ường tròn
Thu t toán Bresenham ho t đ ng nh sau:ậ ạ ộ ư
Trang 11Thu t toán Midpoint c i thi n đ chính xác c a thu t toán Bresenham ậ ả ệ ộ ủ ậ b ng cách s d ng m t phằ ử ụ ộ ương pháp chia đôi kho ng cách Thu t toán nàyả ậ b t đ u t tâm hình tròn và s d ng m t công th c đ tính toán đi m ti pắ ầ ừ ử ụ ộ ứ ể ể ế theo trên đường tròn.
Công th c tính toán đi m ti p theo trên đứ ể ế ường tròn nh sau:ư
t là góc c a đi m ti p theo trên đủ ể ế ường trò Thu t toán Midpoint ho t đ ng nh sau:ậ ạ ộ ư
Đây là môi trường phát triển tích hợp (IDE) miễn phí được xây dựng để đáp ứng cácnhu cầu khắt khe nhất của người dùng trong lập trình các phần mềm được viết bằngngôn ngữ C, C++ hoặc Fortran Nó có thể hoạt động được trên nhiều nền tảng như MacOS, Linux hoặc Windows và hỗ trợ nhiều trình biên dịch như MS Visual C++ và GNU GCC.
Bên cạnh đó, Code::Blocks còn có giao diện thân thiện, tổ hợp tính năng đa dạng vàcó thể dễ dàng thêm các tính năng mới Điều này có được là do thiết kế trên khung plugin cho phép FDE này mở rộng tính năng bằng cách cài đặt hoặc viết các mã
Trang 12plugin Ví dụ như chức năng biên dịch và gỡ lỗi trên Code::Blocks được bổ sung bởicác plugin
2 Hướng d n cài đ t Code::Blocksẫặ2.1 Bước 1: T i Code::Blocksả
Truy c p đậ ường link: http://www.codeblocks.org/downloads Nh n ấ ch n “Download the binary release”ọ Xác minh đường d n c a trình biên d ch và trình g l iẫ ủ ị ỡ ỗ Ví d v i Code::Blocks 13.12 cho Windows:ụ ớ
Vào menu Settings, ch n Compiler… T i Selected Compiler, b n nh n ch nọ ạ ạ ấ ọ GNU GCC Compiler và ch n tab Toolchain Executables Sau đó ki m tra ọ ể m c Compiler’s Installation Directory.ụ
Nó sẽ được đ t thành th m c ph có tên MinGW c a th m c cài đ t ặ ư ụ ụ ủ ư ụ ặ Code::Blocks Gi s n u Code::Blocks đả ử ế ược cài đ t trong C dặ ổ ưới d ng ạ v i đớ ường d n c: \ Program Files \ codeblocks, b n hãy chuy n nó thành ẫ ạ ể c:\Program Files\codeblocks\MinGW.
Áp d ng cách ki m tra tụ ể ương t v i trình g l i B n cũng ch n GDB/CDB ự ớ ỡ ỗ ạ ọ debugger trong m c Debugger…: t i menu Settings và nh n vào Default ụ ạ ấ T i m c Executable path, b n nh p tên đạ ụ ạ ậ ường d n đâỳ đ c a gdb.exe, ẫ ủ ủ ch ng h n nh c : \ Program Files \ codeblocks \ MinGW \ bin \ gdb.exe ẳ ạ ư
Cài đ t thành công Code::Blocksặ
3 G i ý cách vi t chợếương trình C/C++ trong Code::Blocks
Sau khi đã cài đ t Code::Blocks cho máy tính, vi c ti p theo là hãy th t o ặ ệ ế ử ạ m t d án cho t ng ng d ng c a b n.ộ ự ừ ứ ụ ủ ạ
M t d án thông thộ ự ường sẽ bao g m nh ng t p có liên quan nh các mã ồ ữ ệ ư ngu n, t p tiêu đ và m t s tài nguyên khác B n hãy ti n hành theo các ồ ệ ề ộ ố ạ ế bước sau:
Trang 13 Ch n File -> New -> Project…Thông thọ ường b n nên ch n Console ạ ọ Application cho d án đ u tiên c a mình Sau đó nh n Go.ự ầ ủ ấ
Khi trình hướng d n Console Application hi n ra, b n nh n Next -> ẫ ệ ạ ấ C++ -> Next Trong m c Project Title, b n nh p HelloProject Trong ụ ạ ậ m c Folder to create project in, đ t thành th m c đang ho t đ ng ụ ặ ư ụ ạ ộ c a b n, ví d nh d:\project Ch n ch p nh n t t c ph n còn l i ủ ạ ụ ư ọ ấ ậ ấ ả ầ ạ và nh n Next.ấ
Lúc này, th m c d án Hello Project sẽ xu t hi n trong D, m c project ư ụ ự ấ ệ ổ ụ v i tên HelloProject.cbp B n có th ti p t c t o thêm các d án m i trong ớ ạ ể ế ụ ạ ự ớ th m c project này.ư ụ
Trong trường Compiler, ch p nh n tùy ch n m c đ nh c a GNU GCC ấ ậ ọ ặ ị ủ Compiler và nh n k t thúc.ấ ế
Trong ph n Management, ch n tab Projects -> m r ng nút d án ầ ọ ở ộ ự Hello Project -> m r ng nút Source Kích đúp chu t vào main.cpp.ở ộ ộ Đ t o chể ạ ương trình, ch n Build trong menu Buildọ
Đ ch y chể ạ ương trình,ch n Run trong menu Buildọ
3. Ph l c: S d ng các th vi n nào c a OpenLG; Code chụ ụử ụư ệủương trình
1 Khai báo Thư viện và Định nghĩa:
Chương trình sử dụng các thư viện cần thiết cho đồ họa và nhập/xuất chuẩn.
#define PI 3.14159265359 định nghĩa hằng số PI.
2.Hàm tinhgoc:
Hàm này chuyển đổi góc từ độ sang radian.
Trang 143.Hàm vekhung:
Hàm này vẽ mặt đồng hồ với các vòng tròn đồng tâm và các đánh dấu.
4.Các Hàm kimgiay, kimphut, kimgio:
Các hàm này vẽ kim giây, kim phút và kim giờ của đồng hồ, tương ứng.
4 Hàm vekim:
Hàm này liên tục cập nhật vị trí của kim giờ, kim phút và kim giây dựa trên các góc (d1, d2, d3) và vẽ chúng lại.
5 Hàm gocdau:
Hàm này tính toán các góc khởi đầu (d1, d2, d3) cho kim giờ, kim phút và kim giây dựa trên thời gian đầu vào.
6 Hàm main:
Trang 15Hàm main khởi tạo cửa sổ đồ họa, vẽ mặt đồng hồ và liên tục cập nhật vị trí kim đồng hồ.
7 Nhập dữ liệu từ Người Dùng:
Người dùng được yêu cầu nhập giờ, phút và giây.
Chương trình này sử dụng thư viện graphics.h để tạo một đồng hồ đơn giản với kim giờ, kim phút và kim giây Các kim được liên tục cập nhật dựa trên thời gian hiện tại và cửa sổ đồ họa sẽ đóng khi người dùng thoát khỏi chương trình.
Trang 164.Kết quả thực hiện đề tài
Chương trình trê cho phép chúng ta nh p s gi s phút s giây mà ậố ờ ốốmình mong mu n đ đ ng h b t đ u ch y ốể ồồ ắầạ
Trang 17Đây là sau khi chúng ta nh p d li u và cho phép đ ng h b t đ u ậữ ệồồ ắầch y ạ