1. Trang chủ
  2. » Luận Văn - Báo Cáo

đề tài các kỹ thuật biến đổi hình-chương trình mô phỏng

19 542 1

Đ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 19
Dung lượng 226,29 KB

Nội dung

đề tài các kỹ thuật biến đổi hình-chương trình mô phỏng

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC THÀNH ĐÔ KHOA CÔNG NGHỆ THÔNG TIN

BÀI TẬP LỚN

MÔN : Đồ Họa Máy Tính

Đề Tài: Các kỹ thuật biến đổi hình-chương trình mô phỏng

Giáo Viên Hướng Dẫn : Trần Xuân Thanh

Lớp: CĐTin-K8

Thành viên nhóm 7 : Mai Văn Long Trịnh Thị Thu Phương(NT) Khổng Thị Thảo My

Nguyễn Đắc Mạnh

Trang 2

LỜI NÓI ĐẦU

Hiện nay đồ họa máy tính là một trong những chương trình thông dụng nhất, nó đóng góp phần quan trọng là cho giao tiếp con người và máy tính trở nên thân thiện Thật vậy, giao diện kiểu văn bản đã được thay thế hoàn toàn bằng giao diện

đồ họa, cùng với công nghệ đa phương tiện đã đưa ngành Công Nghệ Thông Tin sang phiên bản mới

Cuốn tài liệu này nhóm em “ trình bày tóm tắt các kỹ thuật biến đổi hình” gồm có phép biến đổi hình 2D, phép biến đổi hình 3D, biến đổi hệ trục tọa độ, sử dụng phép biến đổi affine trong chương trình… Cuối bài nhóm em có cho chương trình

mô phỏng để mô tả các kỹ thuật biến đổi hình

Trong quá trình làm còn có nhiều thiếu sót, rất mong thầy và các bạn đóng góp chân thành cho nhóm em!

Xin chân thành cảm ơn!!

Trang 3

PHẦN I: GIỚI THIỆU VỀ ĐỒ HỌA MÁY TÍNH

Sự phát triển của khoa học, kĩ thuật, nghệ thuật, kinh doanh, và công nghệ luôn luôn phụ thuộc vào khả năng truyền đạt thôngtin của chúng ta, hoặc thông qua các bit dữ liệu lưu trữ trong microchip hoặc thông qua giao tiếp bằng tiếng nói Câu châmngôn từ xa xưa “một hình ảnh có giá trị hơn cả vạn lời” hay “trăm nghe không bằng một thấy” cho thấy ý nghĩa rất lớn củahình ảnh trong việc chuyển tải thông tin Hình ảnh bao giờ cũng được cảm nhận nhanh và dễ dàng hơn, đặc biệt là trong trườnghợp bất đồng về ngôn ngữ Do đó không có gì ngạc nhiên khi mà ngay

từ khi xuất hiện máy tính, các nhà nghiên cứu đã cốgắng sử dụng nó để phát sinh các ảnh trên màn hình Trong suốt gần 50 năm phát triển của máy tính, khả năng phát siinh hìnhảnh bằng máy tính của chúng ta đã đạt tới mức mà bây giờ hầu như tất cả các máy tính đều có khả năng đồ họa

Đồ họa máy tính là một trong những lĩnh vực lí thú nhất và phát triển nhanh nhất của tin học Ngay từ khi xuất hiện, đồhọa máy tính đã có sức lôi cuốn mãnh liệt, cuốn hút rất nhiều người ở nhiều lĩnh vực khác nhau như khoa học, nghệ thuật, kinh doanh, quản lí, Tính hấp dẫn và đa dạng của đồ họa máy tính có thể được minh họa rất trực quan thông qua việc khảo sát các ứng dụng của nó

I Một số ứng dụng của đồ họa máy tính

Ngày nay đồ họa máy tính được sử dụng trong rất nhiều lĩnh vực khác nhau công nghiệp, thương mại, quản lý,giáo dục, giải trí

I.1 Hỗ trợ thiết kế

Một trong những ứng dụng lớn nhất của đồ họa máy tính là hỗ trợ thiết kế (CAD -

- computer-aided design) Ngày nay CAD đã được sử dụng hầu hết trong việc thiết

kế các cao ốc, ô tô, máy bay, tàu thủy, tàu vũ trụ, máy tính, trang trí mẫu vải, vàrất nhiều sản phẩm khác

Sử dụng các chương trình này, đầu tiên các đối tượng được hiển thị dưới dạng các phác thảo của phần khung (wireframeoutline), mà từ đó có thể thấy được toàn bộ hình dạng và các thành phần bên trong của các đối tượng Sử dụng kĩ thuật

