Tải bản đầy đủ (.doc) (10 trang)

VẼ HÌNH MINH HỌA CHUYỂN ĐỘNG CHẬM DẦN ĐỀU CỦA CON LẮC LÒ XO VÀ CON LẮC ĐƠN

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 (196.55 KB, 10 trang )

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 10
VẼ HÌNH MINH HỌA CHUYỂN ĐỘNG CHẬM DẦN
ĐỀU CỦA CON LẮC LÒ XO VÀ CON LẮC ĐƠN
Thành viên trong nhóm:
1. Phạm Văm Chình. (0541060242)
2. Nguyễn Văn Luận. (0541360019)
3. Đỗ Bá Thành. (0541060042)
GV hướng dẫn: ThS. Nguyễn Thị Cẩm Ngoan.
Hà nội, tháng 02 năm 2013
1
LỜI NÓI ĐẦU
Ngày nay, công nghệ thông tin càng ngày càng phát triển mạnh mẽ và được ứng
dụng rộng rãi trong đời sống và sản xuất. Tuy nhiên, để có được như ngày nay nó đã
phải có quá trình phát triển lâu dài và gian khổ. Từ khi mới ra đời máy tính còn rất thô
kệch và vụng về cũng như các linh kiện điện tử thô sơ và nó hoạt động dựa trên các
dòng lệnh làm việc trong môi trường DOS(không có đồ họa). Để rồi khi nền công
nghiệp vật liệu phát triển với sự ra đời của vật liệu điện tử bán dẫn đã tạo ra một cuộc
cách mạng trong ngành công nghiệp sản xuất phần cứng máy tính. Khi phần cứng đã
phát triển mạnh thì sự phát triển của lĩnh vực phần mềm là điều không thể thiếu. Lĩnh
vực đồ họa máy tính ra đời cũng được ví như cuộc cách mạng trong ngành công
nghiệp sản xuất phần mềm máy tính. Máy tính ngày càng được cải thiện về tốc độ làm
việc, bộ nhớ cũng như tính thân thiện, dễ sử dụng khi có màn hình làm việc đồ họa rất
thuận tiện cho người sử dụng. Đồ họa máy tính ngày càng phát triển để có được những
chiếc máy tính như ngày nay mà đi cùng với đó là sự phổ biến của máy tính khi mỗi
người hàng ngày vẫn thường sử dụng.
Vậy qua môn học đồ họa máy tính này giúp chúng em phần nào hiểu được sự


phát triển của đồ họa máy tính cũng như sự ứng dụng thực tế rộng rãi của nó trong đời
sống hiện nay là vô cũng to lớn. Hơn nữa, chúng em còn hiểu biết thêm được các quy
tắc, nguyên tắc để xây dựng nên những hình đồ họa cơ bản, là nền tảng của các phần
mềm, chương trình đồ họa khác phát triển và có thể tự mình vẽ nên những hình đơn
giản nhất. Qua đó giúp chúng em có thể một hướng đi mới về nghề nghiệp sau này rất
có triển vọng là ngành đồ họa máy tính.
Với Bài tập lớn này, nó chỉ là một phần rất nhỏ không đáng kể so với lĩnh vực
đồ họa máy tính còn vô cùng rộng lớn, dù đã rất cố gắng để bài tâp ngày càng hoàn
thiện nhưng cũng không thể tránh khỏi sai sót. Chúng em rất mong nhận được những ý
kiến đóng góp từ quý thầy cô và các bạn.
2
MỤC LỤC
LỜI NÓI ĐẦU 2
MỤC LỤC 3
1 Khảo sát mục đích đối tượng 4
2 Phân tích các biến đổi 4
3 Cài đặt chương trình 4
3.1 Giao diện: 4
3.2 Code: 6
4 Kết luận: 10
5 Tài liệu tham khảo: 10
3
1 Khảo sát mục đích đối tượng.
Mục đích của bài toán là áp dụng các kiến thức cơ bản đã học về lĩnh vực đồ
họa máy tính để minh họa chuyển động chậm dần đều của 2 con lắc trong vật lí là con
lắc lò xo và con lắc đơn. Vậy qua tìm hiểu, phân tích ta cần vận dụng các phép biến
đổi đồ họa như phép tịnh tiến, phép quay, phép tỉ lệ, phép đỗi xứng,…
2 Phân tích các biến đổi.
- Với bài toán Con lắc đơn, con lắc dao động chậm dần đều qua vị trí cân bằng
với li độ góc giảm dần. Do đó, ta cần thực hiện phép quay biến đổi con lắc với

góc quay alpha cũng giảm dần tương ứng. Sau mỗi dao động của con lắc ta cần
thực hiện làm trễ 1 khoảng thời gian để cho phù hợp với chu kì dao động của
con lắc.
- Với bài toán Con lắc lò xo, con lắc lò xo có 2 trường hợp là con lắc lò xo nằm
ngang và con lắc lò xo thẳng đứng nhưng quá trình dao động cũng như các
phép biến đổi ta thực hiện tương tự. Đại diện với con lắc lò xo nằm ngang, con
lắc dao động với vật nặng qua lại chậm dần đều qua vị trí cân bằng với li độ
giảm dần. Do đó, ta thực hiện các phép biến đổi tịnh tiến với li độ giảm dần.
Sau mỗi dao động ta cũng thực hiện làm trễ 1 khoảng thời gian cho phù hợp với
chu ki dao động của con lắc.
3 Cài đặt chương trình.
3.1 Giao diện:
4
a.giao diện của con lắc đơn.
-màn hình nhập liệu.
5
b. giao diện của con lắc lò xo.
-màn hình nhập liệu
3.2 Code:
a. Code con lắc đơn.
/* Mo Phong Chuyen Dong Con Lac Don */
6
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define Radian 0.017453293 //1 do = 0.017453293 radian
#define PI 3.1415
#define g 10

