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 (475.42 KB, 18 trang )
<span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">
<b>1.1.1. Thu t toán Bresenhamậ1.1.2. Thu t tốn Midpointậ1.1.3 Thu t tốn Bézierậ</b>
<b>2. Trình bày thu t toán đậược s d ngử ụ2.1. Thu t toán Bresenhamậ</b>
<b>2.2. Thu t toán Midpointậ</b>
<b>3. Ý tưởng xây d ng chựương trình</b>
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3"><b>CHƯƠNG 1: GI I THI U V Đ H A MÁY TÍNHỚỆỀ Ồ Ọ1.1.L ch s phát tri nịửể</b>
- 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.
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="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)....
<b>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ì ?ồ ọ</b>
- Đ 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) ố ố ể ị ắ ặ ộ
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="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.
<b>1.2.2. Kỹ thu t đ h a Vectorậồ ọ</b>
- 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 q ủ ọ ự ể ự ệ 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 tố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 tồ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 ậ ợ ấ ả ủ ả ố
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="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.
<b>1.2.2. Kỹ thu t đ h a Vectorậồ ọ</b>
- 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 q ủ ọ ự ể ự ệ 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 tố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.ề ể ạ
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7"><b>CHƯƠNG 2: GI I THI U Đ TÀIỚỆỀ</b>
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.ạ ể ể ế ớ ậ ố
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">Phân công công vi c c a các thành viênệ ủ
<b>Nguy n Trung DũngễNguy n Vi t DũngễệNguy n Vi t NamễếĐ Quý Longỗ</b>
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">Có nhi u thu t tố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ậ
<b>1.1.1.Thu t toán Bresenhamậ</b>
Thu t toán Bresenham là thu t tố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.ấ ị
<b>1.1.2.Thu t toán Midpointậ</b>
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.ủ ế
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10"> Ph c t p h n thu t toán Bresenhamứ ạ ơ ậ
<b>1.1.3.Thu t toán Bézierậ</b>
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ứ ạ ấ ậ
Thu t tốn Bresenham là thu t tố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 tố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 tốn Bresenham ho t đ ng nh sau:ậ ạ ộ ư
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">Thu t toán Midpoint c i thi n đ chính xác c a thu t tốn Bresenham ậ ả ệ ộ ủ ậ b ng cách s d ng m t phằ ử ụ ộ ương pháp chia đơi kho ng cách. Thu t tố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 tốn đi m ti pắ ầ ừ ử ụ ộ ứ ể ể ế theo trên đường trịn.
Cơng th c tính tố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 tốn Midpoint ho t đ ng nh sau:ậ ạ ộ ư
<small>Đâ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.</small>
<small>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ã </small>
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12"><small>plugin. 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. </small>
<b>2. Hướng d n cài đ t Code::Blocksẫặ2.1. Bước 1: T i Code::Blocksả</b>
<small></small> Truy c p đậ ường link: Nh n ấ ch n “Download the binary release”ọ <small></small> Xác minh đường d n c a trình biên d ch và trình g l iẫ ủ ị ỡ ỗ <small></small> 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 .ẳ ạ ư
<i>Cài đ t thành công Code::Blocksặ</i>
<b>3. G i ý cách vi t chợếương trình C/C++ trong Code::Blocks</b>
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:
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13"><small></small> 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.ự ầ ủ ấ
<small></small> 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.ấ ế
<small></small> 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.ở ộ ộ <small></small> Đ t o chể ạ ương trình, ch n Build trong menu Buildọ
<small></small> Đ ch y chể ạ ương trình,ch n Run trong menu Buildọ
<b>1. Khai báo Thư viện và Định nghĩa: </b>
<small>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.</small>
<b><small>#define PI 3.14159265359</small></b><small> định nghĩa hằng số PI.</small>
<b><small>2.Hàm tinhgoc:</small></b>
<small>Hàm này chuyển đổi góc từ độ sang radian.</small>
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14"><b><small>3.Hàm vekhung:</small></b>
<small>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.</small>
<b><small>4.Các Hàm kimgiay, kimphut, kimgio:</small></b>
<small>Các hàm này vẽ kim giây, kim phút và kim giờ của đồng hồ, tương ứng.</small>
<b><small>4. Hàm vekim:</small></b>
<small>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 (</small><b><small>d1</small></b><small>, </small><b><small>d2</small></b><small>, </small><b><small>d3</small></b><small>) và vẽ chúng lại.</small>
<b><small>5. Hàm gocdau:</small></b>
<small>Hàm này tính tốn các góc khởi đầu (</small><b><small>d1</small></b><small>, </small><b><small>d2</small></b><small>, </small><b><small>d3</small></b><small>) cho kim giờ, kim phút và kim giây dựa trên thời gian đầu vào.</small>
<b><small>6. Hàm main:</small></b>
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15"><small>Hàm </small><b><small>main</small></b><small> 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ồ.</small>
<b><small>7. Nhập dữ liệu từ Người Dùng:</small></b>
<small>Người dùng được yêu cầu nhập giờ, phút và giây.</small>
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 thốt khỏi chương trình.
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">4.Kết quả thực hiện đề tài
<b>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 ốể ồồ ắầạ</b>
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17"><b>Đây là sau khi chúng ta nh p d li u và cho phép đ ng h b t đ u ậữ ệồồ ắầch y ạ</b>
</div>