Chương I Tìm hiểu phần mềm Adobe Flash CS5
3. Con lắc dao đô ̣ng với hai nửa chu kì khác nhau (con lắc vướng đinh)
* Mục đích thí nghiệm: Khảo sát con lắc vướng đinh về mặt động lực học + Chuyển động của con lắc vướng đinh
+ Các lực tác dụng lên con lắc trong khi dao động * Những hạn chế khi sử dụng thí nghiệm truyền thống
+ Học sinh chỉ có thể quan sát được chuyển động của con lắc vướng đinh, nhưng rất khó để hình dung được sự thay đổi về hướng, độ lớn của các lực tác dụng, sự thay đổi của vận tốc, gia tốc trong quá trình dao động của con lắc
+ Rất khó để có thể dừng con lắc lại tại một thời điểm bất kì để khảo sát * Ưu điểm của thí nghiệm flash
+ Trực quan và dễ sử dụng đối với giáo viên và học sinh
+ Giúp học sinh có thể hình dung được một cách dễ dàng nhất về chuyển động của con lắc vướng đinh, sự thay đổi về hướng và độ lớn của các lực tác dụng lên quả nặng trong quá trình dao động của con lắc
+ Có thể tạm dừng con lắc tại một ví trí bất kì để quan sát hoặc khảo sát con lắc về mặt động lực học
+ Sau khi hồn thành, giáo viên có thể đưa thí nghiệm này đến với từng học sinh, để học sinh có thể tự làm thí nghiệm, tự học và tự thực hành, hoặc có thể bổ sung câu hỏi vào thí nghiệm để giao cho học sinh giống như một bài tập về nhà
+ File flash có thể kết hợp dễ dàng với Violet hoặc Powerpoint để tạo thành một bài giảng hồn chỉnh
Bước 1: Tạo các MovieClip và đặt tên
cho MC tương ứng (lưu ý tên của MC viết liền không cách, không dấu trong mục < Instance Name >, có thể tạo các MC trên các Layer khác nhau), tạo các thành phần cần có khác trên Stage Tạo hai MC trắng (nhấn Ctrl + F8) sau đó vào Libraly để kéo ra Stage, đặt tên trong mục < Instance Name > lần lượt là diem1 và diem2
Lưu ý: cần tạo ra 3 sợi dây có độ dài l0
< l2 < l1, 2 nút play đặt chồng lên nhau có tên là unpausebutton1 và unpausebutton2, nút pause đặt tên là pausebutton, nút stop đặt tên là nutsop, nút các thành phần của trọng lực đặt tên là nut2
Kết quả (hình 12)
Bước 2: Thực hiện viết các mã lệnh
- Tại Frame đầu tiên
t1 = 0; t2 = 0;//hai mốc thời gian ban đầu
x0 = vat._x; y0 = vat._y;//tọa độ ban đầu của quả nặng
xt = chut._x; yt = chut._y;//tọa độ ban đầu của chữ T (lực căng dây T) dodail1 = l1._height; dodail2 = l2._height; //độ dài của l1, l2
lp = trongluc._yscale;//độ dài của véc-tơ trọng lực
//ẩn các đối tượng trọng lực, lực căng T, chữ T; thành phần lực Pt, Pn; chữ Pt, Pn; đường kẻ nối giữa trọng lực và các thành phần Pt, Pn; nút các thành phần của trọng lực; các chữ α, β; phần thông tin ghi nhớ, câu hỏi, nút play thứ hai trongluc._visible = false; luct._visible = false; chut._visible = false;
lucpt._visible = false; lucpn._visible = false; chupn._visible = false; chupt._visible = false; noipt._visible = false; noipn._visible = false; nut2._visible = false; gocb._visible = false; goca._visible = false;
ghinho._visible = false; cauhoi._visible = false; unpausebutton2._visible = false; (hình 12)
g = 9,8;// gia tốc trọng trường
w1 = 30*Math.sqrt(g/dodail1);//tần số góc trước khi vướng đinh w2 = 30*Math.sqrt(g/dodail2);//tần số góc sau khi vướng đinh //khai báo đối tượng batdau()
function batdau (){ t1 = 0; t2 = 0;}//mốc thời gian ban đầu //khai báo đối tượng batdaulai ()
function batdaulai() { t1 = 0; t2 = 0;
vat._x = x0; vat._y = y0;//vật trở về vị trí ban đầu //thực hiện các đối tượng
dao_dong1(); dao_dong2 (); tamdung (); //ẩn các đối tượng sau
lucpt._visible = false; lucpn._visible = false; chupn._visible = false; chupt._visible = false; noipt._visible = false; noipn._visible = false; nut2._visible = false; gocb._visible = false; goca._visible = false; chut._x = xt; chut._y = yt;//chữ T trở về vị trí ban đầu
goca._x = x0; gocb._x = x0;}// các chữ α, β có tọa độ x = x0 // khai báo đối tượng tamdung ()
function tamdung() { timing1 = false; timing2 = false;} //hai biến timing bằng false // khai báo đối tượng chaytiep1 ()
function chaytiep1() { timing1 = true;}//biến timing1 bằng true //khai báo đối tượng chaytiep2 ()
function chaytiep2() { timing2 = true;}//biến timing2 bằng true //khai báo đối tượng dao_dong1 () bao gồm
function dao_dong1() { unpausebutton1._visible = true;//hiện nút play thứ nhất unpausebutton2._visible = false;//ẩn nút play thứ hai
l1._visible = true;//hiện sợi dây 1 (sợi dây chưa bị vướng đinh) l2._visible = false; l0._visible = false;//ẩn hai sợi dây l1, l0 i1 = Math.sin(w1*t1);//biến i1
a = 30;//biên độ góc của con lắc trước khi vướng đinh api = a*i1*Math.PI/180;//biên độ góc theo radian
//nếu i1 > 0 thì
if (i1 > 0){ //bắt đầu theo thời gian
//các đối tượng sau quay theo chiều ngược chiều kim đồng hồ l1._rotation = -a*i1; luct._rotation = -a*i1; lucpn._rotation = -a*i1; lucpt._rotation = -a*i1; noipn._rotation = -a*i1; noipt._rotation = -a*i1; //tọa độ của quả nặng theo thời gian khi con lắc chưa vướng đinh
vat._x = x0 + dodail1*Math.sin(api);
vat._y = y0 - dodail1 + dodail1*Math.cos(api);
lpn = lucpn._yscale = lp*Math.cos(api);//độ dài của thành phần lực Pn //tọa độ theo thời gian của chữ Pn
chupn._x = xvat + 1.3*lpn*Math.sin(api); chupn._y = yvat + lpn*Math.cos(api) + 30;
luct._yscale = lpn;//độ dài của lực căng dây T theo thời gian
lpt = lucpt._xscale = lp*Math.sin(api);// độ dài của thành phần lực Pt //tọa độ theo thời gian của chữ Pt, chữ T
chupt._x = xvat - 1.6*lpt*Math.cos(api); chupt._y = yvat + lpt*Math.sin(api) + 15; chut._x = xvat - 0.5*lpn*Math.sin(api); chut._y = yvat - lpn*Math.cos(api)/1.1;
noipn._xscale = lpt*1.7;//độ dài của đoạn nối trọng lực với thành phần lực Pn noipt._yscale =lpn*1.85;//độ dài của đoạn nối trọng lực với thành phần lực Pt goca._x = x0 + dodail1/6*Math.sin(api);}//tọa độ x của chữ α
//hoặc nếu i1 khơng lớn hơn 0 thì
else { l1._rotation = 0;//sợi dây l1 trở về vị trí ban đầu batdau(); //thực hiện đối tượng batdau ()
timing1=false;timing2=true;}}//biến timing1, timing2 được gán bằng false, true //khai báo đối tượng dao_dong2 () bao gồm
function dao_dong2() { unpausebutton2._visible = true;//hiện nút play thứ hai unpausebutton1._visible = false;//ẩn nút play thứ nhất
l2._visible = true; l0._visible = true;//hiển thị sợi dây l2, l0 i2 = Math.sin(w2*t2);//biến i2
b = 40;//biên độ góc của con lắc sau khi vướng đinh bpi = -b*i2*Math.PI/180;//biên độ góc theo radian //nếu i2 > 0 thì
if (i2 > 0){ //bắt đầu theo thời gian
//các đối tượng sau quay theo chiều kim đồng hồ
l2._rotation = b*i2; luct._rotation = b*i2; lucpn._rotation = b*i2; lucpt._rotation = b*i2; noipn._rotation = b*i2; noipt._rotation = b*i2; //tọa độ của quả nặng theo thời gian sau khi con lắc bị vướng đinh vat._x = x0 + dodail2*Math.sin(bpi);
vat._y = y0 - dodail2 + dodail2*Math.cos(bpi);
lpn = lucpn._yscale = lp*Math.cos(bpi);//độ dài lực thành phần Pn //tọa độ của chữ Pn theo thời gian
chupn._x = xvat + 1.3*lpn*Math.sin(bpi); chupn._y = yvat + lpn*Math.cos(bpi) + 30;
luct._yscale = lpn;//độ dài của lực căng dây T theo thời gian lpt = lucpt._xscale = lp*Math.sin(bpi);//độ dài lực thành phần Pt //tọa độ của chữ Pt và chữ T theo thời gian
chupt._x = xvat - 1.6*lpt*Math.cos(bpi); chupt._y = yvat + lpt*Math.sin(bpi) + 15; chut._x = xvat - 0.5*lpn*Math.sin(bpi); chut._y = yvat - lpn*Math.cos(bpi)/1.1;
noipn._xscale = lpt*1.7;//độ dài đoạn nối giữa trọng lực và thành phần Pn noipt._yscale = lpn*1.85;// độ dài đoạn nối giữa trọng lực và thành phần Pt gocb._x = x0 + dodail2/4*Math.sin(bpi);}//tọa độ x của chữ β
//hoặc nếu i2 khơng lớn hơn 0 thì
else { l2._rotation = 0; //l2 trở về vị trí ban đầu batdau (); //thực hiện đối tượng batdau ()
//khi bắt đầu chạy Frame onEnterFrame = function() {
//nếu timing1 bằng true
if (timing1) { t1 = t1 + 0.01;//thời gian t1 tăng theo hệ số 0.01 dao_dong1();//thực hiện đối tượng dap_dong1 ()
//hiển thị các thành phần sau
nut2._visible = true; goca._visible = true; gocb._visible = false;}//ẩn chữ β
//nếu timing2 bằng true
if (timing2) { t2 = t2 + 0.01;//thời gian t2 tăng theo hệ số 0.01 dao_dong2(); //thực hiện đối tượng dao_dong2 ()
goca._visible = false;//ẩn chữ α gocb._visible = true;}//hiện chữ β
xvat = vat._x; yvat = vat._y; //đặt biến xvat, yvat là tọa độ cảu quả nặng theo thời gian
//tọa độ của các đối tượng khác theo thời gian
trongluc._x=xvat; trongluc._y = yvat; luct._x = xvat; luct._y = yvat; lucpt._x = xvat; lucpt._y = yvat; lucpn._x = xvat; lucpn._y = yvat; noipn._x = xvat; noipn._y = yvat + lp +20; noipt._x = xvat;
noipt._y = yvat + lp + 20; clear();
lineStyle(1.500000, 65280, 100);//vẽ đường thẳng là đường vẽ góc α moveTo(cham1._x, cham1._y);//nối từ
lineTo(goca._x, goca._y);//đến điểm
lineStyle(1.999000, 75280, 100);// vẽ đường thẳng là đường vẽ góc β moveTo(cham2._x, cham2._y);//nối từ
lineTo(gocb._x, gocb._y);}//đến điểm //khi bấm nút play thứ hai
unpausebutton2.onPress=function() { chaytiep2();}//thực hiện đối tượng chaytiep2 () //khi bấm nút pause
//khi bấm nút stop
nutstop.onPress= function() {batdaulai();//thực hiện đối tượng batdaulai () unpausebutton1._visible = true;//hiện nút play thứ nhất
unpausebutton2._visible = false;//ẩn nút play thứ hai
luct._rotation = 0;}//lực căng dây T xác định tại ví trí cân bằng //khi bấm nút play thứ hai
unpausebutton1.onPress = function (){chaytiep1 ();}//thực hiện đối tượng này - Trong nút các thành phần của trọng lực
on(press){lucpt._visible = !lucpt._visible; lucpn._visible = !lucpn._visible; chupn._visible = !chupn._visible; chupt._visible = !chupt._visible; noipt._visible = !noipt._visible; noipn._visible = !noipn._visible;} - Trong nút các lực tác dụng
on (press){ trongluc._visible = !trongluc._visible; luct._visible = !luct._visible; chut._visible = !chut._visible;}
- Trong nút chứa thông tin cần ghi nhớ
on (press){ ghinho._visible = !ghinho._visible ;} - Trong nút chứa câu hỏi
on (press){ cauhoi._visible = !cauhoi._visible;} Nhấn Ctrl + Enter xem kết quả (hình 13)