• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      Processing軟件在輔助教學中的應用

      2017-03-31 19:00:36蔣寅軍鄒良浩
      軟件導刊 2016年8期
      關鍵詞:計算機輔助教學運動學動畫

      蔣寅軍+鄒良浩

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

      關鍵詞關鍵詞:Processing;計算機輔助教學;運動學;機構運動仿真;動畫

      DOIDOI:10.11907/rjdk.161228

      中圖分類號:G434

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

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

      0 引言

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

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

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

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

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

      1 曲柄搖桿機構運動仿真

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

      1.1 物理模型分析

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

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

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

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

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

      程序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){ //繪制基礎

      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); //調用基礎繪制函數(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 整體機構繪制——幾何約束條件

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

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

      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兩支座間的距離。

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

      程序2:crank_rocker.pde——繪制曲柄搖桿機構

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

      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ù)中調用函數(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); /*繪制機構*/ }

      2 Processing程序簡潔性

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

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

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

      3 結語

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

      參考文獻:

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

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

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

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

      (責任編輯:杜能鋼)

      猜你喜歡
      計算機輔助教學運動學動畫
      做個動畫給你看
      動畫發(fā)展史
      基于MATLAB的6R機器人逆運動學求解分析
      我的動畫夢
      文苑(2019年22期)2019-12-07 05:28:56
      基于D-H法的5-DOF串并聯(lián)機床運動學分析
      當前計算機輔助教學的實踐與思考
      成才之路(2016年36期)2016-12-12 13:02:32
      計算機輔助教學在中學美術教學中的應用
      《線性代數(shù)》計算機輔助教學初探
      計算機輔助教學網(wǎng)站設計與實現(xiàn)
      軟件導刊(2016年9期)2016-11-07 21:42:02
      我是動畫迷
      學生天地(2016年9期)2016-05-17 05:45:06
      西乌| 新巴尔虎左旗| 元谋县| 西林县| 普定县| 吉安市| 青冈县| 常宁市| 云梦县| 丰都县| 丹巴县| 石嘴山市| 依安县| 桦南县| 长宁区| 应城市| 正阳县| 彭州市| 高陵县| 大港区| 灵宝市| 达日县| 都兰县| 玉龙| 阆中市| 沅江市| 灌云县| 辽宁省| 固原市| 霍山县| 迁西县| 孙吴县| 桂阳县| 洪江市| 罗源县| 通江县| 纳雍县| 安陆市| 丰镇市| 宣恩县| 巩留县|