này,người thiết kế sẽ dễ dàng nhận thấy ngay các thay đổi của đối tượng khi tiến hành hiệu chỉnh các chi tiết hay thay đổi góc nhìn,

….Một khi đã thiết kế xong phần khung của đối tượng, các mô hình chiếusáng, tô màu và tạo bóng bề mặt sẽ được kết hợp để tạo ra kết quả cuối cùngrất gần với thế giới thực

I.2 Lĩnh vực giải trí-nghệ thuật

Trang 4

- Trong lĩnh vực nghệ thuật, các chương trình máy tính như Paint Shop

Pro,Adobe Photoshop, 3D Studio, … hỗ trợ rất đắc lực cho các họa sĩ, các nhà tạo mẫutrong việc thiết kế các hình ảnh sống động, và rất thực Với các chương trình này,người họa sĩ được máy tính tạo cho cảm giác y như đang làm việc ngoài đời thực bằngcách cung cấp các công cụ như khung vẽ, giá

vẽ, bảng pha màu, các hiệu ứng ba chiều,… làm cho họ cảm thấy rất thoải mái và tiện lợi

- Ngoài ra đồ họa máy tính còn giúp tạo ra các chương trình trò chơi, giải trí; hỗtrợ cho các kĩ xảo điện ảnh, cho các nhà làm phim Có nhiều bộ phim rất nổi tiếng nhờ vào kĩ xảo điện ảnh như : Công viên Khủng long kỉ Jura

(Jurassic Park), Titanic, Thế giới nước (Water World), …

I.3 Giáo dục và đạo tạo

- Hiện nay các chương trình mô phỏng cấu trúc của các vật thể, tiến trình của các phản ứng hóa học, hoạt động của các góitin trên mạng máy tính, … được dùng rất nhiều trong việc hỗ trợ giảng dạy

- Trong đào tạo, các ứng dụng mô phỏng được dùng để kiểm tra trình độ người lái, huấn luyện phi công, điều khiển giaothông, …

I.4 Giao tiếp giữa máy tính và người sử dụng

- Mọi ứng dụng đều phải có giao diện giao tiếp với người dùng Giao diện đồ họa thực sự

là một cuộc cách mạng mang lại sự thuận tiện và thoải mái cho người dùng ứng dụng Các ứng dụng dựa trên hệ điều hành MS Windows là một minh họa rất trực quan của giao diện đồ họa Các chức năng của các ứng dụng này được thiết kế cho người dùng làm việc thông qua các biểu tượngmô tả chức năng đó Ví dụ, chức năng lưu tập tin được hiểu thông qua biểu tượng đĩa mềm, chức năng in ấn được hiểu thông qua biểu tượng máy in, … Để chọn các chức năng, người dùng sử dụng chuột trỏ đến và nhấn vào các biểu tượng tương ứng Điểm thuận lợi chính khi dùng biểu tượng là kích thước không gian mà nó chiếm ít hơn nhiều so với dùng văn bản để mô tả cho cùng một chức năng, ngoài ra việc nắm bắt các chức năng qua các biểu tượng sẽ dễ dàng hơn rất nhiều khi người dùng gặp trở ngại về mặt ngôn ngữ

- Các ứng dụng có giao diện đồ họa còn cho phép người dùng khả năng làm việc dễ dàng với nhiều cửa sổ với nhiều dạng tài liệu khác nhau cùng một lúc

II Khái niệm về đồ họa máy tính

- Đồ họa máy tính là tất cả những gì liên quan đến việc sử dụng máy tínhđể phát sinh ra hình ảnh Các vấn đề liên quan tới công việc này bao gồm :tạo, lưu trữ, thao tác trên các mô hình (các mô tả hình học của đối tượng) vàcác ảnh

- Theo định nghĩa này thì đồ họa máy tính bao gồm việc thiết kế phầncứng như thiết bị hiển thị, các thuật toán cần thiết để phát sinh các đường trêncác thiết bị này, các phần mềm được sử dụng cho cả người lập trình hệ thốngvà

Trang 5

người lập trình ứng dụng đồ họa, và các chương trình ứng dụng tạo ảnh bằng máy tính,thiết kế, cài đặt và xây dựng, thông tin mà hình ảnh mang lại là hầu nhƣ không thể thiếu được Kĩ thuật trực quan (scientific visualization) đã trở nên là một lĩnh vực rất quan trọng từ năm 1980, khi các nhà nghiên cứu khoa học và các kĩ sư nhận ra rằng họ không thể xử lí một lượng dữ liệu khổng lồ phát sinh từ các siêu máy tính mà dữ liệu không được tóm lược và làm nổi bật các xu hướng và hiện tượng qua nhiều loại biểu diễn đồ họa khác nhau

