1. Trang chủ
  2. » Công Nghệ Thông Tin

mô phỏng opengl chương 11 trình bày về giới thiệu chung về opengl, giới thiệu ngôn ngữ lập trình visual c và ứng dụng mfc,

27 682 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 27
Dung lượng 1,51 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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.. Trong kỹ thuật, việc sử dụng

Trang 1

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ởitập đoàn Silicon Graphic Library Inc Và hiện nay OpenGL là một công cụ được sử dụngrộ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

Trang 2

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ínhnă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, đagiá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 3chiề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ợ 3chiề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

Trang 3

- 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ãngMicrosoft, 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à đơngiả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ậptrì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 caocho 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úcView/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 ứngdụng đơn giản, uyển chuyển và dễ phát triển hơn Do đó MFC còn được xem là mộtkhung ứ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

Trang 4

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

Trang 5

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.

Trang 6

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.

Hình 11.5: Thiết lập 3.

Bước 4: Lựa chọn các thiết lập sau:

- Docking Toolbar: Yes –Chọn thanh công cụ có gắn vào cửa sổ.

- Initial Status Bar: Yes –Chọn thanh trạng thái có gắn vào ứng dụng.

- Printing an Printer Preview: No-Không cần in ấn.

- 3D controls: Yes-Có điều khiển nối.

- Toolbars look: Normal –Dạng thanh công cụ bình thường.

Trang 7

Hình 11.6: Thiết lập 4.

Bước 5: Chọn các thiết lập sau:

- MFC Standard: dạng chuẩn.

Hình 11.7:Thiết lập 5.

Bước 6: Hoàn tất việc thiết lập.

Hình 11.8: Hoàn thành thiết lập Project MFC.

Trang 8

Về cơ bản sau khi tạo lập xong một Project, chương trình đã tạo sẵn ra một giaodiện trước Khi nhấn chạy thử chương trình ra được như sau:

Hình 11.9:Chạy thử chương trình khi mới thiết lập xong.

Khi một ứng dụng được tạo ra nó có các lớp cơ bản sau:

Hình 11.10: Các lớp cơ bản của ứng dụng.

Chức năng cảu các lớp cơ sở của ứng dụng MFC như sau:

Trang 9

- CApp : là lớp ứng dụng (Applicatiton Class) có nhiệm vụ là khởi tạo và chạy ứng dụng.

- CDoc : là lớp tài liệu (Document Class) của ứng dụng, có nhiệm vụ nạp và duy trì 1 tài

liệu Một tài liệu có thể là bất cứ cái gì,từ một bản thảo cho đến các việc cài đặt của mộtthiết bị mạng…Tuy nhiên, mục đích sử dụng của chương trình là mô phỏng nên khôngcần quan tâm nhiều đến lớp này

- CView: là lớp hiển thị của ứng dụng (View Class),có nhiệm vụ cung cấp một hay nhiều

View (khung) cho tài liệu.Trong chương trình mô phỏng ta sẽ cần sử dụng rất nhiều tronglớp này để khởi tạo cho OpenGL và các thao tác vẽ lại trên lớp này

- CmainFrame: là lớp khung (Frame Class) của ứng dụng và có nhiệm vụ hiển thị và

truyền lệnh của người dùng

11.3.2 Khởi tạo và thiết lập các gói thư viện của OpenGL.

Để tạo ra và hiện hành một ngữ cảnh biểu diễn OpenGL có 3 bước cơ bản sau :

Bước 1 : Ta phải định dạng điểm ảnh

Bước 2 : Ta phải tạo ngữ cảnh biểu diễn

Bước 3 : Làm cho ngữ cảnh biểu diễn hiện hành.

Qua 6 bước cơ bản trên ta đã tạo ra được 1 Project MFC, để mô phỏng được các hoạt động của hệ thống thì ta phải thiết lập môi trường đồ họa

Trang 10

Hình 11.11:Thêm các thư viện sử dụng.

Để tạo được ngữ cảnh biểu diễn của OpenGL thì trước tiên ta phải include (baogồm) tất cả các tập thư viện của OpenGL vào trong Project này Từ thanh Menu chính

của chương trình Visual C++ 6.0 ta chọn Project -> Settings sau đó chọn Tab là Link , chọn category là “General” và nhập vào hộp thoại Object/library modules là :

“opengl32.lib glu32.lib” như hình vẽ trên và chọn nút OK.

Khai báo và sử dụng lớp ST_SplitterWnd: Đây là lớp dung để chia đôi khung ứng dụng khi chạy chương trình.Ta nhấn đúp vào lớp CMainFrame trong ClassView/file