#define BanKinh 5 //Ban kinh con lac
#define DelayTime 10
#define L 100 //Do dai con lac khi ve
int gDriver = DETECT, gMode, ErrorCode, MaxX, MaxY, *BitMap;
int x, y, x0, yo;
void KhoiTaoDoHoa()
{
int gd =0,gm;
initgraph(&gd,&gm,"\\bgi");
MaxX = getmaxx();
MaxY = getmaxy();
}
void VeConLac()
{
setcolor(YELLOW);
line(x0, yo, x, y);
setfillstyle(SOLID_FILL, GREEN);
setcolor(GREEN);
fillellipse(x, y, BanKinh, BanKinh);
}
void XoaConLac()
{
setcolor(BLACK);
line(x0, yo, x, y);
setfillstyle(SOLID_FILL, BLACK);
setcolor(BLACK);
fillellipse(x, y, BanKinh, BanKinh);
}
int main(void)
{

float l, t = 0, FI, Alpha, Alpha0, w;
/* Bat dau Khoi Tao Do Hoa */
KhoiTaoDoHoa();
/* KetThuc Khoi Tao Do Hoa */
/* Bat dau Nhap so lieu */
printf("1. Nhao vao chieu dai con lac (don vi Met): ");
scanf("%f", &l);
printf("2. Nhao vao bien do goc (don vi Do): ");
7
scanf("%f", &Alpha0);
printf("3. Nhao vao pha ban dau (Don vi Radian): ");
scanf("%f", &FI);
w = sqrt(g/l);
/* KetThuc Nhap so lieu */
/* Bat dau Ve thanh treo con lac */
x0 = ceil(MaxX / 2);
yo = ceil(MaxY / 2 - 100);
line(x0 - 10, yo, x0 + 10, yo);
/* KetThuc Ve thanh treo con lac */
/* Bat dau Mo phong chuyen dong cua con lac */
do
{
Alpha = Alpha0*sin(w*t + FI);
x = ceil(x0 + L*sin(Alpha*Radian));
y = ceil(yo + L*cos(Alpha*Radian));
VeConLac();
delay(DelayTime);
if((Alpha0<1.0f))break;
XoaConLac();
t = t + (float)DelayTime/1000;


if(Alpha0>=0.05f)Alpha0=Alpha0-0.05;

}while ((!kbhit()));
/* KetThuc Mo phong chuyen dong cua con lac*/
getch();
closegraph();
return 0;
}
b. Code con lắc lò xo.
/* Mo Phong Chuyen Dong Con Lo xo */
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define Radian 0.017453293 //1 do = 0.017453293 radian
#define PI 3.1415
#define g 10
#define BanKinh 10 //Ban kinh con lac
#define DelayTime 100
#define L 100 //Do dai con lac khi ve
int gDriver = DETECT, gMode, ErrorCode, MaxX, MaxY, *BitMap;
int x, y, x0, yo;
void KhoiTaoDoHoa()
8
{
int gd =0,gm;
initgraph(&gd,&gm,"\\bgi");
MaxX = getmaxx();

MaxY = getmaxy();
}
void veloxo(int len,int color) {
if(len<0)len =-len;
setcolor(color);
int t=50;
for (int i = 1; i<t-1; i++) {
lineto((int)((i%2*2-1)*10+MaxX/2), (int)((i+0.5)*10*len/t));
}
setfillstyle(SOLID_FILL, color);
setcolor(color);
fillellipse((int)((t%2*2-1)*10+MaxX/2+10), (int)((t+0.5)*10*len/t), BanKinh, BanKinh);
//lineto((int)(MaxX/2), len);
}
int main(void)
{
KhoiTaoDoHoa();
/* Bat dau Mo phong chuyen dong */
int lenMax=30;
int status=1;
printf("1. Nhao vao chieu dai con xo lo(20<x<40) : ");
scanf("%d", &lenMax);
int len=lenMax;
int diemdung=lenMax/2;
do
{
moveto((int)(MaxX/2),0);
//printf("%d/",len);
if(len==diemdung||len==lenMax)
{

if(len==diemdung)status=0;
else {
lenMax ;
len=lenMax;
status=1;
}
}
if(len>=diemdung){
if(status==1)len ;
else len++;
}

veloxo(len,YELLOW);
delay(DelayTime);
if((len<15))break;
9
moveto((int)(MaxX/2),0);
veloxo(len,BLACK);
}while ((!kbhit()));
/* KetThuc Mo phong chuyen dong*/
getch();
closegraph();
return 0;
}
4 Kết luận:
Qua bài tập lớn này giúp chúng em cũng cố phần nào những kiến thức đã được
học và ứng dụng chúng vào trong bài tập lớn của mình, tạo nền tảng để học tập tốt các
môn học sau. Hơn nữa, chúng em còn xây dựng được chương trình ứng dụng minh họa
cho chuyển động của con lắc lò xo và con lắc đơn trong vật lí giúp ích cho các em nhỏ
học cấp 2 và cấp 3. Đó là phần thưởng tinh thần đem lại khích lệ vô cùng lớn để chúng

em cố gắng học tập các môn học sau này.
5 Tài liệu tham khảo:
- Giáo trình Đồ họa máy tính.
- Các tài liệu tham khảo khác trên mạng internet.

10

×