- Đồ họa máy tính tương tác là một trong những phương tiện mang lại thêm nhiều sự thuận lợi cho người dùng trong việc phát sinh hình ảnh kể từ khi có phát minh của máy ảnh và truyền hình Với máy tính, chúng ta có thể tạo các hình ảnh khôngchỉ của các đối tượng cụ thể, thực tế, mà còn của các đối tượng trừu tượng, nhân tạo; các biểu diễn của dữ liệu mà không cótính kế thừa về mặt hình học, như là kết quả điều tra, khảo sát Hơn nữa, với đồ họa máy tính chúng ta không bị giới hạn trong các ảnh tĩnh Các ảnh động thông thường mang lại nhiều hiệu quả hơn so với ảnh tĩnh, đặc biệt là với các hiện tượng biến đổi theo thời gian, cả thực tế (như sự đổi hướng của cánh máy bay siêu âm, hay sự phát triển của khuôn mặt người từ lúc trẻ thơ tới lúc già)

và trừu tượng (như là xu hướng phát triển của việc sử dụng năng lượng, gia tăng dân số, …)

- Có nhiều cách tiếp cận trong việc học môn đồ họa, trải rộng từ việc nghiên cứu phần cứng tới việc học để sử dụng đồhọa máy tính chỉ trong một lĩnh vực chuyên biệt nào đó như là thiết kế mạch tích hợp cao (VLSI-very large scale integrated circuit) Ở đây chúng ta tiếp cận từ góc độ của người lập trình ứng dụng, đó là người sử dụng tất cả các hỗ trợ của phần cứng các công cụ phần mềm để xây dựng nên các ứng dụng

- Tuy nhiên để có thể thiết kế và cài đặt các chương trình ứng dụng đồ họa được tốt, ngoài việc tìm hiểu các khả năng củacông cụ lập trình, chúng ta cũng cần phải nắm vững các khái niệm về phần cứng; các vấn đề, các

nguyên lí liên quan đến càiđặt phần mềm, các thuật toán, các ứng dụng, …

Trang 6

PHẦN II: CÁC PHÉP BIẾN ĐỔI ĐỒ HỌA

A.Các phép biến đổi hình học hai chiều

I Các phép biến đổi Affine(Affine Transformations)

- Phép biến đổi Affine là phép biến đổi tuyến tính tọa độ điểm đặc trưng của đối tượng thành tập tương ứng các điểm mới để tạo ra các hiệu ứng cho toàn đối tượng

Ví dụ: Phép biến đổi tọa độ với chỉ 2 điểm đầu cuối của đoạn thẳng tạo thành 2 điểm mới mà khi nối chúng với nhau tạo thành đoạn thẳng mới Các điểm nằm trên đoạn thẳng sẽ có kết quả là điểm nằm trên đoạn thẳng mới cùng với cùng phép biến đổi thông qua nội suy

II Các phép biến đổi đối tượng

1 Phép biến đổi vị trí

- Giả sử ta có điểm P=[x y] trong mặt phẳng với [x y] là vecto vị trí của P,

kí hiệu là [X]

T=[a b c d]

o Gọi ma trận T là ma trận biến đổi sẽ có dạng:

y

X

o Ta có điểm P sau phép biến đổi thành P’ có giá trị [x’ y’]

o [X]*[T]=[x y] *[a b c d] = [(ax+cy)(bx+dy)]=[x’ y’]

Hay x’=ax+cy

y’=bx+dy

Xét ma trận biến đổi T:

1.1 Phép bất biến

- a=d=1 và b=c=0 và ma trận cho phép bất biến:

T=[1 00 1]

Trang 7

[X]*[T]=[x y]*[1 00 1]=[x y]=[x’ y’]

1.2 Phép biến đổi tỷ lệ(scaling)

- Nếu d=1 và b=c=0 thì ma trận biến đổi là

T=[a 00 1]

x’=ax y’=y P’ dịch chuyển theo trục x với tỷ lệ a xác định

[X]*[T]=[x y]*[a 00 1]=[(ax) y]=[x’ y’]

- Nếu b=c=0 thì ma trận biến đổi là:

T= [a 0 0 d]

[X]*[T]=[x y]*[a 0 0 d]= [ax dy]=[x’ y’]

1.3 Các biến dạng

