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

Xây dựng chương trình hỗ trợ giảng dạy môn Đồ Họa Máy Tính minh hoạ các phép biến đổi Affine trong không gian 2D

35 936 3

Đ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 35
Dung lượng 627 KB

Nội dung

Nghiên cứu các phép biến đổi hình học trong không gian thực hai chiều là một trong những nội dung quan trọng. Qua thời gian tìm hiểu nhóm quyết định trọn đề tài Xây dựng phần mềm hỗ trợ học sinh cấp hai học về các phép biến đổi hình học nhằm giúp các em có thể hiểu rõ hơn về các phép biến đổi hình học trong không gian thực hai chiều.

Trang 1

Đồ họa máy tính Đại học Công Nghiệp Hà Nội

Trường Đại Học Công Nghiệp Hà Nội Khoa Công Nghệ Thông Tin

BÀI TẬP LỚN

Môn: Đồ họa máy tính

Đề tài: Xây dựng chương trình hỗ trợ giảng dạy môn Đồ Họa

Máy Tính minh hoạ các phép biến đổi Affine trong không gian 2D

Giáo viên hướng dẫn: ThS.Nguyễn Thị Cẩm Ngoan

Sinh viên thực hiện (Nhóm 12):

1 Bùi Đức Tuân

2 Nguyễn Văn Duy

3 Ngô Minh Đức

Trang 2

Lời nói đầu

Đồ 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ề cơ sở toán học, các thuật toán cũng như các kĩ thuật cho phép tạo, hiểnthị và điều khiển hình ảnh trên màn hình máy tính Đồ họa máy tính liênquan ít nhiều đến một số lĩnh vực như đại số, hình học giải tích và hình họchọa hình, quang học…… và kĩ thuật máy tính và đặc biệt là chế tạo phầncứng ( các loại màn hình, các thiết bị nhập xuất, các vi mạch đồ họa)

Nghiên cứu các phép biến đổi hình học trong không gian thực haichiều là một trong những nội dung quan trọng

Qua thời gian tìm hiểu nhóm quyết định trọn đề tài Xây dựng phầnmềm hỗ trợ học sinh cấp hai học về các phép biến đổi hình học nhằm giúpcác em có thể hiểu rõ hơn về các phép biến đổi hình học trong không gianthực hai chiều

Do quá trình tìm hiểu còn nhiều thiếu sót nên chương trình còn nhiềuhạn chế, nhóm thực hiện rất mong nhận được ý kiến đóng góp từ phía côgiáo và các bạn để phần mềm được hoàn thiện hơn

Hà Nội, ngày 5 tháng 8 năm 2013

Trang 3

Đồ họa máy tính Đại học Công Nghiệp Hà Nội

MỤC LỤC

CHƯƠNG I: KHẢO SÁT 4

I Mục đích nghiên cứu 4

II Đối tượng nghiên cứu 4

III Khảo sát 4

IV Hướng giải quyết 5

CHƯƠNG II: PHÂN TÍCH 6

I Các phép biến hình cơ bản 6

1.1 Phép tịnh tiến 6

1.2 Phép biến đổi tỉ lệ 7

1.3 Phép đối xứng 9

1.4 Phép quay 12

II Các phép biến hình kết hợp 13

2.1 Kết hợp các phép tịnh tiến 13

2.2 Kết hợp các phép biến đổi tỉ lệ 15

2.3 Phép quay với tâm bất kỳ 16

2.4 Kết hợp phép quay và phép biến đổi tỉ lệ 18

2.5 Kết hợp phép tịnh tiến và phép biến đổi tỉ lệ 19

CHƯƠNG III: CÀI ĐẶT CHƯƠNG TRÌNH 20

III Triển khai ứng dụng 20

3.1 Giao diện chương trình 20

3.2 Cài đặt chương trình 21

Trang 4

CHƯƠNG I: KHẢO SÁT

I Mục đích nghiên cứu

Tìm ra phương pháp dạy phù hợp giúp học sinh nắm bắt và hiểu

rõ các phép biến hình và ứng dụng của nó trong việc giải toán Từ đó nâng cao chất lượng của học sinh trong từng tiết học

II Đối tượng nghiên cứu

Các phép biến hình và ứng dụng của nó trong giảng dạy

III Khảo sát

Qua cuốn sách Toán học của tất cả các lớp thuộc khối Trung học

cơ sở từ lớp 6 đến lớp 9 Chúng tôi tìm hiểu các phép biến hình cơ bản gồmcó: phép tịnh tiến, phép biến đổi tỉ lệ, phép đối xứng tâm và phép quay…

