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

ĐỀ TÀI: VẼ HÌNH TRÒN NỘI TIẾP HÌNH VUÔNG VÀ HÌNH TAM GIÁC NỘI TIẾP HÌNH TRÒN, TÔ MÀU, TỊNH TIẾN VÀ LÀM BIẾN DẠNG HÌNH ĐÓ

20 4,3K 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 20
Dung lượng 826,51 KB

Nội dung

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN ------BÁO CÁO BÀI TẬP LỚN MÔN ĐỒ HỌA MÁY TÍNH ĐỀ TÀI: VẼ HÌNH TRÒN NỘI TIẾP HÌNH VUÔNG VÀ HÌNH TAM GIÁC NỘ

Trang 1

BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN

- -BÁO CÁO BÀI TẬP LỚN MÔN ĐỒ HỌA MÁY TÍNH

ĐỀ TÀI: VẼ HÌNH TRÒN NỘI TIẾP HÌNH VUÔNG VÀ HÌNH TAM GIÁC NỘI TIẾP HÌNH

TRÒN, TÔ MÀU, TỊNH TIẾN VÀ LÀM BIẾN DẠNG HÌNH ĐÓ

GVHD : ThS Nguyễn Thị Cẩm Ngoan Nhóm thực hiện: NHÓM 22 Thành viên: Phạm Tiến Dũng

Phạm Văn Phong Nguyễn Ngọc Tú

Hà Nội, tháng 2 năm 2013

Trang 2

LỜI NÓI ĐẦU

Có câu rằng “một hình ảnh bằng cả nghìn lời nói ” Điều đó thật không thể phủ nhận Và rõ ràng là nếu hiển thị thông tin chỉ với các ký hiệu, chữ cái, chữ số không thôi thì không thể hấp dẫn và dễ hiểu như khi có thêm biểu diễn đồ họa Kỹ thuật đồ hoạ cũng là công cụ không thể thiếu trong các ngành khoa học kỹ thuật, giáo dục, nghệ thuật, giải trí, quảng cáo (để diễn đạt máy móc thiết bị, kiến trúc, cấu trúc cơ thể, thông tin thiên văn địa lý, hình ảnh minh hoạ ) Chính vì vậy, đồ họa là một vấn đề được quan tâm trong ngành công nghệ thông tin

Cùng với sự phát triển của tin học, kỹ thuật đồ họa trên máy vi tính, ngày càng trở nên tinh xảo Giao diện các phần mềm ngày nay trở nên thân thiện, đẹp mắt nhờ các thể hiện đồ họa Sự hổ trợ của tin học cho các ngành khác trở nên đắc lực hơn nhờ khả năng đồ họa vi tính Và thế giới thực thì được biểu diễn một cách sinh động, linh hoạt, đầy màu sắc bằng không gian ba chiều

Trong thành công của kỹ thuật đồ họa ngày nay không thể không nói đến sự phát triển vượt bậc của tốc độ phần cứng lẫn hệ điều hành Nhưng bản thân kỹ thuật đồ họa thì có bước tiến nhảy vọt từ những phép tính toán học phức tạp đến những thư viện đồ họa được tạo sẳn Các thư viện này cho phép giảm nhẹ thời gian

và công sức của người lập trình

Mục tiêu của bài tập lớn này là tìm hiểu các thuật toán,cách vẽ vẽ Hypebol bằng ngôn ngữ C++

Tuy nhiên, đề tài không thể không tránh khỏi những hạn chế và thiếu sót, nên rất mong được sự chỉ bảo, góp ý của Cô và các bạn

Nhóm em xin chân thành cảm ơn

Trang 3

1 GIỚI THIỆU NỘI DUNG, YÊU CẦU CỦA ĐỀ TÀI

NỘI DUNG

Viết chương trình vẽ hình tròn nội tiếp hình vuông, hình tam giác nội tiếp hình tròn

- Tô màu với mỗi hình một màu sắc

- Tịnh tiến hình đó đến vị trí khác

- Phóng to thu nhỏ hình đó

- Biến dạng hình đó

YÊU CẦU

 Mỗi thành viên phải hiểu và làm chủ được toàn bộ đề tài của nhóm mình

 Ngôn ngữ lập trình: C++ (Sử dụng trình biên dịch Dev C 4.9.9.2)

2 THUẬT TOÁN SỬ DỤNG

