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

        ?

        Processing軟件在輔助教學(xué)中的應(yīng)用

        2017-03-31 19:00:36蔣寅軍鄒良浩
        軟件導(dǎo)刊 2016年8期
        關(guān)鍵詞:計算機輔助教學(xué)運動學(xué)動畫

        蔣寅軍+鄒良浩

        摘 要:Processing軟件是一個自由、開源的視覺藝術(shù)及視覺化呈現(xiàn)的程序設(shè)計平臺,是專為藝術(shù)家設(shè)計的程序語言,尤其適合于由程序控制的動畫開發(fā)。將Processing軟件用于機構(gòu)運動仿真,輔助《理論力學(xué)》課程中運動學(xué)部分的教學(xué),比傳統(tǒng)運動學(xué)仿真程序更簡潔高效。該軟件對學(xué)習(xí)其它程序設(shè)計語言也有幫助。

        關(guān)鍵詞關(guān)鍵詞:Processing;計算機輔助教學(xué);運動學(xué);機構(gòu)運動仿真;動畫

        DOIDOI:10.11907/rjdk.161228

        中圖分類號:G434

        文獻標識碼:A 文章編號:1672-7800(2016)008-0189-03

        作者簡介作者簡介:蔣寅軍(1973-),男,湖南長沙人,武漢大學(xué)土木建筑工程學(xué)院講師,研究方向為理論力學(xué)、結(jié)構(gòu)力學(xué)。

        0 引言

        Processing語言是由美國MIT(麻省理工學(xué)院)的Medialab研究室美學(xué)與計算機研究小組于2001年發(fā)布使用的用于視覺藝術(shù)及視覺化呈現(xiàn)的程序設(shè)計平臺,其設(shè)計初衷是作為一種簡單的編程教學(xué)語言替代Basic、Logo等編程語言,在電子藝術(shù)的環(huán)境下介紹程序語言,并將電子藝術(shù)的概念介紹給程序設(shè)計師[1-2]。

        Processing為藝術(shù)家和設(shè)計師所設(shè)計,具有以下特點:①簡單:用戶可以專注于圖形與交互程序的設(shè)計,而不需要考慮諸如編譯參數(shù)、路徑、圖形環(huán)境等任務(wù);②友好:Processing有非?;钴S的社區(qū)和用戶群,容易得到支持,版本更新也很快;③基礎(chǔ)性:只考慮靜態(tài)圖案;④活動性:直接形成動畫。

        Processing源于Java,因此其代碼遵守Java語言規(guī)范。Processing是綠色、開源的自由軟件, Windows系統(tǒng)使用的下載包只有108.32M,解壓即可使用,運行界面如圖1所示。

        《理論力學(xué)》課程由靜力學(xué)、運動學(xué)與動力學(xué)3部分組成,其中最難掌握的是運動學(xué)部分,對機構(gòu)運動分析不清楚直接導(dǎo)致速度、加速度分析的困難,進而影響動力學(xué)基本原理的應(yīng)用。運動學(xué)部分的教學(xué)需要直觀生動的工具演示機構(gòu)的運動情況,傳統(tǒng)的方法是教師運用C/C++、Fortran、Matlab、Flash等語言或軟件編制CAI教學(xué)程序,或運用UG、Solidworks等大型機械設(shè)計軟件進行機構(gòu)運動仿真,這兩種方法的缺點是:自編軟件數(shù)據(jù)結(jié)構(gòu)及算法復(fù)雜,動畫難以實現(xiàn);大型機械設(shè)計軟件操作復(fù)雜,價格昂貴;制作的CAI課件很難擴展與改動。筆者在接觸到Processing后,認為該軟件非常適于輔助理論力學(xué)運動學(xué)部分教學(xué),簡單的幾十行代碼就可以構(gòu)造一個機構(gòu)并使之運動,而且代碼的可重用性很好,稍加擴展就可構(gòu)成諸多常見機構(gòu)并生成動畫,值得推薦給理論力學(xué)任課教師使用。

        下面以《理論力學(xué)》課程中常見的曲柄搖桿機構(gòu)為例,說明利用processing軟件進行機構(gòu)運動仿真的應(yīng)用過程,見圖2。

        1 曲柄搖桿機構(gòu)運動仿真

        一個典型的Processing程序主要由setup()和draw()兩個函數(shù)組成:在setup()函數(shù)中完成圖像、動畫的設(shè)置(如屏幕尺寸、刷新頻率等),在draw()函數(shù)中實現(xiàn)動畫??梢远x其它子程序進行一些必須的參數(shù)計算和圖形繪制。

        1.1 物理模型分析

        Processing繪制動畫的策略是在屏幕上逐時刻繪制圖形圖像,因此首先分析機構(gòu)的物理構(gòu)成:圖2所示曲柄搖桿機構(gòu)由4類元件構(gòu)成:桿件(2根——OA、O1B)、基礎(chǔ)(在固定鉸支座中繪制)、固定鉸支座(2個——O、O1)、套筒(1個——A)。理論力學(xué)中的平面機構(gòu)基本都包含這些元件[3],也是機構(gòu)運動動畫圖形繪制的元素。

        1.2 元件繪制——可重用代碼

        繪制每個元件的子程序只需兩類參數(shù):位置參數(shù)(屏幕坐標x、y,方位角angle)、尺寸參數(shù)(長、寬、高等)。對于本例涉及的4類元件,其子程序詳見程序1。元件的不同組合可以構(gòu)成不同的機構(gòu),因此元件繪制代碼是可重用的。

        繪制元件有多種方式實現(xiàn),如桿件可以用兩點間的直線表示,但這無助于學(xué)生理解剛體的平面運動,若轉(zhuǎn)換為通過端點坐標和桿件與x軸的夾角來繪制,則更便于表示桿件隨基點的平動和繞基點的轉(zhuǎn)動。

        各子程序中使用了部分絕對尺寸,如固定鉸支座及套筒。也可以將這些物理量定義為子程序的參數(shù),由用戶在使用時指定,但這無疑會帶來程序編制和使用上的復(fù)雜性。

        程序1:components.pde——元件庫

        void bar(float x,float y,float leng,float angle){ //繪制桿件

        pushMatrix(); translate(x,y); rotate(radians(angle));

        line(0,0,leng,0);

        popMatrix();}

        void baseSupport(float x,float y,float leng,float angle){ //繪制基礎(chǔ)

        pushMatrix(); translate(x,y); rotate(radians(angle));

        line(-leng/2,0,leng/2,0);

        int n=int(leng/10);

        for (int i=0;i

        line(-leng/2+(i+1)*10,0,-leng/2+i*10,10); }

        popMatrix();}

        void fixHingeSupport(float x,float y,float angle){ //繪制固定鉸支座

        pushMatrix(); translate(x,y); rotate(radians(angle));

        this.baseSupport(0,20,40,0); //調(diào)用基礎(chǔ)繪制函數(shù)

        line(10,20,0,0);

        line(-10,20,0,0);

        ellipseMode(CENTER);

        ellipse(0,0,10,10);

        popMatrix(); }

        void sleeve(float x,float y,float angle){ //繪制套筒

        pushMatrix(); translate(x,y); rotate(radians(angle));

        rectMode(CENTER);

        rect(0,0,20,15);

        ellipseMode(CENTER);

        ellipse(0,0,10,10);

        popMatrix(); }

        1.3 整體機構(gòu)繪制——幾何約束條件

        一個機構(gòu)事實上是一系列受約束的點和剛體的集合,各元件必須滿足幾何約束條件(也可稱為幾何相容條件、幾何協(xié)調(diào)條件)。

        對于圖2所示的曲柄搖桿機構(gòu),根據(jù)幾何關(guān)系及已知條件可知:

        xO = const,yO = const,xO1 = const,yO1 = constxA = lOA cosθOA ,yA = lOA sinθOA ωOA = f(t),θOA = θOA t = 0 + ∫t0f(t)dtθO1 B = arctanlOA cosθOA dOO1 -lOA sinθOA -π2

        其中:xO、yO、xO1、yO1、xA、yA分別為O、O1、A點的x、y坐標;lOA為OA桿的長度;θOA、θO1B分別為OA、O1B桿與x軸的夾角;ωOA為OA桿的角速度,其隨時間變化的規(guī)律f(t)通常是已知的;θOA t = 0 為OA桿在t=0時刻與x軸的夾角;dOO1為O、O1兩支座間的距離。

        考慮上述幾何約束條件,利用之前構(gòu)建的可重用元件代碼,即可寫出繪制整個曲柄搖桿機構(gòu)的子程序crank_rocker()(見程序2)。該子程序主要包含3個部分:①已知參數(shù)賦值,如各桿長度、支座間距等;②與時間有關(guān)的參數(shù)計算,如搖桿角度、套筒位置等,其中搖桿角度ang1的計算是實現(xiàn)幾何相容的關(guān)鍵;③繪制元件;④更新位置,如在曲柄的轉(zhuǎn)角上疊加一個增量。

        程序2:crank_rocker.pde——繪制曲柄搖桿機構(gòu)

        void crank_rocker (float x0,float y0,float angle){ //繪制曲柄搖桿機構(gòu)

        pushMatrix(); translate(x0,y0); rotate(radians(angle));

        float len0=100; //已知參數(shù)賦值

        float len1=300;

        float dis12=150;

        float ang1=-90+degrees(atan(len0*(cos(radians(ang0)))/(dis12-len0*sin(radians(ang0)))));

        //參數(shù)計算

        float xs=len0*cos(radians(ang0));

        float ys=len0*sin(radians(ang0));

        fixHingeSupport(0,0,0); //繪制元件

        fixHingeSupport(0,dis12,0);

        bar(0,0,len0,ang0);

        bar(0,dis12,len1,ang1);

        sleeve(xs,ys,ang1);

        ang0=ang0+omega0; //更新位置

        popMatrix(); }

        1.4 動畫實現(xiàn)

        在draw()函數(shù)中調(diào)用函數(shù)crank_rocker()即可產(chǎn)生動畫(見程序3)。曲柄初始角度(ang0)、屏幕刷新率(framerate)以及曲柄的角速度(omega0)則作為全局變量指定。需要將main.pde、crank_rocker.pde、main.pde置于同一文件夾下,或者將它們合并為一個文件。

        程序3:main.pde——主程序

        float ang0=0; //曲柄初始角度

        int framerate=30; //屏幕刷新率(Hz)

        float omega0=30./float(framerate); //角速度(度/秒)/屏幕刷新率

        void setup() {

        size(800,600); //屏幕尺寸

        frameRate(framerate); /*屏幕刷新率(Hz)*/ }

        void draw() {

        background(255); //背景顏色

        crank_rocker (400,350,0); /*繪制機構(gòu)*/ }

        2 Processing程序簡潔性

        整個機構(gòu)運動過程的模擬,只需要定義setup()、draw()和5個構(gòu)件繪制子程序(其中4個為可重用元件代碼,在編制其它機構(gòu)仿真程序時還可以使用),思路明確、代碼結(jié)構(gòu)清晰。元件庫代碼由教師給出,學(xué)生練習(xí)時把重點放在具體的機構(gòu)繪制子程序上,代碼量小,可即學(xué)即用。各元件運動學(xué)參數(shù)的幾何相容是實現(xiàn)機構(gòu)運動仿真的關(guān)鍵,對于學(xué)生理解和掌握點和剛體的運動尤其重要。在掌握Processing程序的基本結(jié)構(gòu)和語法后,幾個小時就可以寫出一個運行良好的機構(gòu)運動仿真程序,非常高效。

        用Processing進行平面機構(gòu)運動仿真簡潔高效的原因是其封裝了坐標變換函數(shù),能方便地實現(xiàn)動畫?!独碚摿W(xué)》課程的運動學(xué)部分主要包括點的運動學(xué)和剛體的運動學(xué),其中剛體的運動包含了點的運動,剛體的平面運動是其中最復(fù)雜、最難以理解和想象的內(nèi)容。剛體的平面運動可以分解為隨基點的平動和繞基點定軸轉(zhuǎn)動的合成,Processing中的translate()函數(shù)和rotate()函數(shù)對應(yīng)著這兩種運動。配對使用pushMatrix()和popMatrix()函數(shù)則構(gòu)造了一個局部坐標系,利用pushMatrix()和popMatrix()函數(shù)可以在屏幕任意區(qū)域繪圖而不用考慮坐標系的轉(zhuǎn)換。在使用C/C++、Fortran、Matlab、Flash等語言編程時,坐標變換和對時間積分是最繁瑣的部分,Processing通過封裝函數(shù)非常巧妙而簡單地實現(xiàn)了這兩個功能,本文中的子程序都是利用這4個函數(shù)實現(xiàn)的。

        需要注意的是:①Processing默認的坐標原點在屏幕左上角,x軸以向右為正,y軸以向下為正,轉(zhuǎn)角以順時針方向為正,參見圖2,需要注意編程時選取的元件繪圖參數(shù)是否適當(dāng);②各元件的位置直接由運動方程顯式給出。當(dāng)運動方程復(fù)雜時,可能需要編寫求解程序或引入數(shù)學(xué)工具包進行求解,這時就必須引入MATLAB等數(shù)學(xué)軟件[4];③要給出各元件位置變化的迭代公式(如crank_rocker()函數(shù)中的ang0=ang0+omega0),否則無法實現(xiàn)動畫;④程序中角度值默認使用弧度為單位,如果需要按度計算,可通過degrees()和radians()這兩個函數(shù)進行轉(zhuǎn)換;⑤為了展示簡潔性,本文中的代碼對繪圖沒有進行任何美化。實際應(yīng)用中,通過控制色彩、畫筆和渲染引擎,可將機構(gòu)繪制得更美觀,甚至實現(xiàn)三維動畫仿真。

        3 結(jié)語

        運動學(xué)是理論力學(xué)課程的重點與難點,機構(gòu)運動學(xué)仿真是實現(xiàn)理論力學(xué)CAI教學(xué)的關(guān)鍵。開源、自由軟件Processing的使用,可快速實現(xiàn)機構(gòu)運動學(xué)仿真與可視化,簡單高效。Processing簡單、形象、有趣,一些基本的編程訓(xùn)練對于力學(xué)、機械、土木類各專業(yè)后續(xù)計算機語言的學(xué)習(xí)和編程能力的提高都大有裨益。結(jié)合Processing和一些物理函數(shù)庫,還可擴展到理論力學(xué)課程教學(xué)各環(huán)節(jié)。

        參考文獻:

        [1] 苗彬,候燕.基于Moodle云的C語言輔助教學(xué)平臺設(shè)計[J].軟件導(dǎo)刊,2014(5):7-9.

        [2] 列阿斯.愛上Processing[M].第2版.北京:人民郵電出版社,2014.

        [3] 王鐸.理論力學(xué) [M].第7版.北京:高等教育出版社,2009.

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

        (責(zé)任編輯:杜能鋼)

        猜你喜歡
        計算機輔助教學(xué)運動學(xué)動畫
        做個動畫給你看
        動畫發(fā)展史
        基于MATLAB的6R機器人逆運動學(xué)求解分析
        我的動畫夢
        文苑(2019年22期)2019-12-07 05:28:56
        基于D-H法的5-DOF串并聯(lián)機床運動學(xué)分析
        當(dāng)前計算機輔助教學(xué)的實踐與思考
        成才之路(2016年36期)2016-12-12 13:02:32
        計算機輔助教學(xué)在中學(xué)美術(shù)教學(xué)中的應(yīng)用
        《線性代數(shù)》計算機輔助教學(xué)初探
        計算機輔助教學(xué)網(wǎng)站設(shè)計與實現(xiàn)
        我是動畫迷
        国产在线观看女主播户外| 99这里只有精品| 无码一区东京热| 亚洲一区二区在线视频,| 国产在线一区二区三区四区不卡| 中文无码伦av中文字幕| 亚洲巨乳自拍在线视频| 亚洲www视频| 日本午夜理论一区二区在线观看 | 精品少妇一区二区av免费观看| 毛片无码国产| 国产精美视频| 国产亚洲亚洲精品视频| 国产精品亚洲二区在线看| 女女互揉吃奶揉到高潮视频| 欧美亚洲日韩国产区| 国产av乳头久久一区| 上海熟女av黑人在线播放| 无人高清电视剧在线观看| 亚洲一区综合精品狠狠爱| av有码在线一区二区| 亚洲国产精品亚洲一区二区三区| 极品新婚夜少妇真紧| 国产在线无码免费视频2021| 国产风骚主播视频一区二区| 国产高清在线精品一区app| 国产精品天天在线午夜更新| 2020国产精品久久久久| 蜜臀av一区二区三区| 久久精品中文闷骚内射| 亚洲av无码资源在线观看 | 国产午夜精品综合久久久| 丰满人妻被两个按摩师| 2019年92午夜视频福利| 久久亚洲中文字幕精品一区四| 国产不卡视频在线观看| 精品人妻午夜一区二区三区四区| 另类欧美亚洲| 国产av精品一区二区三区视频| 香港三级午夜理论三级| 97免费人妻在线视频|