Vì điều kiện cơ sở vật chất trong các trường học cũng như thời gian dạy trên lớp còn hạn chế chính vì vậy việc nhận thức kiến thức của các em thể hiện rõ

 Các em còn lúng túng trong việc tìm ảnh của một phép biến hình

 Kiến thức cơ bản nắm chưa chắc

 Khả năng tưởng tượng, tư duy hàm, tư duy lôgic còn hạn chế

 Ý thức học tập của học sinh chưa thực sự tốt

 Nhiều học sinh có tâm lý sợ môn hình học

Đây là môn học yêu cầu sự tư duy, phân tích của các em Thực sự là

Trang 5

Đồ họa máy tính Đại học Công Nghiệp Hà Nội

IV Hướng giải quyết

Trong giờ học về các phép biến hình và ứng dụng của nó học sinhnắm chưa chắc, chưa hiểu bản chất Óc tư duy hàm, tư duy logic khả năngkhái quát phân tích còn hạn chế, đặc biệt là phần ứng dụng các phép biếnhình Vì vậy học sinh còn lúng túng và xa lạ, khó hiểu vì vậy phần mềmgiúp các em hiểu rõ hơn về các phép biến hình về hình ảnh cũng như thuậttoán và các ứng dụng của nó

Trang 6

CHƯƠNG II: PHÂN TÍCH

I Các phép biến hình cơ bản

Bản chất của các phép biến đổi hình học là sự thay đổi các mô tả vềtọa độ của đối tượng từ đó làm đối tượng thay đổi về hướng, kích thướccũng như hình dạng

a x x

*

*

Vector tịnh tiến (a,b) còn gọi là “vector độ dời” Chúng ta có thể ápdụng quy tắc trên cho mọi điểm của đối tượng để dịch chuyển nó Đơn giảnhơn, để tịnh tiến một đa giác chỉ cần tịnh tiến các đỉnh của nó rồi vẽ lại đagiác mới Tương tự, đối với đường tròn, ellip ta tịnh tiến tâm của chúng tới

vị trí mới rồi vẽ lại

Nếu gọi ttx và tty lần lượt là độ dời theo trục hoành và trục tung thìtọa độ của điểm mới Q(x’,y’) sau khi tịnh tiến điểm P(x,y) sẽ

Trang 7

Đồ họa máy tính Đại học Công Nghiệp Hà Nội

void TinhTien(float &x,float &y,float ttx,float tty)

Ma trận biến đổi

x’=x*tlx;

y’=y*tly;

Trang 8

 Khi các giá trị tlx và tly nhỏ hơn 1 thì phép biến đổi tỉ lệ thu nhỏđối tượng và ngược lại khi các phép biến đổi lớn hơn 1 phép biến đổiphóng to đối tượng

 Khi tỉ lệ tlx=tly ta gọi đó là phép đồng dạng Phép đồng dạng làphép biến đổi bảo toàn tính cân xứng của đối tượng

 Tâm tỉ lệ là điểm không bị thay đổi qua các phép biến đổi tỉ lệ

 Nhận xét : Khi phép biến đổi tỉ lệ thu nhỏ đối tượng, đối tượng sẽđược dời về gần gốc tọa độ hơn, tương tự khi phóng lớn đối tượng , đốitượng sẽ được dịch chuyển xa gốc tọa độ hơn

Thuật toán cài đặt

void BienDoiTiLe(float &x,float &y,float tlx,float tly)

{

x=x*tlx; y=y*tly;

}

Trang 9

Đồ họa máy tính Đại học Công Nghiệp Hà Nội

0 1 0

0 0 1 ,

1 0 0

0 1 0

0 0 1

Oy

M

Thuật toán cài đặt

void DoiXung(float &x,float &y,float xtam,float ytam){

x=2*xtam-x;

y=2*ytam-y;

}

Trang 10

Hình 1.3.1 Phép đối xứng với tâm bất kì

Trang 11

Đồ họa máy tính Đại học Công Nghiệp Hà Nội

Hình 1.3.2 Phép đối xứng đường

Trang 12

Phép quay

Phép quay làm thay đổi hướng của đối tượng Để xác định phép quay, ta cần biết tâm quay và góc quay Phép quay điểm P(x,y) quanh gốc tọa độ một góc  tạo thành điểm ảnh Q(x*,y*) có công thức như sau:

.

*

sin cos

.

*

y x

y

y x

x

Thuật toán cài đặt

void Quay(float &x,float &y,float goc)

Trang 13

Đồ họa máy tính Đại học Công Nghiệp Hà Nội

Trang 14