CÔNG THỨC CHUYỂN ĐỔI QUAN SÁT

Void cuaso(float x1,float y1,float x2,float y2

{

xw1=x1;yw1= y1; xw2= x2,yw2= y2;

Trang 4

}

Void khungnhin(float x1,float y1,float x2,float y2)

{

xv1= x1; yv1=y1; xv2= x2; yv2=y2;

tlx=(xv2-xv1)/(xw2-xw1);tly=(yv2-yv1)/(yw2-yw1);

}

BỘ CÔNG CỤ 2D

* void chuyenden(float x, float y):

Con trỏ chuyển tương ứng đến điểm (xm, ym) trên màn hình

* void veden(float x, float y):

Vẽ đến điểm (xm, ym) tương ứng trên màn hình

*Cài Đặt:

Trang 5

void chuyenDen(float x, float y){

int xm = (int) (tlx*(x - xw1)+xv1); int ym = (int) (tly*(yw2 - y)+yv1); moveto(xm,ym);

}

void veDen(float x, float y){

int xm = (int) (tlx*(x - xw1)+xv1); int ym = (int) (tly*(yw2 - y)+yv1); lineto(xm,ym);

}

3 CODE CHƯƠNG TRÌNH

#include "graphics.h"

Trang 6

#include "stdio.h"

#include "conio.h"

#include "iostream"

#include "math.h"

#define W WHITE

using namespace std;

//Khai bao mot so bien toan cuc

float xw1,yw1,xw2,yw2;

int xv1,yv1,xv2,yv2;

float tlx,tly;

float x_1, y_1, bankinh;

//Tao cua so

void cuaso(float x1, float y1, float x2, float y2) {

xw1=x1;

yw1=y1;

xw2=x2;

yw2=y2;

Trang 7

//Tao khung nhin

void khungnhin(int x1, int y1, int x2, int y2) {

xv1=x1;

yv1=y1;

xv2=x2;

yv2=y2;

tlx=(xv2-xv1)/(xw2-xw1);

tly=(yv2-yv1)/(yw2-yw1);

}

//Chuyen den toa do trong khung nhin

void chuyenden(float x, float y)

{

int xm=(int)(tlx*(x-xw1)+xv1);

int ym=(int)(tly*(yw2-y)+yv1);

moveto(xm,ym);

Trang 8

//Ve duong thang trong khung nhin

void veden(float x, float y)

{

int xm=(int)(tlx*(x-xw1)+xv1);

int ym=(int)(tly*(yw2-y)+yv1);

lineto(xm,ym);

}

//Ve putpixel trong khung nhin

void vetam(float x, float y)

{

int xm=(int)(tlx*(x-xw1)+xv1);

int ym=(int)(tly*(yw2-y)+yv1);

putpixel(xm,ym,W);

}

Trang 9

//Ve truc toa do

void tructoado()

{

setcolor(5);

outtextxy(315,310,"O");

outtextxy(600,310,"x");

outtextxy(315,40,"y");

setcolor(2);

// Ve truc Ox tai khung nhin

float xt = xw1, yt = 0;

chuyenden(xt, yt);

xt = xw2; yt = 0;

veden(xt, yt);

// Ve truc Oy tai khung nhin

xt = 0; yt = yw1;

chuyenden(xt, yt);

xt = 0; yt = yw2;

veden(xt, yt);

float y = yw1 + 1;

Trang 10

while (y < yw2)

{

chuyenden(-0.1,y);

veden(0.1,y);

y++;

}

float x = xw1 + 1;

while (x < xw2)

{

chuyenden(x,-0.1);

veden(x,0.1);

x++;

}

}

//Ham to mau theo thuat toan Vet dau loang void Loang(int tx,int ty,int mb,int mt)

{

if(getpixel(tx,ty)!=mb&&getpixel(tx,ty)!=mt) {

Trang 11

putpixel(tx,ty,mt);

Loang(tx+1,ty,mb,mt);

Loang(tx-1,ty,mb,mt);

Loang(tx,ty+1,mb,mt);

Loang(tx,ty-1,mb,mt);

}

}

//Thuat toan ve 8 diem doi xung

void put8pixel(int xc, int yc, int xb, int yb) {

putpixel(xc+xb,yc+yb,W);

putpixel(yc+xb,xc+yb,W);

putpixel(yc+xb,-xc+yb,W);

putpixel(xc+xb,-yc+yb,W);

putpixel(-xc+xb,-yc+yb,W);

putpixel(-yc+xb,-xc+yb,W);

putpixel(-yc+xb,xc+yb,W);

putpixel(-xc+xb,yc+yb,W);

}

Trang 12

//Ve hinh

void vehinh(float xa,float ya, float r, int m1, int m2, int m3) {

//Ve hinh vuong

vetam(xa,ya);

chuyenden(xa-r,ya-r);

veden(xa+r,ya-r);

veden(xa+r,ya+r);

veden(xa-r,ya+r);

veden(xa-r,ya-r);

//To mau hinh vuong

int xk=(int)(tlx*(xa-xw1)+xv1);

int yk=(int)(tly*(yw2-ya)+yv1);

Loang(xk-1,yk-1,W,m1);

//Ve hinh tron theo thuat toan midpoint

int xb=(int)(tlx*(xa-xw1)+xv1);

int yb=(int)(tly*(yw2-ya)+yv1);

int R= (int)(((xv2-xv1)/(xw2-xw1))*r);

int xc=0, yc=R;

Trang 13

put8pixel(xc,yc,xb,yb);

float p=5/4-R;

while (xc < R/sqrt(2))

{

if (p<0)

p+=2*xc+3;

else

{

p+=2*(xc-yc)+5;

yc ;

}

xc++;

put8pixel(xc,yc,xb,yb);

}

//To mau hinh tron

Loang(xk-1,yk-1,W,m2);

//Ve tam giac can

float y_t=ya-r/2;

float x_t1=(2*xa-r*sqrt(3))/2;

Trang 14

float x_t2=(2*xa+r*sqrt(3))/2;

chuyenden(xa,ya+r);

veden(x_t1,y_t);

veden(x_t2,y_t);

veden(xa,ya+r);

//To mau tam giac can

Loang(xk-1,yk-1,W,m3);

}

//Tinh Tien

void TinhTien(float x1, float y1)

{

x_1 = x_1 + x1;

y_1 = y_1 + y1;

}

//Bien Doi Ti Le

void TiLe (float tile)

{

bankinh = bankinh*tile;

}

Trang 15

//Ham Main

main()

{

//Nhap vao mot so bien

cout<<"\nKich thuoc cua so do hoa la: 650x650"; int mau1, mau2, mau3, socannhap;

float tt1, tt2, tl;

cout<<" -";

cout<<"\nNhap vao toa do x: ";

cin>>x_1;

cout<<"Nhap vao toa do y: ";

cin>>y_1;

cout<<"Nhap vao nua do rong hinh vuong: "; cin>>bankinh;

cout<<"Nhap vao mau hinh vuong: ";

cin>>mau1;

cout<<"Nhap vao mau hinh tron: ";

cin>>mau2;

cout<<"Nhap vao mau hinh tam giac: ";

Trang 16

cin>>mau3;

cout<<"Chon 1 de tinh tien va 2 de bien doi ty le: "; cin >> socannhap;

cout << "Nhap hoanh do tinh tien: "; cin >> tt1; cout << "Nhap tung do tinh tien: "; cin >> tt2; cout << "Nhap he so bien doi: "; cin >> tl;

//Khai bao moi goi cua so

initwindow(650,650);

//Ve cua so va khung nhin

cuaso(-10,-10,10,10);

khungnhin(50,50,600,600);

//Ve truc toa do

tructoado();

//Ve hinh:

setcolor(W);

//vehinh(2,3,5,1,2,3);

switch (socannhap)

{

case 1 :

Trang 17

for (int i = 0; i < 2; i++)

{

vehinh(x_1,y_1,bankinh,mau1,mau2,mau3); TinhTien(tt1, tt2);

};

break;

case 2 :

for (int i = 0; i < 2; i++)

{

vehinh(x_1,y_1,bankinh,mau1,mau2,mau3); TiLe(tl);

};

}

getch();

closegraph();

}

Trang 18

4 Hình vẽ minh họa

- Vẽ hình tròn nội tiếp hình vuông, hình tam giác nội tiếp hình tròn và tô màu cho từng hình:

Trang 19

- Tịnh tiến nó đến vị trí khác:

Trang 20

- Phóng to thu nhỏ hình đó:

Ngày đăng: 21/11/2014, 00:37

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w