亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Python在曲線平移可視化中的應(yīng)用研究

        2024-04-14 11:35:23張朋賈棟梁咸慶軍崔偉華曾長女
        現(xiàn)代信息科技 2024年2期
        關(guān)鍵詞:理論力學(xué)可視化

        張朋 賈棟梁 咸慶軍 崔偉華 曾長女

        DOI:10.19850/j.cnki.2096-4706.2024.02.039

        收稿日期:2023-05-08

        基金項目:河南工業(yè)大學(xué)本科教育教學(xué)改革研究與實踐項目(2023GJYJTM16);河南省新工科研究與實踐項目(2020JGLX039);河南省高等教育學(xué)會高等教育研究項目(2021SXHLX145);河南省高等教育教學(xué)改革研究與實踐重點項目(2021SJGLX144)

        摘? 要:平移運動是理論力學(xué)的一項重要內(nèi)容,曲線平移是平移運動中的難點內(nèi)容,其抽象枯燥。采用圖形和動畫等可視化教學(xué)手段,可以化抽象為具體,從而降低理解難度。編制曲線平移動畫程序,提供了深入理解曲線平移的另一種方式,可以提升學(xué)習(xí)效果,也提供了一個編程實踐的機會。該文詳細介紹了利用Python制作曲線平移動畫程序,加深了學(xué)生對利用Python繪制圖形和制作動畫的理解,豐富了學(xué)生的信息技術(shù)知識,也加深了學(xué)生對平移運動的理解,進一步增強了學(xué)生對理論力學(xué)課程的興趣和信心。

        關(guān)鍵詞:理論力學(xué);曲線平移;可視化

        中圖分類號:TP39;G434 文獻標識碼:A 文章編號:2096-4706(2024)02-0182-05

        Research on the Application of Python in Curve Translation Visualization

        ZHANG Peng, JIA Dongliang, XIAN Qingjun, CUI Weihua, ZENG Zhangnyu

        (College of Civil Engineering, Henan University of Technology, Zhengzhou? 450001, China)

        Abstract: Translation motion is an important content of theoretical mechanics. Curve translation is a difficult content in translation motion, which is abstract and boring. The use of visual teaching tools such as graphic and animation can reduce the difficulty of understanding by turning the abstract into the concrete. Developing curve translation animation program provides an alternative way of gaining insight into curve translation, can improve learning effect, and also provide an opportunity for programming practice. The curve translation animation creating program using Python is introduced in detail in this paper, which deepens students' understanding of drawing graphics and creating animations using Python, enriches their knowledge of information technology, deepens their understanding of translation motion, and further enhances their interest and confidence in the theoretical mechanics course.

        Keywords: theoretical mechanics; curve translation; visualization

        0? 引? 言

        理論力學(xué)是土木工程、機械工程等專業(yè)的專業(yè)基礎(chǔ)課程[1],是必須掌握的理論課。理論力學(xué)包含三大部分:靜力學(xué)、運動學(xué)和動力學(xué)。運動學(xué)只從幾何角度研究物體的運動,其是機構(gòu)運動分析的基礎(chǔ),并且是動力學(xué)部分的基礎(chǔ),因此非常重要。剛體的平移運動是運動學(xué)中的基礎(chǔ)內(nèi)容,是運動學(xué)后續(xù)重難點內(nèi)容(點的合成運動、剛體的平面運動)的基礎(chǔ),因此平移運動是理論力學(xué)課程的一項重要內(nèi)容。平移運動包括直線平移和曲線平移,直線平移較簡單,曲線平移是平移運動中的難點內(nèi)容。然而教材只是通過簡單的理論推導(dǎo)與敘述來介紹此部分內(nèi)容,比較抽象枯燥。若采用傳統(tǒng)教學(xué)手段,學(xué)生此部分內(nèi)容的學(xué)習(xí)效果則不太理想。隨著信息技術(shù)的快速發(fā)展,教育工作者采用圖形動畫等可視化教學(xué)手段,將抽象概括的知識以視覺表征的方式呈現(xiàn)給學(xué)生,化抽象為具體、變靜態(tài)為動態(tài),從而降低知識的理解難度,加深學(xué)生的理解,最終提升學(xué)習(xí)效果[2,3]。提升學(xué)生的計算機應(yīng)用能力和編程水平也是當(dāng)代教育的一項重要內(nèi)容,但多數(shù)學(xué)生的編程只是囿于計算機編程課和計算機等級考試[4],缺乏解決實際問題的編程鍛煉。編制一個制作曲線平移動畫的程序,則提供了一個編程實踐的機會,并且可以深入理解和掌握曲線平移。

        不少學(xué)者采用MATLAB、Maple等國外商業(yè)軟件進行了運動學(xué)教學(xué)研究[5-9],然而這些商業(yè)軟件往往價格昂貴,多數(shù)單位及個人難以負擔(dān),且其中某些軟件已經(jīng)禁止我國部分高校和單位使用。開源免費的Python則不存在這些問題,而且Python提供了非常完善的基礎(chǔ)代碼庫,從而使得Python既適用于傳統(tǒng)的Web開發(fā)、PC軟件開發(fā)等,也適用于當(dāng)下熱門的機器學(xué)習(xí)、大數(shù)據(jù)分析等,因而Python成為現(xiàn)在最熱門的編程語言之一。已有學(xué)者利用Python進行了理論力學(xué)相關(guān)的教學(xué)研究[10],但還不多見,尤其在運動學(xué)方面。本文將圍繞曲線平移這一知識點,系統(tǒng)地介紹如何利用Python編制曲線平移動畫程序。

        1? Python基礎(chǔ)知識

        Python是一種解釋型、面向?qū)ο?、動態(tài)數(shù)據(jù)類型的高級程序設(shè)計語言,其與其他語言有許多相似之處,但也存在一些差異。Python提供了眾多的基礎(chǔ)代碼庫,可以使用Matplotlib繪制圖形和制作動畫。

        1.1? Python基本語法

        Python最具特色的就是用縮進來寫模塊,縮進的空白數(shù)量是可變的,但是所有代碼塊語句必須包含相同的縮進空白數(shù)量。Python中的標識符(作為變量、函數(shù)、類、模塊以及其他對象的名稱)由字母、數(shù)字、下劃線組成,區(qū)分大小寫,一般以字母開頭。

        Python有五個標準的數(shù)據(jù)類型:Numbers(數(shù)字)、String(字符串)、List(列表)、Tuple(元組)、Dictionary(字典)。其中,Python的列表是用方括號([])標注,逗號分隔的一組值。列表是Python中使用最頻繁的數(shù)據(jù)類型,可以完成大多數(shù)集合類的數(shù)據(jù)結(jié)構(gòu)實現(xiàn)。它支持字符、數(shù)字、字符串甚至可以包含列表(即嵌套)。使用“append()”方法向列表添加項。

        Python常使用for循環(huán)。Python的for語句迭代列表或字符串等任意序列,元素的迭代順序與在序列中出現(xiàn)的順序一致。內(nèi)置“range()”函數(shù)常用于遍歷數(shù)字序列,該函數(shù)可以生成算術(shù)級數(shù),生成的序列不包含給定的終止數(shù)值。

        1.2? Matplotlib

        Matplotlib是一款用于數(shù)據(jù)可視化的Python庫,支持跨平臺運行,能夠輕松地實現(xiàn)各種圖形的繪制。Pyplot是Matplotlib的子庫,提供了和MATLAB類似的繪圖API,能方便地繪制2D圖表,使用前需要使用“import matplotlib.pyplot as plt”引入。Animation是Matplotlib的另一子庫,可以繪制復(fù)雜動畫并能生成gif動畫文件,使用前需要使用“import matplotlib.animation as animation”引入。Matplotlib生成的圖形主要由包括:Figure(整個圖形畫布)和Axes(繪圖區(qū)域)。示例代碼如下:

        fig =plt.Figure(dpi=100)

        plt.gcf().set_size_inches(20, 10)

        fig.tight_layout()

        ax = fig.add_subplot(1,1,1)

        此段代碼在創(chuàng)建了一個寬為20、高為10的Matplotlib空白圖形,之后可以在繪圖區(qū)域繪制圖形。

        Pyplot使用“plot()”函數(shù)繪制點和線,其具有可選格式的字符串參數(shù),用來指定線型、標記顏色、樣式以及大小。使用“text()”函數(shù)向繪圖區(qū)域添加文本。Matplotlib可以根據(jù)自變量與因變量的取值范圍,自動設(shè)置x軸與y軸的數(shù)值大小,也可以使用“set_xlim()”和“set_ylim()”對x、y軸的數(shù)值范圍進行設(shè)置。

        運動學(xué)中的桿件可以使用“plot()”函數(shù)繪制兩條不同寬度不同顏色的線條組合來表示,鉸連接可以使用“plot()”函數(shù)繪制兩個不同大小不同顏色的點組合來表示。

        Animation使用“FuncAnimation(fig, func, frames, init_func, interval)”函數(shù)制作動畫,fig為繪制動畫的畫布名稱;func為繪制每幀動畫的函數(shù),其第一個參數(shù)為幀序號;frames為動畫幀序號組成的列表,其值會傳遞給func函數(shù);init_func為繪制動畫前的初始化函數(shù);interval為幀之間的間隔時間,單位為毫秒。使用“save(filename)”函數(shù)將繪制的動畫保存為gif動圖或視頻。

        2? 曲線平移基本理論

        如果在剛體內(nèi)任取一直線段,在運動過程中這條直線段始終與它的最初位置平行,這種運動稱為平行移動(平移運動[11]),簡稱平移[1]。當(dāng)剛體平行移動時,其上各點的運動相同,軌跡形狀相同;在每一瞬時,各點的速度相同,加速度也相同。

        平移包括直線平移和曲線平移[1,11]:平移剛體上的點做直線運動,則為直線平移;平移剛體上的點做曲線運動,則為曲線平移。曲線平移具有平移運動的上述特點。文獻[1]中例7-9和習(xí)題7-18中的鉸接四邊形機構(gòu)(機械工程中稱為平行四邊形機構(gòu)[12])的水平桿作曲線平移。

        本文新建一平行四邊形機構(gòu),其包括曲柄OC、曲柄O1C1和水平連桿CC1,OC=O1C1=r,CC1=OO1=L,連桿CC1做曲線平移,曲柄OC以勻角速度ω轉(zhuǎn)動,初時刻時曲柄OC與水平線間的夾角為φ0。以O(shè)為坐標原點,則點O1坐標為(L,0)。

        點C的運動方程為:

        點C1的運動方程為:

        3? 曲線平移可視化的Python實現(xiàn)

        本節(jié)將詳細介紹利用Python編制曲線平移可視化程序。

        3.1? 平行四邊形機構(gòu)數(shù)據(jù)計算與存儲

        賦予變量具體數(shù)值,計算第i幀對應(yīng)的時刻t,根據(jù)關(guān)鍵點的運動方程,計算此時平行四邊形機構(gòu)中各關(guān)鍵點的坐標,分別存儲在變量“x_C”“y_C”“x_C1”“y_C1”中,Python代碼如下:

        t=i*0.02

        L,r =560,200

        w=1

        phi0=math.pi/4

        x_O,y_O=0,0

        x_O1=L

        y_O1=0

        phi=w*t+phi0

        x_C=r*math.cos(phi)

        y_C=r*math.sin(phi)

        x_C1=x_C+L

        y_C1=y_C

        3.2? 平行四邊形機構(gòu)繪制

        繪制開始時需先清除繪圖區(qū)域并進行尺寸等設(shè)置。Python代碼如下:

        ax.cla()

        ax.axis('equal')

        ax.set_xlim(-210,800)

        ax.set_ylim(-255,255)

        ax.axis('off')

        根據(jù)關(guān)鍵點O、C、O1、C1的坐標,依次繪制曲柄OC、曲柄O1C1,初時刻時繪制結(jié)果如圖1(a)所示。Python代碼如下:

        ax.plot([x_O,x_C],[y_O,y_C],linewidth =9.0,color='k')

        ax.plot([x_O,x_C],[y_O,y_C],linewidth =6.0,color=

        '#e3ded8')

        ax.plot([x_O1,x_C1],[y_O1,y_C1],linewidth =9.0,

        color='k')

        ax.plot([x_O1,x_C1],[y_O1,y_C1],linewidth =6.0,

        color='#e3ded8')

        根據(jù)關(guān)鍵點O、O1的坐標,依次繪制鉸鏈O和鉸鏈O1,初時刻時繪制結(jié)果如圖1(b)所示。Python代碼如下:

        ax.plot(x_O,y_O,markersize=12,c='k',marker='o')

        ax.plot(x_O,y_O,markersize=8,c='w',marker='o')

        ax.plot(x_O1,y_O1,markersize=12,c='k',marker='o')

        ax.plot(x_O1,y_O1,markersize=8,c='w',marker='o')

        根據(jù)關(guān)鍵點C、C1的坐標,繪制連桿CC1,初時刻時繪制結(jié)果如圖1(c)所示。Python代碼如下:

        ax.plot([x_C,x_C1],[y_C,y_C1],linewidth =9.0,color='k')

        ax.plot([x_C,x_C1],[y_C,y_C1],linewidth =6.0,

        color='#e3ded8')

        根據(jù)關(guān)鍵點C、C1的坐標,依次繪制鉸鏈C和鉸鏈C1。根據(jù)各關(guān)鍵點坐標,使用“text”函數(shù)在關(guān)鍵點旁標注對應(yīng)字母,具體代碼不再贅述。初時刻時繪制結(jié)果如圖1(d)所示,動畫過程可關(guān)閉字母顯示。繪制鉸鏈C、C1的代碼如下:

        ax.plot(x_C,y_C,markersize=12*0.5,c='k',marker='o')

        ax.plot(x_C,y_C,markersize=8*0.5,c='w',marker='o')

        ax.plot(x_C1,y_C1,markersize=12*0.5,c='k',marker

        ='o')

        ax.plot(x_C1,y_C1,markersize=8*0.5,c='w',marker

        ='o')

        (a)曲柄OC和曲柄O1C1

        (b)鉸鏈O和鉸鏈O1

        (c)連桿CC1

        (d)平行四邊形機構(gòu)

        圖1? 平行四邊形機構(gòu)繪制過程圖

        3.3? 曲線平移可視化

        循環(huán)調(diào)用平行四邊形機構(gòu)數(shù)據(jù)計算及繪制代碼,得到一系列動畫幀,最終可得到其運動動畫,也得到了做曲線平移的連桿的運動動畫。平行四邊形機構(gòu)運動過程截圖如圖2所示(本文gif動畫已轉(zhuǎn)視頻上傳至B站https://space.bilibili.com/396001643)。Python代碼如下:

        ani = animation.FuncAnimation(fig, update, range(310), init_func=init, interval=30)

        ani.save('PY-donghua.gif', writer='imagemagick')

        在平行四邊形機構(gòu)運動過程中,連桿一直處于水平狀態(tài),即其始終平行于初始位置,圖2展示了平移運動的此特點。

        3.4? 曲線平移動點軌跡可視化

        在連桿上任取兩動點M、N,坐標分別存儲在變量“x_M”“y_M”“x_N”“y_N”中,并存儲每一幀動點M、N和點C坐標于二維列表數(shù)組“xy_M_all”“xy_N_all”“xy_C_all”中,并在每一幀繪制所有歷史點,即得各點軌跡。曲線平移動點軌跡截圖如圖3所示,從左至右依次為點C、M、N的軌跡。Python代碼如下:

        x_M=x_C+L/5*2

        y_M=y_C

        x_N=x_C+L/5*4

        y_N=y_C

        xy_C_all.append([x_C,y_C])

        xy_M_all.append([x_M,y_M])

        xy_N_all.append([x_N,y_N])

        ax.plot(x_C,y_C,markersize=12*0.5,c='k',marker='o')

        ax.plot(x_M,y_M,markersize=12*0.5,c='b',marker='o')

        ax.plot(x_N,y_N,markersize=12*0.5,c='r',marker='o')

        for ii in range(0,i,1*5):

        ax.plot(xy_C_all[ii][0],xy_C_all[ii][1],markersize=12*0.5,c='k',marker='o')

        ax.plot(xy_M_all[ii][0],xy_M_all[ii][1],markersize=12*0.5,c='b',marker='o')

        ax.plot(xy_N_all[ii][0],xy_N_all[ii][1],markersize=12*0.5,c='r',marker='o')

        從圖3可見,此做曲線平移的連桿上任意兩點的軌跡形狀相同,且為曲線(此例中為圓),且任一時刻,各動點都運動到軌跡的同一位置,從而說明平移運動的另一個特點——在每一瞬時,做平移運動的剛體上各點的速度相同,加速度也相同。

        4? 結(jié)? 論

        本研究將基于Python的可視化技術(shù)應(yīng)用在曲線平移的教學(xué)中,使抽象的曲線平移知識具體化直觀化,降低了學(xué)習(xí)難度,從而提升了學(xué)習(xí)效果。詳細介紹了利用Python制作曲線平移動畫,既加深了學(xué)生對曲線平移的理解,也使學(xué)生初步掌握了繪制圖形及制作動畫等Python編程知識。將編程內(nèi)容引入理論力學(xué)課程,使傳統(tǒng)理論課程與現(xiàn)代信息技術(shù)交叉融合,豐富了學(xué)生的信息技術(shù)知識,也進一步增強了學(xué)生對所學(xué)課程的興趣和信心。

        參考文獻:

        [1] 哈爾濱工業(yè)大學(xué)理論力學(xué)教研室.理論力學(xué)(Ⅰ):第8版 [M].北京:高等教育出版社,2016.

        [2] 劉健智,程婷.GeoGebra軟件在物理可視化教學(xué)中的應(yīng)用 [J].物理教師,2021,42(6):70-73.

        [3] 陳林.基于GeoGebra的高中物理習(xí)題可視化教學(xué)研究 [D].蘇州:蘇州大學(xué),2021.

        [4] 許楊劍,阮洪勢,沈倩倩,等.材料力學(xué)教學(xué)中的編程實踐——應(yīng)力狀態(tài)分析 [J].力學(xué)與實踐,2018,40(4):446-450.

        [5] 李琳.平底頂桿凸輪機構(gòu)的MATLAB動畫編程 [J].力學(xué)與實踐,2005(5):74-76.

        [6] 闞文彬,李彤,葉純杰.MATLAB在運動學(xué)中的應(yīng)用 [J].力學(xué)與實踐,2010,32(3):118-120.

        [7] 田葉,高振海,宋海珍.Maple在剛體平面運動教學(xué)中的應(yīng)用 [J].南陽師范學(xué)院學(xué)報,2011,10(9):88-90.

        [8] 敖文剛,李勤,王歆.基于Matlab的理論力學(xué)計算機輔助教學(xué) [J].力學(xué)與實踐,2013,35(1):83-86.

        [9] 高云峰.Matlab求解理論力學(xué)問題系列(二) 典型機構(gòu)的運動分析 [J].力學(xué)與實踐,2021,43(3):414-419.

        [10] 郭子灃.理論力學(xué)動力學(xué)作業(yè)在線平臺的建立及其應(yīng)用研究 [D].南昌:南昌大學(xué),2020.

        [11] 洪嘉振,劉鑄永,楊長俊.理論力學(xué):第5版 [M].北京:高等教育出版社,2023.

        [12] 孫桓,葛文杰.機械原理:第9版 [M].北京:高等教育出版社,2021.

        作者簡介:張朋(1986—),男,漢族,河南南陽人,博士,講師,研究方向:計算力學(xué)。

        猜你喜歡
        理論力學(xué)可視化
        自然資源可視化決策系統(tǒng)
        北京測繪(2022年6期)2022-08-01 09:19:06
        思維可視化
        師道·教研(2022年1期)2022-03-12 05:46:47
        基于Power BI的油田注水運行動態(tài)分析與可視化展示
        云南化工(2021年8期)2021-12-21 06:37:54
        自然資源可視化決策系統(tǒng)
        北京測繪(2021年7期)2021-07-28 07:01:18
        基于CGAL和OpenGL的海底地形三維可視化
        “融評”:黨媒評論的可視化創(chuàng)新
        傳媒評論(2019年4期)2019-07-13 05:49:14
        基于MATLAB的機械力學(xué)問題的研究
        石油工程專業(yè)理論力學(xué)全英文課程建設(shè)與教學(xué)實踐
        移動互聯(lián)時代理論力學(xué)的教學(xué)模式
        軟件仿真在理論力學(xué)教學(xué)中的應(yīng)用?
        東方教育(2016年3期)2016-12-14 13:03:34
        国产99页| 久久婷婷国产精品香蕉| 国产成人自拍高清在线| 午夜日韩视频在线观看| 色爱无码A V 综合区| 婷婷丁香社区| 中文字幕一区二区三区日韩精品| 亚洲中文欧美日韩在线人| 人成午夜免费视频无码| a级三级三级三级在线视频| 男女扒开双腿猛进入免费看污| 成人一区二区三区国产| 国产激情视频在线| 少妇太爽了在线观看| 男人天堂网在线视频| 亚洲一级无码AV毛片久久| 白白色视频这里只有精品| 曰韩无码无遮挡a级毛片| 免费又黄又爽又猛的毛片| 国产伦码精品一区二区| 亚洲女同av在线观看| 国产在线精品一区二区中文| 亚洲av无码成人精品区天堂| 一区二区三区四区在线观看视频| 国产美女一区三区在线观看| 亚洲无码在线播放| 亚洲av无码av吞精久久| 亚洲无码图| 给我看免费播放的视频在线观看| 十八禁无遮挡99精品国产| 色猫咪免费人成网站在线观看| 小12箩利洗澡无码视频网站| 日本激情一区二区三区| 久久亚洲中文字幕精品一区| 国产成人精品av| 区无码字幕中文色| 亚洲美女自拍偷拍视频| 国产激情久久久久影院老熟女免费| 日韩手机在线免费视频| 精品蜜桃视频在线观看| 亚洲精品宾馆在线精品酒店 |