Tải bản đầy đủ (.docx) (22 trang)

BÁO CÁO ĐỒ HỌA: VẼ HYPEBOL

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 (125.45 KB, 22 trang )

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Ẽ HYPEBOL.
GVHD : ThS. Nguyễn Thị Cẩm Ngoan
Nhóm thực hiện: NHÓM 29
Thành viên: - Bùi Thiên Hùng
- Dương Văn Quý
- Phạm Văn Vinh
Hà Nội, tháng 2 năm 2013
Vẽ Hình Hypebol
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
2
Đồ họa máy tính
MỤC LỤC
3
Vẽ Hình Hypebol
1. GIỚI THIỆU NỘI DUNG, YÊU CẦU CỦA ĐỀ TÀI
1.1. NỘI DUNG
Xây dựng phần mềm vẽ Hypebol
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++ hoặc .NET (Visual C++, Visual C#).
1.2. LÝ DO CHỌN ĐỀ TÀI
Trong chương trình toán bậc phổ thông trung học, các bài tập hình học về
vẽ Hypebol gặp rất nhiều. Từ đó chúng em tiến hanh xây dựng bộ công cụ
giúp vẽ bài toán Hypebol được nhanh hơn và chính xác hơn.
Học sinh không phải lúc nào cũng gặp những hàm số đơn giản, để có thể
tính đạo hàm và và vẽ dễ dàng. Một thiết bị hỗ trợ đối với học sinh trong lãnh
vực này là rất cần thiết.
Tuy nhiên, một chiếc máy tính có thể vẽ đồ thị, hay các hình cơ bản trong
hình học thường là “hàng hiếm” trên thị trường và một món hàng xa xỉ đối
với nhiều người. Còn sử dụng Microsoft Excel thì vô cùng rắc rối do có quá

nhiều công đoạn phải làm. Vì thế chúng em chọn đề tài này để có thể giúp đỡ
các em học sinh cấp 3 dễ dàng hơn trong việc học khảo sát và vẽ đồ thị hàm
số,vẽ các hình học. Dù đã cố gắng hoàn thiện nhưng do bài không thể tránh
khỏi thiếu sót mong cô góp ý để chúng em hoàn thiện hơn.
4
Đồ họa máy tính
2. PHÂN TÍCH CHỨC NĂNG ,LÝ THUYẾT.
Giúp vẽ Hpebol cơ bản trong chương trình lớp 12:
Trường hợp 1 :
Trường hợp 2 :
Người dùng chỉ cần nhập vào hệ số tương ứng của 2 phương trình
chính tắc Hypebol, sau đó nó sẽ tự động vẽ ra các nhánh của
Hypebol và 2 đường tiệm cân.
• Định nghĩa đường Hypebol.
• Cho 2 điểm cố định F1,F2 có khoảng cách F1F2=2c (c>0).
• M (H) |MF1 – MF2| =2a (0<a<c).
• Hai điểm F1,F2 gọi là các tiêu điểm của Hypebol.
• Khoảng cách F1F2 = 2c gọi là tiêu cự của Hypebol.
• Phương trình chính tắc Hypebol
Cho hypebol (H) như định nghĩa.
Chọn hệ trục tọa độ Oxy có gốc O là trung điểm đoạn F1F2, trục Oy là trung
trực của F1F2.
Khi đó .
Ta có

….
- Hình dạng của Hypebol
• O là tâm đối xứng; Ox,Oy là 2 trục đối xứng của (H).
• Trục thực nằm trên Ox, độ dài 2a.
• Trục ảo nằm trên Oy, độ dài 2b.

• 2 đỉnh (-a;0) và (a;0)
• 2 tiêu điểm .
• Tâm sai e=c/a (e>1).
• Phương trình các cạnh của hình học cơ sở .
5
Vẽ Hình Hypebol
• Phương trình 2 đường tiệm cận .
• Bk qua tiêu điểm của M thuộc (H):
3. 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;
}
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:
6
Đồ họa máy tính
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);
}
4.CODE CHƯƠNG TRÌNH
#include<graphics.h>
#include<math.h>
#include<dos.h>
#include<stdio.h>
#include<iostream>
#include<conio.h>
#include<stdlib.h>
#define pi 3.14
#include<iomanip>
7
Vẽ Hình Hypebol
using namespace std;
float xw1,yw1,xw2,yw2;
int xv1,yv1,xv2,yv2;
float tlx,tly;
void veOXY();
void cuaSo(float x1, float y1, float x2, float y2){
xw1 = x1; yw1 = y1; xw2 = x2; yw2 = y2;
}
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);
}
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);
8
Đồ họa máy tính
}
void chu(float x, float y,char *s){
int xm = (int) (tlx*(x - xw1)+xv1);
int ym = (int) (tly*(yw2 - y)+yv1);
outtextxy(xm,ym,s);
}
int ktra(char *s){
for(int i=0; i<strlen(s);i++)
if(s[i]>'9'||s[i]<'0') return 0;
return 1;
}
void veOXY(){
float x = -12, y = -0.2,dx = 0.01;
while (x < 11){
chuyenDen(x,y);
veDen(x,0.2);

x = x+1;
}
y = -12; x = -0.1;
while (y < 12){
chuyenDen(x,y);
9
Vẽ Hình Hypebol
veDen(0.1,y);
y = y+1;
}
setcolor(4);
x = -13,y = 0;
chuyenDen(x,y); x=12;
veDen(x,y);
veDen(x - 0.4,y - 0.1);
chuyenDen(x,y);
veDen(x - 0.4,y + 0.1);
chu(x +0.5,y,"x");
x = 0; y = -13;
chuyenDen(x,y);
y=12;
veDen(x,y);
veDen(x + 0.09,y - 0.4);
chuyenDen(x,y);
veDen(x -0.09,y - 0.4);
chu(x ,y + 0.5,"y");
10
Đồ họa máy tính
x = - 0.5;y = -0.5;
chu(x,y,"0");

x = 2.2;y = -0.5;
chu(x,y,"2");
x = 4;y = -0.5;
chu(x,y,"4");
x = 6;y = -0.5;
chu(x,y,"6");
x = -2.2;y = -0.5;
chu(x,y,"-2");
x = -4;y = -0.5;
chu(x,y,"-4");
x = -6;y = -0.5;
chu(x,y,"-6");
x =-0.5;y = 2;
chu(x,y,"2");
x =-0.5;y = 4;
chu(x,y,"4");
x =-0.5;y = 6;
chu(x,y,"6");
11
Vẽ Hình Hypebol
x =-1;y = -2;
chu(x,y,"-2");
x =-1;y = -4;
chu(x,y,"-4");
x =-1;y = -6;
chu(x,y,"-6");
}
/*
void hamsin()
{

float dx=0.001;
float x=xw1;
float y=sin(x);
chuyenDen(x,y);
while(x<=xw2)
{
x=x+dx;
y=sin(x);
setcolor(6);
veDen(x,y);
}
12
Đồ họa máy tính

}
*/
/****************************************************/
/* Ve nhanh thuoc truc y*/
void hypebolduongy(int a, int b)
{
float dx=0.001;
float x=xw1;
float y=sqrt((x*x*b*b)/(a*a)+(b*b));
chuyenDen(x,y);
while(x<=xw2)
{
x=x+dx;
y=sqrt((x*x*b*b)/(a*a)+(b*b));
setcolor(6);
veDen(x,y);

}

}
13
Vẽ Hình Hypebol
void hypebolamy(int a, int b)
{
float dx=0.001;
float x=xw1;
float y=-sqrt((x*x*b*b)/(a*a)+(b*b));
chuyenDen(x,y);
while(x<=xw2)
{
x=x+dx;
y=-sqrt((x*x*b*b)/(a*a)+(b*b));
setcolor(6);
veDen(x,y);
}

}
/****************************************************/
// Ve nhanh thuoc truc x
void hypebolduongx(int a, int b)
{
14
Đồ họa máy tính

float dy=0.001;
float y=yw1;
float x=sqrt((y*y*b*b)/(a*a)+(b*b));

chuyenDen(x,y);
while(y<=yw2)
{
y=y+dy;
x=sqrt((y*y*b*b)/(a*a)+(b*b));
setcolor(6);
veDen(x,y);
}

}
void hypebolamx(int a, int b)
{
float dy=0.001;
float y=yw1;
float x=-sqrt((y*y*b*b)/(a*a)+(b*b));
chuyenDen(x,y);
while(y<=yw2)
15
Vẽ Hình Hypebol
{
y=y+dy;
x=-sqrt((y*y*b*b)/(a*a)+(b*b));
setcolor(6);
veDen(x,y);
}

}
/**************************************************/
/* Ve Tiem Can */
void veduongthangx(int a,int b){

double dx = 0.01, x = xw1, y = b/a*x;
chuyenDen(x,y);
while( x <= xw2){
x = x + dx ;
y = b/a*x;
veDen(x,y);
chuyenDen(x,y);
}
setcolor(4);
veOXY();
}
16
Đồ họa máy tính
void veduongthangy(int a,int b){
double dx = 0.01, x = xw1, y = -b/a*x;
chuyenDen(x,y);
while( x <= xw2){
x = x + dx ;
y = -b/a*x;
veDen(x,y);
chuyenDen(x,y);
}
setcolor(4);
veOXY();
}
void veAnhParabol()
{
float goc=pi/2;
float dx=0.01;
float x1=xw1;

float y1=x1*x1;
float x,y;
x=x1*cos(goc)-y1*sin(goc);
17
Vẽ Hình Hypebol
y=x1*sin(goc)+y1*cos(goc);
while(x<xw1)
{
x1=x1+dx;
y1=x1*x1;
x=x1*cos(goc)-y1*sin(goc);
y=x1*sin(goc)+y1*cos(goc);
}
chuyenDen(x,y);
while(x1<=xw2 && x>=xw1)
{
x1=x1+dx;
y1=x1*x1;
x=x1*cos(goc)-y1*sin(goc);
y=x1*sin(goc)+y1*cos(goc);
// setcolor(4);
veDen(x,y);
}
}
void nhap(){
int n;
cout<<"Moi Ban Chon 1 Trong 2 TH Duoi :";
18
Đồ họa máy tính
cout<<"\n\t1. Nhanh Thuoc Truc y ";

cout<<"\n\t2. Nhanh Thuoc Truc x ";
cout<<"\n Moi Ban Chon :";cin>>n;
switch(n)
{
case 1:
veOXY();
hypebolduongy(2,2);
hypebolamy(2,2);
delay(10);
break;
case 2:
veOXY();
hypebolduongx(2,2);
hypebolamx(2,2);
delay(10);
break;
default:
cout<<"Ban Chon Sai";
}
}
main()
19
Vẽ Hình Hypebol
{
int md=0, dr=0;
initgraph(&md,&dr,"C:\\Dev-Cpp");
cuaSo(-10,-10,10,10);
khungNhin(100,100,500,400);
// setcolor(3);
nhap();

veduongthangx(2,2);
veduongthangy(2,2);
getch();
}
5.HÌNH ẢNH
20
Đồ họa máy tính
LỜI KẾT
Vận dụng kiến thức cơ sở về đồ họa 2 chiều đã được học ở trường, kết
hợp với những tài liệu tham khảo trên mạng , sách báo, và đặc biệt là sự
hướng dẫn của cô nhóm thực hiện chúng em đã hoàn thành bài tập lớn. Qua
bài báo chúng em muốn gửi lời cảm ơn cô giáo hướng dẫn, cô ”Nguyễn Thị
Cẩm Ngoan” rất cảm ơn cô đã nhiệt tình dạy bảo và hướng dẫn chúng em
hoàn thành bài tập lớn này. Trong qua trình hoàn thành bài báo cáo không
tránh khỏi thiếu sót .Vì thế , nhóm 29 chúng em rất mong nhận được chỉ
dẫn, bổ sung, sửa chữa, những đóng góp và sự cảm thông sâu sắc của thầy,
cô cũng như bạn bè để bài tập của chúng em được hoàn thiện hơn.
Nhóm em xin chân thành cảm ơn!
21
Vẽ Hình Hypebol
TÀI LIỆU THAM KHẢO
 Slide Đồ họa máy tính: ThS. Vũ Minh Yến.
 Giáo trình Kĩ thuật đồ họa.
 Sách giáo khoa lớp 12
22

×