MainFrm.h và phải khai báo thêm :

Trang 11

11.3.3 Tạo các hàm.

Để tạo thành một chương trình hoàn chỉnh, cần khai báo cũng như sử dụng rất nhiềubiến, hàm Vì thế trong giới hạn của kiến thức bản thân, cũng như phạm vi của đồ án, ởđây tôi chỉ xin trình bày các hàm chính trong chương trình

Khai báo biến các con trỏ để khởi tạo thiết bị và môi trường vẽ trong lớp CDoc:

// Attributes

public:

CInitOpenGL *m_pInitGLView;

CListPoint m_Orbitan;

Tiến hành thiết lập môi trường đồ họa OpenGL trong lớp Cview:

-Thiết lập điểm nhìn đối tượng:

Trang 12

-Thiết tạo hàm OnInitiaUpdate() để update các khâu khớp, cũng như các thay đổi của đối

tượng, có thể thiết lập màu nền tại đây

Trang 13

Xây dựng hàm InitModel để nhập các đối tượng 3D dạng file *.STL xuất từ các chương

trình vẽ đối tượng 3D, đồng thời quy định màu sắc cho đối tượng

void CvanDoc::InitModel()

{

//Chon vi tri ban dau cua gia do

m_thetabinh = 0; m_thetadia=0; m_thetapittong = 0;

x1 = 0; x1v = 0; x2 = 0; x3 = 0;

tam1 = tam2 = tam3 = tam4 = tam5 = 0;

//Khoi tao cac khau:

Trang 14

m_h2.setModel("Model File/h2.STL");

m_h2.setMaterial(storageMaterial[10]);

m_pittong1_1.setModel("Model File/pittong1_1.STL"); m_pittong1_1.setMaterial(storageMaterial[6]); m_pittong1_2.setModel("Model File/pittong1_2.STL"); m_pittong1_2.setMaterial(storageMaterial[16]); m_pittong2.setModel("Model File/pittong2.STL"); m_pittong2.setMaterial(storageMaterial[9]);

Trang 15

//ve khoi V glPushMatrix();

glTranslated(0, -60, 0);//de ve vi tri mat dat glTranslated(0, x1v, 0); //x1v= 60 thi o vi tri dua binh vao vi tri han, ha xuong 10mm nua khi binh quay

m_v.drawObject();//ve khoi V glPopMatrix();

//ve binh glPushMatrix();

glTranslated(0, 300, 0);

glTranslated(50, 0, 0);//50 la vi tri chon dat ban dau glTranslated(0, -60, 0); //vi tri binh khi moi dat vao glTranslated(0, x1, 0); //x1= 60 thi o vi tri han glTranslated(-x2, 0, 0);//vi tri han x2=50 glRotated(m_thetabinh, 1, 0, 0);

Trang 17

glTranslated(-105, 0, 0);

glTranslated(0, 0, 400);//400 la gia tri dat vi tri han dau glTranslated(0, 0, 100);//Trong lan 6 thi day la x5 m_m3.drawObject();//ve m3

m_m4_1.drawObject();//ve m4_1 m_m4_2.drawObject();//ve m4_2 m_m4_3.drawObject();//ve m4_3 m_m5_1.drawObject();//ve m5_1 m_m5_2.drawObject();//ve m5_2 glPopMatrix();

//ve cum thiet bi han

glPushMatrix();

glTranslated(0, -10, 0);

glTranslated(0, 0, -1000);//1000 ga tri tu chon glTranslated(-700, 0, 0);//700 ga tri tu chon m_ng1.drawObject();//ve nguon 1

m_ng2.drawObject();//ve nguon 2 m_ng3.drawObject();//ve nguon 3 glTranslated(200, 0, 0);//200 ga tri tu chon m_dk1.drawObject();//ve dieu khien 1 m_dk2.drawObject();//ve dieu khien 2 m_dk3.drawObject();//ve dieu khien 3 glTranslated(200, 0, 0);//200 ga tri tu chon m_day1.drawObject();//ve bo cap day 1 m_day2.drawObject();//ve bo cap day 2 m_day3.drawObject();//ve bo cap day 3 glTranslated(900, 0, 0);//900 ga tri tu chon m_khi1.drawObject();//ve binh khi 1

m_khi2.drawObject();//ve binh khi 2 m_khi3.drawObject();//ve binh khi 3 m_khi4.drawObject();//ve binh khi 4 m_khi5.drawObject();//ve binh khi 5 glPopMatrix();

}

Tạo bảng điều khiển trong lớp mới CmainFrame, tạo Dialog FORMVIEW và

thiết kế bảng điều khiển mong muốn