Vậy kết hợp hai phép tịnh tiến là một phép tịnh tiến Từ đó ta có thể kết hợp của nhiều phép tịnh tiến cũng là một phép tịnh tiến.

Thuật toán cài đặt

Void TinhTien2LanDaGiac(int n,float ttx1,float tty1,float ttx2,float tty2)

Trang 15

Đồ họa máy tính Đại học Công Nghiệp Hà Nội

Thuật toán cài đặt

void TiLeDaGiac2Lan(int n,float tlx1,float tly1,float tlx2, float tly2){

Trang 16

Hình 2.2: Phép biến đổi tỉ lệ 2 lần

2.3 Phép quay với tâm bất kỳ

Phép quay quanh tâm quay A(x,y) góc quay  có thể phân tích thànhcác phép biến hình cơ sở sau:

- Tịnh tiến theo vector (-x,-y) để đưa tâm quay về gốc tọa độ

- Quay quanh gốc tọa độ một góc 

- Tịnh tiến theo vector (x,y) để đưa đối tượng về chỗ cũ

 Ma trận biến đổi

Trang 17

Đồ họa máy tính Đại học Công Nghiệp Hà Nội

Hình 2.3 : Phép quay với tâm bất kì

2.4 Kết hợp phép quay và phép biến đổi tỉ lệ

Trang 18

Ta có điểm M biến đổi thành M1 qua phép biến đổi tỉ lệ T1 rồi từ M1

biến đổi thành M2 qua phép quay T2 Như vậy biến đổi điểm M thành M2

kết hợp của 2 phép biến đổi

M T1 M1 T2- M2

Thuật toán cài đặt

void QuayTiLe(int n,float tlx,float tly, float goc)

Trang 19

Đồ họa máy tính Đại học Công Nghiệp Hà Nội

Ta có điểm M biến đổi thành M1 qua phép tịnh tiến T1 rồi từ M1 biến đổi thành M2 qua phép biến đổi tỉ lệ T2 Như vậy biến đổi điểm M thành M2

kết hợp của 2 phép biến đổi

M T1 M1 T2- M2

Thuật toán cài đặt

void TinhTien_BienDoiTiLe(int n, float ttx,float tty,float tlx,float tly){

Trang 20

CHƯƠNG III: CÀI ĐẶT CHƯƠNG TRÌNH

III Triển khai ứng dụng

3.1 Giao diện chương trình

Các thuật toán các phép biến hình được Demo thành chương trình bằng ngôn ngữ C++ Đầu tiên giao diện chương trình sẽ xuất hiện

Thông qua menu chương trình chính để ta lựa chọn các thuật toán như các phép biến hình cơ bản và các phép biến hình kết hợp…bằng cách nhấn các số từ 1→4 để lựa chọn Minh họa màn hình giao diện xuất hiện như sau:

Đây là giao diện để vẽ một đa giác n đỉnh

Trang 21

Đồ họa máy tính Đại học Công Nghiệp Hà Nội

Sau đó người dùng quay lại menu chính bằng cách nhấn phím số 1 hoặc số

Trang 22

//Danh sách các biên

int xv1, yv1, xv2, yv2;

float x,y,xw1, yw1, xw2, yw2, tlx, tly,a,b,c;

float X[100],Y[100],goc;float r,xtam,ytam;

//Ham chuyen den

void ChuyenDen(float x, float y)

Trang 23

Đồ họa máy tính Đại học Công Nghiệp Hà Nội

//Tinh tien 1 diem

void TinhTien(float &x,float &y,float ttx,float tty)

//Bien doi ti le 1 diem

void BienDoiTiLe(float &x,float &y,float tlx,float tly)

{

x=tlx*x;

y=tly*y;

}

//Quay 1 diem quanh tam O

void Quay(float &x,float &y,float goc)

Trang 24

//Quay 1 diem quanh tam bat ky

void QuayTambatKy(float &x,float &y,float xtam,float ytam,float goc){

//Doi xung tam O 1 diem

void DoiXungTamO(float &x,float &y)

{

x=-x;

y=-y;

}

//Doi xung tam bat ky

void DoiXung(float &x,float &y,float xtam,float ytam)

{

x=2*xtam-x;

y=2*ytam-y;

}

//Doi xung 1 diem qua Ox

void DoiXungOX(float x,float &y)

{

y=-y;

}

//Doi xung 1 diem qua Oy

void DoiXungOy(float &x,float y)

{

x=-x;

}

//Doi xung qua duong thang ax+by+c=0 bo

void DXDuong(float &x,float &y,float a,float b,float c)

{

float t=(a*x+b*y+c)/(a*a+b*b);

x=x-2*t*a;

y=y-2*t*b;

Trang 25

Đồ họa máy tính Đại học Công Nghiệp Hà Nội

Trang 26

}

}

//Tinh tien n giac

void TinhTienDaGiac(int n,float ttx,float tty)

// ham tinh tien da giac 2 lan

void TinhTien2LanDaGiac(int n,float ttx1,float tty1,float ttx2,float tty2){

//Quay da giac quanh tam O

void QuayDaGiac(int n,float goc)

{

for(int i=1;i<=n;i++)

Quay(X[i],Y[i],goc);

}

//Quay da giac quanh 1 tam bat ky

void QuayTamBatKy(int n,float a,float b,float goc)

Trang 27

Đồ họa máy tính Đại học Công Nghiệp Hà Nội

ChuyenDen(X[n],Y[n]);

for(int i=1;i<=n;i++)

VeDen(X[i],Y[i]);

}

//Ham bien doi ti le da giac 2 lan

void TiLeDaGiac2Lan(int n,float tlx1,float tly1,float tlx2, float tly2)

//Doi xung tam bat ky trong da giac

void DoiXungTamBatKy(int n,float xtam,float ytam)

Trang 28

//Doi xung da giac qua duong thang ax+by+c=0

void DoiXungDuong(int n,float a,float b,float c)

//ket hop phep quay va bien doi ti le

void QuayTiLe(int n,float tlx,float tly, float goc)

//ket hop ham tinh tien va bien doi ti le

void TinhTien_BienDoiTiLe(int n, float ttx,float tty,float tlx,float tly){

Trang 29

Đồ họa máy tính Đại học Công Nghiệp Hà Nội

cout<<" Giao Vien Huong Dan: ThS.NGUYEN THI CAM NGOAN"<<endl<<endl;

cout<<" SV Thuc Hien: Nhom 12 Lop KTPM1 –

K6"<<endl;

cout<<"

-"<<endl<<endl<<endl; Mylabel1:;

system("color 4f");

cout<<"Xin moi nhap lua chon: "<<endl<<endl;

cout<<" 1.Cac phep bien hinh co ban "<<endl;

cout<<" 2.Cac phep bien hinh ket hop "<<endl;

cout<<" 3.Danh Sach Nhom "<<endl;

Trang 30

cout<<"toa do tamx: =";cin>>xtam;

cout<<"toa do tamy: =";cin>>ytam;

Trang 31

Đồ họa máy tính Đại học Công Nghiệp Hà Nội

}

else {

cout<<"Nhap sai phep bien hinh \n"; cout<<"Moi ban nhap l trong cac phep bien hinh: "<<endl; goto MylabelDT1; }

if((i=1)||(i=2)||(i=3)||(i=4)||(i=5)) {

cout<<endl; cout<<"Ban co muon tiep tuc khong?: \n"<<endl; MylabelDT2:; int t; cout<<"1.Quay lai tu dau 2 Tiep tuc 3.Thoat \n"; cin>>t; if(t==1) {

system("cls");

cleardevice();

VeTruc(); goto Mylabel1; }

if(t==2) {

system("cls"); VeTruc(); goto MylabelDT1;

}

else if(t==3) exit(0); else {

cout<<" Hay nhap lai lua chon :\n"; goto MylabelDT2; }

}

}

} if(m==2) {

float a,b,c,d;

lb5:;

cout<<"Ban hay nhap so dinh cua da giac: ";cin>>n;

VenGiac(n);

if(n<=0)

Trang 32

cout<<"1.Tinh tien 2 lan 2.Ti le 2 lan 3.Quay tam bat ki

4.Quay+ti le 5.Tinh tien+ti le"<<endl;

cin>>chon[i];setcolor(YELLOW);

if(chon[i]==1)

{

cout<<"nhap ttx1=";cin>>a;

Trang 33

Đồ họa máy tính Đại học Công Nghiệp Hà Nội

cout<<"nhap tly: ";cin>>tly;

cout<<"nhap goc: ";cin>>goc;

cout<<"Nhap sai toa do \n";

cout<<"Moi ban nhap lai toa do: "<<endl;

Trang 34

cout<<" 2: Nguyen Van Duy "<<endl;

cout<<" 3: Ngo Minh Duc"<<endl;

cout<<"Ban co muon tiep tuc khong?: \n";

Trang 35

Đồ họa máy tính Đại học Công Nghiệp Hà Nội

cout<<"Ban da nhap sai: \n";

cout<<"Ban co muon tiep tuc khong?: \n";

Ngày đăng: 28/06/2014, 10:11

TỪ KHÓA LIÊN QUAN

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

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w