王超 陳攀杰 周艷麗
(臺(tái)州學(xué)院物理系 浙江 臺(tái)州 318000)
圓周運(yùn)動(dòng)是中學(xué)物理以及大學(xué)物理力學(xué)部分中一種重要的曲線運(yùn)動(dòng),其在現(xiàn)實(shí)生活中非常常見(jiàn),如輪子繞軸的轉(zhuǎn)動(dòng)、圓錐擺的運(yùn)動(dòng)、衛(wèi)星繞地球的轉(zhuǎn)動(dòng)等.通常我們只討論一個(gè)物體的圓周運(yùn)動(dòng)[1~5],但有時(shí)會(huì)遇到兩個(gè)都做圓周運(yùn)動(dòng)的物體的相對(duì)運(yùn)動(dòng)問(wèn)題,如:地球表面的人觀察地球衛(wèi)星的運(yùn)動(dòng)(人和衛(wèi)星都繞地心做圓周運(yùn)動(dòng)),或者太陽(yáng)系中其他行星相對(duì)地球的運(yùn)動(dòng)(地球和其他行星都近似繞太陽(yáng)做圓周運(yùn)動(dòng)),地球衛(wèi)星間的相對(duì)運(yùn)動(dòng)等[6].相對(duì)運(yùn)動(dòng)問(wèn)題是力學(xué)部分的難點(diǎn),其往往與坐標(biāo)系的選取有關(guān).以xOy平面內(nèi)做圓周運(yùn)動(dòng)的A,B兩質(zhì)點(diǎn)為例,當(dāng)我們討論B相對(duì)于A的運(yùn)動(dòng)時(shí),需要以A為原點(diǎn)建立二維直角坐標(biāo)系(x′Ay′)并在該坐標(biāo)系中討論B的運(yùn)動(dòng).坐標(biāo)系x′Ay′隨A點(diǎn)一起運(yùn)動(dòng),若x′軸和y′軸始終分別與基坐標(biāo)系的x軸和y軸平行,則稱x′Ay′系為平動(dòng)坐標(biāo)系;若x′軸和y′軸繞A點(diǎn)轉(zhuǎn)動(dòng),則稱x′Ay′系為轉(zhuǎn)動(dòng)坐標(biāo)系[7].在不同的坐標(biāo)系中,B相對(duì)于A的運(yùn)動(dòng)軌跡往往不同.例如:我們?cè)诘厍虮砻嬗^察赤道上空地球同步衛(wèi)星的運(yùn)動(dòng),在轉(zhuǎn)動(dòng)坐標(biāo)系中,衛(wèi)星相對(duì)于我們靜止,而在平動(dòng)坐標(biāo)系中衛(wèi)星則相對(duì)于我們不停地運(yùn)動(dòng).
本文基于Visual Basic語(yǔ)言開(kāi)發(fā)出用于演示二維平面內(nèi)兩個(gè)做勻速圓周運(yùn)動(dòng)的質(zhì)點(diǎn)的相對(duì)運(yùn)動(dòng)軌跡的仿真軟件,利用該軟件可以直觀演示任意參數(shù)條件下做勻速圓周運(yùn)動(dòng)兩質(zhì)點(diǎn)在平動(dòng)坐標(biāo)系和轉(zhuǎn)動(dòng)坐標(biāo)系中的相對(duì)運(yùn)動(dòng)軌跡.
假定兩個(gè)質(zhì)點(diǎn)1和2在基坐標(biāo)系xOy平面內(nèi)各自沿逆時(shí)針做勻速圓周運(yùn)動(dòng),圓心坐標(biāo)分別為(x01,y01)和(x02,y02),半徑分別為R1和R2,角速度分別為ω1和ω2,t= 0時(shí)刻兩質(zhì)點(diǎn)到圓心的連線與Ox軸的夾角分別為α1和α2,則任意t時(shí)刻兩個(gè)質(zhì)點(diǎn)在xOy平面內(nèi)的坐標(biāo)可表示為
(1)
(2)
若以質(zhì)點(diǎn)1為坐標(biāo)原點(diǎn)建立平動(dòng)坐標(biāo)系x1O1y1,如圖1(a)所示,則質(zhì)點(diǎn)2相對(duì)于質(zhì)點(diǎn)1的坐標(biāo)可表示為
(3)
同理,以質(zhì)點(diǎn)2為坐標(biāo)原點(diǎn)建立平動(dòng)坐標(biāo)系x2O2y2,如圖1(a)所示,則質(zhì)點(diǎn)1相對(duì)于質(zhì)點(diǎn)2的坐標(biāo)可表示為
(4)
對(duì)比式(3)和式(4)不難得到
(5)
(6)
(7)
圖1 平動(dòng)坐標(biāo)系和轉(zhuǎn)動(dòng)坐標(biāo)系示意圖
當(dāng)ω1=ω2時(shí),即ω1∶ω2= 1∶1,根據(jù)上述公式可以證明:無(wú)論是在平動(dòng)坐標(biāo)系或是在轉(zhuǎn)動(dòng)坐標(biāo)系,兩個(gè)質(zhì)點(diǎn)的相對(duì)運(yùn)動(dòng)軌跡都為圓(圓周半徑R的大小與x01,y01,x02,y02,R1,R2,α1和α2有關(guān),而且在某些特殊條件下R= 0,即質(zhì)點(diǎn)相對(duì)靜止).考慮到推導(dǎo)過(guò)程和最終表達(dá)式非常繁瑣,這里不再列出.當(dāng)ω1≠ω2時(shí),兩個(gè)質(zhì)點(diǎn)的相對(duì)運(yùn)動(dòng)軌跡很難通過(guò)直接推導(dǎo)進(jìn)行表達(dá).本文基于VB語(yǔ)言根據(jù)式(1)~(7)求出任意t時(shí)刻兩個(gè)質(zhì)點(diǎn)在基坐標(biāo)系中的坐標(biāo)以及在平動(dòng)坐標(biāo)系和轉(zhuǎn)動(dòng)坐標(biāo)系中的相對(duì)坐標(biāo),繼而繪制并得到兩個(gè)質(zhì)點(diǎn)的相對(duì)運(yùn)動(dòng)軌跡.
軟件程序分窗體和模塊兩部分.軟件將各種操作集中在一個(gè)窗體內(nèi),其中包含參數(shù)設(shè)置、命令按鈕和圖形輸出3個(gè)部分,如圖2所示.參數(shù)設(shè)置部分包含兩個(gè)質(zhì)點(diǎn)在基坐標(biāo)系中的圓心位置、圓周半徑、角速度、初始角度、計(jì)算時(shí)間間隔dt和計(jì)算次數(shù)Num等參數(shù);命令按鈕部分包含系統(tǒng)生成、開(kāi)始運(yùn)動(dòng)和結(jié)束程序3個(gè)按鈕;圖形輸出部分包含基坐標(biāo)系中兩個(gè)質(zhì)點(diǎn)的運(yùn)動(dòng)軌跡、平動(dòng)坐標(biāo)系和轉(zhuǎn)動(dòng)坐標(biāo)系中兩個(gè)質(zhì)點(diǎn)的相對(duì)運(yùn)動(dòng)軌跡等5個(gè)區(qū)域.軟件程序的執(zhí)行按照一定的流程進(jìn)行設(shè)計(jì),即首先進(jìn)行參數(shù)設(shè)置并點(diǎn)擊系統(tǒng)生成按鈕,程序在“基坐標(biāo)系中兩個(gè)質(zhì)點(diǎn)的運(yùn)動(dòng)軌跡”區(qū)域繪制兩個(gè)質(zhì)點(diǎn)的圓軌跡及初始位置;然后點(diǎn)擊開(kāi)始運(yùn)動(dòng)按鈕,程序?qū)膖= 0時(shí)刻開(kāi)始每間隔dt根據(jù)式(1)~(7)計(jì)算兩個(gè)質(zhì)點(diǎn)的位置,連續(xù)計(jì)算Num次,且每次計(jì)算都在圖形區(qū)域同步繪制質(zhì)點(diǎn)位置代表點(diǎn),從而獲得基坐標(biāo)系中兩個(gè)質(zhì)點(diǎn)的運(yùn)動(dòng)圖像以及兩個(gè)質(zhì)點(diǎn)間的相對(duì)運(yùn)動(dòng)的動(dòng)態(tài)軌跡;最后點(diǎn)擊結(jié)束程序,終止程序并關(guān)閉軟件,具體流程圖如圖3所示(程序代碼詳見(jiàn)附錄).
圖2 窗體界面
圖3 程序流程圖
作為例子,我們?cè)O(shè)定:質(zhì)點(diǎn)1的圓心位置(0, 0),半徑為1.0,初始角度為0;質(zhì)點(diǎn)2的圓心位置(0, 0),半徑為2,初始角度為0,即兩個(gè)質(zhì)點(diǎn)做同心轉(zhuǎn)動(dòng).我們發(fā)現(xiàn)質(zhì)點(diǎn)的相對(duì)運(yùn)動(dòng)軌跡形狀僅與兩個(gè)質(zhì)點(diǎn)圓周運(yùn)動(dòng)角速度比值有關(guān)而與角速度具體值無(wú)關(guān).表1給出了角速度比值ω1∶ω2分別為1∶1,1∶2和1∶3時(shí)兩質(zhì)點(diǎn)在平動(dòng)坐標(biāo)系和轉(zhuǎn)動(dòng)坐標(biāo)系中的相對(duì)運(yùn)動(dòng)軌跡圖及其對(duì)應(yīng)的軌跡方程.由圖可以看出,當(dāng)ω1∶ω2= 1∶1時(shí),相對(duì)運(yùn)動(dòng)軌跡圖形和方程都比較簡(jiǎn)單,而當(dāng)ω1∶ω2≠ 1∶1時(shí),相對(duì)運(yùn)動(dòng)軌跡圖形和方程都會(huì)隨ω1∶ω2的減小(或增大)變得越來(lái)越復(fù)雜.通常情況下,轉(zhuǎn)動(dòng)坐標(biāo)系中兩個(gè)質(zhì)點(diǎn)的相對(duì)運(yùn)動(dòng)軌跡形狀或大小不相同,而平動(dòng)坐標(biāo)系中兩個(gè)質(zhì)點(diǎn)的相對(duì)運(yùn)動(dòng)軌跡大小相同且形狀相似,這一特點(diǎn)可由式(5)直接得出.
表1質(zhì)點(diǎn)相對(duì)運(yùn)動(dòng)軌跡演示結(jié)果圖例
圓周運(yùn)動(dòng)是物理力學(xué)部分常見(jiàn)的曲線運(yùn)動(dòng).本文基于VB語(yǔ)言開(kāi)發(fā)出用于演示二維平面內(nèi)做勻速圓周運(yùn)動(dòng)兩質(zhì)點(diǎn)的相對(duì)運(yùn)動(dòng)軌跡的仿真軟件.在任意給定參數(shù)條件下,利用該軟件可分別繪出平動(dòng)坐標(biāo)系和轉(zhuǎn)動(dòng)坐標(biāo)系中質(zhì)點(diǎn)的相對(duì)運(yùn)動(dòng)軌跡,從而形象直觀展現(xiàn)做勻速圓周運(yùn)動(dòng)兩質(zhì)點(diǎn)的相對(duì)運(yùn)動(dòng)規(guī)律.該軟件可用于教師課堂演示或?qū)W生課外自主演示,拓展圓周運(yùn)動(dòng)和相對(duì)運(yùn)動(dòng)知識(shí),使物理知識(shí)化抽象為形象生動(dòng),提高學(xué)生學(xué)習(xí)興趣和參與性.
附錄:VB程序代碼
Const unitlen1 = 500, unitlen2 = 300, boxxmax = 200, boxymax = 200, ntimemax = 1000000
Dim ntimereal As Long, ntime As Long, pdeltt As Long
Dim deltt As Double, pai As Double, i As Double, x01 As Double, y01 As Double, x02 As Double, y02 As Double, r1 As Double, r2 As Double, w1 As Double, w2 As Double, a1 As Double, a2 As Double, x1 As Double, x2 As Double, x12 As Double, x21 As Double, y1 As Double, y2 As Double, y12 As Double, y21 As Double, sx1 As Double, sx2 As Double, sx12 As Double, sx21 As Double, sy1 As Double, sy2 As Double, sy12 As Double, sy21 As Double, rx12 As Double, rx21 As Double, ry12 As Double, ry21 As Double, srx12 As Double, srx21 As Double, sry12 As Double, sry21 As Double, centerx1 As Double, centery1 As Double, centerx2 As Double, centery2 As Double, centerx3 As Double, centery3 As Double, centerx4 As Double, centery4 As Double, centerx5 As Double, centery5 As Double, deltt2 As Double, rtime As Double
'生成系統(tǒng)
Private Sub Command1_Click()
pai = 3.1415926
x01 = Val(Text1.Text)
y01 = Val(Text2.Text)
x02 = Val(Text3.Text)
y02 = Val(Text4.Text)
r1 = Val(Text5.Text)
r2 = Val(Text6.Text)
w1 = Val(Text7.Text)
w2 = Val(Text8.Text)
deltt = Val(Text9.Text)
ntimereal = Val(Text10.Text)
pdeltt = 100
a1 = Val(Text12.Text) * pai / 180
a2 = Val(Text13.Text) * pai / 180
deltt2 = deltt * deltt
centerx1 = Val(Picture1.Width) / 2
centery1 = Val(Picture1.Height) / 2
centerx2 = Val(Picture2.Width) / 2
centery2 = Val(Picture2.Height) / 2
centerx3 = Val(Picture3.Width) / 2
centery3 = Val(Picture3.Height) / 2
>centerx4 = Val(Picture4.Width) / 2
centery4 = Val(Picture4.Height) / 2
centerx5 = Val(Picture5.Width) / 2
centery5 = Val(Picture5.Height) / 2
x1 = x01 + r1 * Cos(a1)
y1 = y01 + r1 * Sin(a1)
x2 = x02 + r2 * Cos(a2)
y2 = y02 + r2 * Sin(a2)
x12 = x1 - x2
y12 = y1 - y2
x21 = -x12
y21 = -y12
rx12 = x12
ry12 = y12
rx21 = x21
ry21 = y21
sx01 = centerx1 + x01 * unitlen1
sy01 = centery1 - y01 * unitlen1
sx1 = centerx1 + x1 * unitlen1
sy1 = centery1 - y1 * unitlen1
sx02 = centerx1 + x02 * unitlen1
sy02 = centery1 - y02 * unitlen1
sx2 = centerx1 + x2 * unitlen1
sy2 = centery1 - y2 * unitlen1
sx12 = centerx2 + x12 * unitlen2
sy12 = centery2 - y12 * unitlen2
sx21 = centerx3 + x21 * unitlen2
sy21 = centery3 - y21 * unitlen2
srx12 = centerx4 + rx12 * unitlen2
sry12 = centery4 - ry12 * unitlen2
srx21 = centerx5 + rx21 * unitlen2
sry21 = centery5 - ry21 * unitlen2
Picture1.Cls
Picture2.Cls
Picture3.Cls
Picture4.Cls
Picture5.Cls
Picture1.FillColor = vbBlack
Picture1.FillStyle = 0
Picture1.Circle (sx01, sy01), 25, vbBlack
Picture1.FillColor = vbRed
Picture1.FillStyle = 1
Picture1.Circle (sx01, sy01), r1 * unitlen1, vbRed
Picture1.FillStyle = 0
Picture1.Circle (sx1, sy1), 100, vbRed
Picture1.FillColor = vbBlack
Picture1.FillStyle = 0
Picture1.Circle (sx02, sy02), 25, vbBlack
Picture1.FillColor = vbBlue
Picture1.FillStyle = 1
Picture1.Circle (sx02, sy02), r2 * unitlen1, vbBlue
Picture1.FillStyle = 0
Picture1.Circle (sx2, sy2), 100, vbBlue
Picture2.FillColor = vbRed
Picture2.FillStyle = 0
Picture2.Circle (sx12, sy12), 25, vbRed
Picture3.FillColor = vbBlue
Picture3.FillStyle = 0
Picture3.Circle (sx21, sy21), 25, vbBlue
Picture4.FillColor = vbRed
Picture4.FillStyle = 0
Picture4.Circle (srx12, sry12), 25, vbRed
Picture5.FillColor = vbBlue
Picture5.FillStyle = 0
Picture5.Circle (srx21, sry21), 25, vbBlue
End Sub
'開(kāi)始運(yùn)動(dòng)
Private Sub Command2_Click()
rtime = 0#
For ntime = 1 To ntimereal
rtime = rtime + deltt
x1 = x01 + r1 * Cos(w1 * rtime + a1)
y1 = y01 + r1 * Sin(w1 * rtime + a1)
x2 = x02 + r2 * Cos(w2 * rtime + a2)
y2 = y02 + r2 * Sin(w2 * rtime + a2)
x12 = x1 - x2
y12 = y1 - y2
rx12 = x12 * Cos(w2 * rtime) + y12 * Sin(w2 * rtime)
ry12 = -x12 * Sin(w2 * rtime) + y12 * Cos(w2 * rtime)
x21 = -x12
y21 = -y12
rx21 = x21 * Cos(w1 * rtime) + y21 * Sin(w1 * rtime)
ry21 = -x21 * Sin(w1 * rtime) + y21 * Cos(w1 * rtime)
If ntime Mod pdeltt = 0 Then
sx01 = centerx1 + x01 * unitlen1
sy01 = centery1 - y01 * unitlen1
sx1 = centerx1 + x1 * unitlen1
sy1 = centery1 - y1 * unitlen1
sx02 = centerx1 + x02 * unitlen1
sy02 = centery1 - y02 * unitlen1
sx2 = centerx1 + x2 * unitlen1
sy2 = centery1 - y2 * unitlen1
sx12 = centerx2 + x12 * unitlen2
sy12 = centery2 - y12 * unitlen2
sx21 = centerx3 + x21 * unitlen2
sy21 = centery3 - y21 * unitlen2
srx12 = centerx4 + rx12 * unitlen2
sry12 = centery4 - ry12 * unitlen2
srx21 = centerx5 + rx21 * unitlen2
sry21 = centery5 - ry21 * unitlen2
If ntime Mod 10000 = 0 Then
Picture1.Cls
Picture1.FillColor = vbBlack
Picture1.FillStyle = 0
Picture1.Circle (sx01, sy01), 25, vbBlack
Picture1.FillColor = vbRed
Picture1.FillStyle = 1
Picture1.Circle (sx01, sy01), r1 * unitlen1, vbRed
Picture1.FillStyle = 0
Picture1.Circle (sx1, sy1), 100, vbRed
Picture1.FillColor = vbBlack
Picture1.FillStyle = 0
Picture1.Circle (sx02, sy02), 25, vbBlack
Picture1.FillColor = vbBlue
Picture1.FillStyle = 1
Picture1.Circle (sx02, sy02), r2 * unitlen1, vbBlue
Picture1.FillStyle = 0
Picture1.Circle (sx2, sy2), 100, vbBlue
End If
Picture2.FillColor = vbRed
Picture2.FillStyle = 0
Picture2.Circle (sx12, sy12), 25, vbRed
Picture3.FillColor = vbBlue
Picture3.FillStyle = 0
Picture3.Circle (sx21, sy21), 25, vbBlue
Picture4.FillColor = vbRed
Picture4.FillStyle = 0
Picture4.Circle (srx12, sry12), 25, vbRed
Picture5.FillColor = vbBlue
Picture5.FillStyle = 0
Picture5.Circle (srx21, sry21), 25, vbBlue
End If
Next ntime
End Sub
'結(jié)束程序
Private Sub Command3_Click()
End
End Sub