Trang 18

Hình 11.12: Thiết kế bảng điều khiển.

Tạo ra các sự kiện khi nhấn các nút trên bảng điều khiển để thực hiện các công việc yêu cầu

Trang 19

CvanDoc *pDoc = GetDocument();

pDoc->m_Orbitan.clear();//xoa duong quy dao di m_t+=10;

pDoc->x1 = m_t;

pDoc->x1v = m_t;

if (m_t>50) {

m_t=50;

} UpdateAllViews();

Trang 20

if (x==1)

{

CvanDoc *pDoc = GetDocument();

pDoc->m_Orbitan.clear();//xoa duong quy dao di m_t-=10;

pDoc->x1 = m_t;

pDoc->x1v = m_t;

if (m_t<0) {

m_t=0;

} UpdateAllViews();

CvanDoc *pDoc = GetDocument();

pDoc->m_Orbitan.clear();//xoa duong quy dao di m_t2+=5;

pDoc->x3 = m_t2;

if (m_t2>100) {

m_t2=100;

} UpdateAllViews();

Trang 21

pDoc->m_Orbitan.clear();//xoa duong quy dao di m_t2-=5;

pDoc->x3 = m_t2;

if (m_t2<0) {

m_t2=0;

} UpdateAllViews();

CvanDoc *pDoc = GetDocument();

pDoc->m_Orbitan.clear();//xoa duong quy dao di m_t3+=5;

CvanDoc *pDoc = GetDocument();

pDoc->m_Orbitan.clear();//xoa duong quy dao di m_t3-=5;

Trang 22

pDoc->tam1 += 2;

pDoc->x1 += 2;//cua binh pDoc->x1v += 2;//cua khoi V }

else

//Chuyen dong 2: pitong day binh vao dung vi tri khi han

Trang 23

//Chuyen dong 3:V dich xuong 60 mm

if ((pDoc->x2 >= 50) & (pDoc->tam3 > -60))

{

pDoc->tam3 -= 2 ; pDoc->x1v -= 2;//khoi V }

//Chuyen dong 4:Han

//Khi khoi V ha xuong khoang 10mm thi bat dau han

if ((pDoc->tam3 < -10) & (pDoc->m_thetabinh < 360)) {

//Chuyen dong 5: Nang khoi V len de do bình

//Khi binh quay khoang 330 do ti khoi V bat dau di len

if (pDoc->m_thetabinh >= 360)

pDoc->m_Orbitan.clear();//xoa duong quy dao

if ((pDoc->m_thetabinh > 355) & (pDoc->tam4 < 60)) {

pDoc->tam4 += 2;

pDoc->x1v += 2;//khoi V }

//Chuyen dong 6 :Keo pittong ra

if ((pDoc->tam4 == 60) & (pDoc->x3 >0))

{

pDoc->x3 -= 3;

pDoc->tam5 -=3;

}

//chuyen dong 7 :Ha V xuong > kết thúc một lần hàn

if ((pDoc->tam5 < 0) & (pDoc->x1 > 0))

{

pDoc->x1 -= 2;//binh pDoc->x1v -= 2;//khoi V }

UpdateAllViews();

Trang 24

default:break;

}

}

-Ngoài ra còn nhiều hàm liên quan, hỗ trợ khác nhưng không trình bày hết được tại đây

11.3.4 Thiết kế các mô hình đối tượng 3D trên SolidWorks.

Ở đây lựa chọn chương trình vẽ 3D SolidWork, sau khi đã vẽ xong các đối tượngcần thiết cho mô phỏng, sẽ tiến hành lưu chúng lại dưới dạng file *.STL Dưới đây làcách tiến hành

Giả sử minh họa vẽ bình, sau khi vẽ xong bình (không trình bày cách vẽ), ta được nhưsau:

Hình 11.13: Ví dụ mô bình 3D vẽ bằng Solidwork

- Save file dưới dạng file STL: chọn save as

- Một bảng save as hiện ra, các thông số điền và lựa chọn như sau:

File name: đặt tên file.

Trang 25

Save as type: chọn STL(*.stl) Tiếp đó nhấn Option, và hiện ra bảng Option.

Chọn các thông số như dưới đây:

Hình 11.14: Option khi save file dạng *.STL.

Output as: chọn ASCII

Một điều quan trọng là tích vào ô: “Do not translate STL output data to positive space ” để cho hệ tọa độ khi vẽ trong Solidworks và khi chuyển sang file *STL

không bị dịch chuyển

- Kết quả thu được file “binh.stl”

- Tiến hành hoàn toàn tương tự với các khâu khác của đối tượng

Dưới đây là danh sách các file STL tạo ra sau khi vẽ tất các khâu (trong thư mục Model file)

Trang 26

Hình 11.15: Các file dùng trong chương trình dưới dạng *.STL.

Trang 27

11.3.5 Chạy mô phỏng sau khi hoàn thành.

Dưới đây là một số hình ảnh khi chạy chương trình

Ngày đăng: 17/10/2014, 07:21

HÌNH ẢNH LIÊN QUAN

Hình 11.1:OpenGL logo - mô phỏng opengl chương 11 trình bày về giới thiệu chung về opengl, giới thiệu ngôn ngữ lập trình visual c và ứng dụng mfc,
Hình 11.1 OpenGL logo (Trang 1)
Hình 11.2: Bắt đầu thiết lập Project MFC. - mô phỏng opengl chương 11 trình bày về giới thiệu chung về opengl, giới thiệu ngôn ngữ lập trình visual c và ứng dụng mfc,
Hình 11.2 Bắt đầu thiết lập Project MFC (Trang 4)
Hình 11.3: Thiết lập 1 - mô phỏng opengl chương 11 trình bày về giới thiệu chung về opengl, giới thiệu ngôn ngữ lập trình visual c và ứng dụng mfc,
Hình 11.3 Thiết lập 1 (Trang 5)
Hình 11.4: Thiết lập 2. - mô phỏng opengl chương 11 trình bày về giới thiệu chung về opengl, giới thiệu ngôn ngữ lập trình visual c và ứng dụng mfc,
Hình 11.4 Thiết lập 2 (Trang 6)
Hình 11.5: Thiết lập 3. - mô phỏng opengl chương 11 trình bày về giới thiệu chung về opengl, giới thiệu ngôn ngữ lập trình visual c và ứng dụng mfc,
Hình 11.5 Thiết lập 3 (Trang 6)
Hình 11.7:Thiết lập 5. - mô phỏng opengl chương 11 trình bày về giới thiệu chung về opengl, giới thiệu ngôn ngữ lập trình visual c và ứng dụng mfc,
Hình 11.7 Thiết lập 5 (Trang 7)
Hình 11.6: Thiết lập 4. - mô phỏng opengl chương 11 trình bày về giới thiệu chung về opengl, giới thiệu ngôn ngữ lập trình visual c và ứng dụng mfc,
Hình 11.6 Thiết lập 4 (Trang 7)
Hình 11.10: Các lớp cơ bản của ứng dụng. - mô phỏng opengl chương 11 trình bày về giới thiệu chung về opengl, giới thiệu ngôn ngữ lập trình visual c và ứng dụng mfc,
Hình 11.10 Các lớp cơ bản của ứng dụng (Trang 8)
Hình 11.9:Chạy thử chương trình khi mới thiết lập xong. - mô phỏng opengl chương 11 trình bày về giới thiệu chung về opengl, giới thiệu ngôn ngữ lập trình visual c và ứng dụng mfc,
Hình 11.9 Chạy thử chương trình khi mới thiết lập xong (Trang 8)
Hình 11.11:Thêm các thư viện sử dụng. - mô phỏng opengl chương 11 trình bày về giới thiệu chung về opengl, giới thiệu ngôn ngữ lập trình visual c và ứng dụng mfc,
Hình 11.11 Thêm các thư viện sử dụng (Trang 10)
Hình 11.12: Thiết kế bảng điều khiển. - mô phỏng opengl chương 11 trình bày về giới thiệu chung về opengl, giới thiệu ngôn ngữ lập trình visual c và ứng dụng mfc,
Hình 11.12 Thiết kế bảng điều khiển (Trang 18)
Hình 11.13: Ví dụ mô bình 3D vẽ bằng Solidwork - mô phỏng opengl chương 11 trình bày về giới thiệu chung về opengl, giới thiệu ngôn ngữ lập trình visual c và ứng dụng mfc,
Hình 11.13 Ví dụ mô bình 3D vẽ bằng Solidwork (Trang 24)
Hình 11.14: Option khi save file dạng *.STL. - mô phỏng opengl chương 11 trình bày về giới thiệu chung về opengl, giới thiệu ngôn ngữ lập trình visual c và ứng dụng mfc,
Hình 11.14 Option khi save file dạng *.STL (Trang 25)
Hình 11.15: Các file dùng trong chương trình dưới dạng *.STL. - mô phỏng opengl chương 11 trình bày về giới thiệu chung về opengl, giới thiệu ngôn ngữ lập trình visual c và ứng dụng mfc,
Hình 11.15 Các file dùng trong chương trình dưới dạng *.STL (Trang 26)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w