- Khi a=d=1 thì tọa độ P’ phụ thuộc vào thay đổi b và c

o Xét c= 0

[X]*[T]=[x y]*[1 b0 1]= [x bx+y]=[x’ y’]

Có P’ không thay đổi giá trị tọa độ x, còn y’ thay đổi phụ thuộc vào cả

b và x

- Xét b=0

[X]*[T]=[x y]*[1 b c 1]= [x +cy y]=[x’ y’]

1.4 Phép quay

Trang 8

[T]=[−cosαα sαinαα cosαα sαinαα]

III Phép biến đổi tổng hợp

[X*]= [X]*[T3]=[x y]* [0 −11 0 ] = [y -x]

B TỌA ĐỘ ĐỒNG NHẤT VÀ CÁC PHÉP BIẾN ĐỔI

I Tọa độ đồng nhất

- Phép biến đổi tổng hợp:

P’’=P’*[T’]+[T’’]=(P+[T])[T’]+[T’’]

- Tọa độ đồng nhất của vector vị trí [X]=[x y 1] Khi đó mặt trận biến đổi sẽ

là 3x3:

[T]=[ a c

dx

b

d

dy

0 0

1]

P’=P.[T]=[x y 1]* [ a c

dx

b d dy

0 0

1]

x’=ax+cy+dx

y’=bx+dy+dy

[X’]=[x’ y’ 1]

Trong đó dx,dy là khoảng tịnh tiến theo trục x và y.

II Phép biến đổi với tọa độ đồng nhất

- Ma trận biến đổi đồng nhất

[T]= [a c

m

b d nα

0 0

1]

Trang 9

1 Phép tịnh tiễn

- Có a=d=1 và b=c=0

[T]= [10

m

0 1

0 0

1]

[x’ y’ 1]=[x y 1][10

m

0 1

0 0

1] =[x+m y+n 1]

2 Phép tỷ lệ

- Tương tự ma trận tỷ lệ:

[Ts]= [Sx0

0

0

Sy

0

0 0

1] [x’ y’ 1]=[x y 1][Sx0

0

0

Sy

0

0 0

1] =[x.Sx y.Sy 1]

3 Phép quay

[x’ y’ 1]=[x y 1][−cosαα sαinαα

0

sαinαα cosαα

0

0 0

1]

=[(xcos α− ysαinαα) (xsinα + ycosαα ) 1]

C CÁC PHÉP BIẾN ĐỔI HÌNH HỌC BA CHIỀU

I Phép biến đổi tỷ lệ

- Phép biến đổi tỉ lệ làm thay đổi kích thước đối tượng Để co hay giãn tọa độ của một điểm P(x,y) theo trục hoành và trục tung lần lượt là Sx và Sy (gọi là các hệ số tỉ lệ), ta nhân Sx và Sy lần lượt cho các tọa độ của P

- Khi các giá trị Sx , Sy nhỏ hơn 1, phép biển đổi sẽ thu nhỏ đối tượng

Ngược lại, khi các giá trị này lớn hơn 1, phép biến đổi sẽ phóng lớn đối tượng

Trang 10

- Khi Sx = Sy , người ta gọi đó là phép đồng dạng (uniform scaling) Đây là phép biến đổi bảo toàn tính cân xứng của đối tượng Ta gọi là phép phóng đại nếu |S|>1 và là phép thu nhỏ nếu |S|<1

- Nếu hai hệ số tỉ lệ khác nhau thì ta gọi là phép không đồng dạng Trong trường hợp hoặc Sx hoặc Sy có giá trị 1, ta gọi đó là phép căng (strain)

II Phép quay

- Phép quay làm thay đổi hướng của đối tượng Một phép quay đòi hỏi phải có tâm quay, góc quay Góc quay dương thường được qui ước là chiếu ngược chiều kim đồng hồ

1 Phép quay quanh gốc tọa độ

- Ta có công thức biến đổi của phép quay điểm P(x,y) quanh gốc tọa độ góc θ (xem hình 1):

Hay Q = P*M

với M= cosθ sinθ -sinθ cosθ

- Phép quay quanh gốc tọa độ

Trang 11

2 Phép quay quanh 1 điểm bất kỳ

- Xét điểm P(P.x,P.y) quay quanh điểm V(V.x, V.y) một góc θ đến điểm

Q(Q.x,Q.y) Ta có thể xem phép quay quanh tâm V được kết hợp từ phép các biến đổi cơ bản sau:

- Phép tịnh tiến (-V.x, -V.y) để dịch chuyển tâm quay về gốc tọa độ

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

- Phép tịnh tiến (+V.x, +V.y) để đưa tâm quay về vị trí ban đầu

Ta cần xác định tọa độ của điểm Q (xem hình 2 )

- Từ phép tịnh tiến (-V.x,-V.y) biến đổi điểm P thành P' ta được:

P' = P + V

Trang 12

- Phép quay quanh gốc tọa độ biến đổi điểm P' thành Q'

Q' = P'.M

- Phép tịnh tiến (+V.x, +V.y) biến đổi điểm Q' thành Q ta được:

Q = Q' + V

hay

Vậy Q = P.M + tr Với

III Phép đối xứng

- Phép đối xứng trục có thể xem là phép quay quanh trục đối xứng mõt góc 180°

- Phương trình ban đầu

Trang 13

- (Q.x,Q.y)= (P.x,P.y) a b c d + (trx,try)

- Trục đối xứng là trục hoành :

M= 1 0 0 1

- Ta có:

- Tương tự trục đối xứng là trục tung

- Ta có:

M= 1 0 0 1

- Phép biến dạng biến đổi làm thay đổi, méo mó hình dạng của các đối tượng

- Biến dạng theo phương trục x sẽ làm thay đổi hoành độ còn tung độ giữ nguyên

- biến đổi điểm P(P.x, P.y) thành điểm Q(Q.x, Q.y) theo phương trục x là phép biến đổi được biểu diễn bởi phương trình sau:

M= 1 0 h 1

- Biến dạng theo phương trục y sẽ làm thay đổi tung độ còn hoành độ giữ nguyên

Trang 14

M= 1 g 0 1

V Phép quay ba chiều

1 Quay quanh các trục tọa độ

- Phép quanh quanh các trục tọa độ ox, oy và oz với góc dương:

o Quay quanh trục oz

{x '=xcosαα − ysαinαα

y '

=xsαinαα + ycosαα

z '=z

o Quay quanh trục ox:

y '=ycosαα−zsαinαα

z= ysαinαα +zcosαα

o Qua quanh trục oy:

{ y '=xcosαα+zsαinαα

y '

=y

z '

=−xsαinαα +zcosαα

PHẦN III: CHƯƠNG TRÌNH MÔ PHỎNG

Bài 1:

#include <stdio.h>

#include <conio.h>

#include <graphics.h>

#include <math.h>

#define RADS 0.017453293

void Function1(){

line(10,getmaxy()/2,getmaxx()-10,getmaxy()/2);

line(getmaxx()/2,10,getmaxx()/2,getmaxy()-10);

}

void Function2(int x1, int y1, int x2, int y2,int x3, int y3){

line(getmaxx()/2+x1,getmaxy()/2-y1,getmaxx()/2+x2,getmaxy()/2-y2); line(getmaxx()/2+x2,getmaxy()/2-y2,getmaxx()/2+x3,getmaxy()/2-y3); line(getmaxx()/2+x3,getmaxy()/2-y3,getmaxx()/2+x1,getmaxy()/2-y1);

Trang 15

void Function3(int x1, int y1, int x2, int y2, int x3,int y3,int xq,int yq,int goc){

float x11,y11,x22,y22,x33,y33;

float anpha=RADS*goc;

x11=int(x1*cos(anpha)-y1*sin(anpha) + (1-

cos(anpha))*xq+sin(anpha)*yq);

y11=int(x1*sin(anpha)+y1*cos(anpha)-sin(anpha)*xq+(1-cos(anpha))*xq);

x22=int(x2*cos(anpha)-y2*sin(anpha)+(1-cos(anpha))*xq+sin(anpha)*yq);

y22=int(x2*sin(anpha)+y2*cos(anpha)-sin(anpha)*xq+(1-cos(anpha))*xq);

x33=int(x3*cos(anpha)-y3*sin(anpha)+(1-cos(anpha))*xq+sin(anpha)*yq);

y33=int(x3*sin(anpha)+y3*cos(anpha)-sin(anpha)*xq+(1-cos(anpha))*xq);

Function2(x11,y11,x22,y22,x33,y33);

}

void main(){

clrscr();

int driver=DETECT,mode;

initgraph(&driver,&mode,”F:\\TC\\BGI”);

int x1=50,y1=20,x2=50,y2=100,x3=200,y3=20;

int xq=100, yq=100;

float goc=30;

Function1();

Function2(x1,y1,x2,y2,x3,y3);

Function3(x1,y1,x2,y2,x3,y3,xq,yq,goc);

getch();

closegraph();

}

Ngày đăng: 03/11/2014, 14:10

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w