999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于FLASH AS 3的曲柄搖桿機構動畫制作與分析

2015-05-30 12:11:16邵永錄

邵永錄

摘要:本文從機械設計課程教學的實際出發,結合FLASH動畫技術的應用,研究了機械設計課程當中曲柄搖桿機構中難以理解的結構與運動關系,并分析了具體的動畫制作過程。

關鍵詞:腳本語言? 動畫制作? 曲柄搖桿機構? 運動分析

1 基礎知識認知

1.1 素材獲取

用于制作縮放的圖片文件應該是矢量圖,文件可以使用矢量圖軟件制作而獲取,常用FALSH自身所具備的繪圖工具就可以完成相關的素材獲取,將獲取的圖形對象修改為影片剪輯。

1.2 腳本語言基礎

本次研究以Flash Action Script3.0為語言基礎。先介紹相關圖形對象的屬性。

.x——相對于父級影片剪輯的本地坐標的x坐標。如果影片剪輯在主時間軸中,則其坐標系統將舞臺的左上角指定為(0,0)。

.y——相對于父級影片剪輯的本地坐標的y坐標。如果影片剪輯在主時間軸中,則其坐標系統將舞臺的左上角指定為(0,0)。

.rotation——確定影片剪輯從注冊點開始的影片剪輯旋轉的角度。

Math.sin()——正弦三角函數,單位為弧度。

Math.asin()——反正弦三角函數,單位為角度。

Maht.pow()——此函數為求一個數a的b次冪,如:Maht.pow(a,b)。

Graphics.moveTo(x,y)——繪制直線的起點。

Graphics.lineTo(x,y)——繪制直線的停止點。

Graphics.lineStyle (6,0x00ffff,1,true,"")——指定一種線條樣式以用于隨后對直線或圓等繪制時的線寬、顏色等。

Graphics.clear()——清除直線、圓等圖形;本文中用于清除上一次創建的直線圖形對象。

SetTimeout(myclear,20)——用于延時功能的函數。

setInterval()——setInterval函數的作用是在播放動畫的時候,每隔一定時間就調用一次參數。

ClearInterval(sh)——用于清除setInterval()函數的調用循環。

1.3 四桿機構中曲柄、連桿與搖桿間的角度關系

使用平面幾何三角圖形中的余弦定理與反余弦函數,則可建立機構運動中的各個角度關系。

c2=a2+b2-2abcosC

C=arccos[(a2+b2-c2)/2ab]

2 動畫制作過程研究

2.1 初始化舞臺環境

首先,設置舞臺尺寸為550×400像素,然后聲明四個桿件的長度與四個桿件各自注冊點(坐標參考點)的坐標;即分別為37.5,125,200,

235.75,且將四個桿的注冊點坐標設置為“ax,ay”,“bx,by”,“cx,cy”,“dx,dy”,再設置b與c桿鉸接點坐標為“cx2,cy2”。

參照原四桿機構固定支點位置,設置初始兩點坐標。如設計曲柄注冊點(回轉中心為“200,100”),則搖桿回轉支點坐標為(325,300),在時間軸第一幀處寫入初始化腳本程序如下:

var a:Number = 37.5;//定義a桿及其長度;

var b :Number = 125; //定義b桿及其長度;

var c:Number = 200; //定義c桿及其長度;

var d :Number = 235.75; //定義d桿及其長度;

ax:Number = 150; //定義a桿注冊點x坐標;

ay:Number = 150; //定義a桿注冊點y坐標;

bx:Number; //定義b桿注冊點x坐標;

by:Number; //定義b桿注冊點y坐標;

cx:Number = 375; //定義c桿注冊點x坐標;

cy:Number = 350; //定義c桿注冊點y坐標;

cx2:Number ; //定義b與c桿鉸接點x坐標;

cy2:Number;? //定義b與c桿鉸接點y坐標;s

曲柄的定角轉動程序如下:

var jd:Number = 0

function aa()

{

jd = jd +5;

jd %=? 360;

……

}

setInterval(aa,10);

2.2 求取各注冊點坐標公式

曲柄a的注冊點采取給定方式,根據舞臺大小,自行確定其坐標。

ax=150

ay=150

連桿b的注冊點位置由曲柄的與連桿連接端決定,角度通過余弦定理與反余弦求解而出,程序如下:

bx= ax+a*Math.cos(jd*Math.PI/180);

by =ay-a*Math.sin(jd*Math.PI/180);

搖桿c的注冊點位置由連架桿的固定端點決定,程序如下:

cx=ax+d;

cy=ay;

連架桿d的注冊點與曲柄a的注冊點重合,所以坐標與a曲柄的注冊點坐標相同。

ax=dx=150

ay=dy=150

要求取b與c兩桿的交點坐標,就必須使用余弦定理與反三角函數,推動過程較復雜,此處僅列出相應的代碼程序。

e=Math.sqrt(Math.pow(a,2)+Math.pow(d,2)-2*

a*d*Math.cos(jd*Math.PI/180));

wj=Math.acos((Math.pow(e,2)+Math.pow(d,2)-Math.pow(a,2))/(2*e*d))*180/Math.PI;

kj=Math.acos((Math.pow(b,2)+Math.pow(e,2)-Math.pow(c, 2))/(2*b*e))*180/Math.PI;

如果就這樣直接獲取a桿與c桿的轉角還是會發生錯誤的。原因在于當曲柄旋轉時,會造成與連架桿的夾角時而為正,時而為負。

腳本制作中,采用IF()語句來分別判斷曲柄旋轉過程中對連桿b與水平正向的夾角受到連桿與BD連線夾角KJ,以及AD與BD夾角WJ的不同影響關系。

if (jd<=180){

w =? kj- wj;

}else{

w =? wj+ kj;

}

cx2 = bx+b * Math.cos(w*Math.PI/180);

cy2 = by-b * Math.sin(w*Math.PI/180);

2.3 繪制曲柄搖桿機構圖形

此曲柄搖桿機構采用Action Script 3的Graphics繪制圖形命令來進行,具體繪制四桿程序如下:

var lina:Shape=new Shape();

lina.graphics.moveTo(ax,ay);

lina.graphics.lineStyle(6,0x00ffff,1,true,"");

lina.graphics.lineTo(bx,by);

addChild(lina);//曲柄a

var linb:Shape=new Shape();

linb.graphics.moveTo(bx,by);

linb.graphics.lineStyle(6,0xffff00,1,true,"");

linb.graphics.lineTo(cx2,cy2);

addChild(linb);//連桿b

var linc:Shape=new Shape();

linc.graphics.moveTo(cx,cy);

linc.graphics.lineStyle(6,0x00ff00,1,true,"");

linc.graphics.lineTo(cx2,cy2);

addChild(linc);//搖桿c

var lind:Shape=new Shape();

lind.graphics.moveTo(ax,ay);

lind.graphics.lineStyle(6,0xff0000,1,true,"");

lind.graphics.lineTo(dx,dy);

addChild(lind);//連架桿d

接下來繪制4個注冊點(也稱鉸接點)。

var cir1:Shape=new Shape();

cir1.graphics.beginFill(0xff0ff0);

cir1.graphics.drawCircle(ax,ay,6);

cir1.graphics.endFill();

addChild(cir1);//圓a

var cir2:Shape=new Shape();

cir2.graphics.beginFill(0xff0ff0);

cir2.graphics.drawCircle(bx,by,6);

cir2.graphics.endFill();

addChild(cir2);//圓b

var cir3:Shape=new Shape();

cir3.graphics.beginFill(0xff0ff0);

cir3.graphics.drawCircle(cx2,cy2,6);

cir3.graphics.endFill();

addChild(cir3);//圓c

var cir4:Shape=new Shape();

cir4.graphics.beginFill(0xff0ff0);

cir4.graphics.drawCircle(cx,cy,6);

cir4.graphics.endFill();

addChild(cir4);//圓d

2.4 動態曲柄搖桿機構的獲取

延時清除與使用setInterval()每隔一定時間調用一次自定義函數aa(),注意將setTimeout()的時間與setInterval()的時間設置成相同值,從而保證桿件轉動效果的連貫性。

setTimeout(myclear,20);//延時函數

function myclear()

{//延時清除畫線!

lina.graphics.clear();

linb.graphics.clear();

linc.graphics.clear();

lind.graphics.clear();

cir2.graphics.clear();

cir3.graphics.clear();

cir1.graphics.clear();

cir4.graphics.clear();

}

}//以上程序內容全部在自定義函數aa()當中。

接下來便是使用setInterval()函數來按時調用aa()自定義函數,程序設置如下。

sh = setInterval(aa,20);

2.5 影片輸出與應用

將Flash文件導出生成.swf格式動畫文件,然后就可以在PowerPoint軟件下的控制工具箱中的Shockware Flash Object將此動畫文件導入到PPT中。播放PPT,就可以更好地為課堂教學服務了。

3 總結

利用Flash Action Script3.0強大的腳本語言工具,結合相關的機械設計原理知識,全部使用腳本代碼程序,可以制作出清晰、精彩的機械機構動畫文件。

參考文獻:

[1]陳志民.Adobe創意大學Flash CS6標準教材[M].北京希望電子出版社,2013.4.

[2]張佳麗.Flash CS6中文版動畫制作標準教程[M].中國青年出版社,2013.7.

[3]嚴嚴.Flash CS6中文版完全學習手冊[M].人民郵電出版社,2013.3.

主站蜘蛛池模板: 亚洲第一黄片大全| 香蕉精品在线| 国产一区二区三区在线观看视频| 日韩欧美中文字幕在线精品| 色婷婷狠狠干| 国产91色在线| 免费看a毛片| 国产精品女在线观看| 亚洲日韩高清无码| 无码福利日韩神码福利片| 国产精品尤物铁牛tv| 色欲色欲久久综合网| 亚洲国产日韩一区| 麻豆a级片| 天堂av综合网| 日韩无码黄色| 国产福利影院在线观看| 99久久这里只精品麻豆| 久久永久精品免费视频| 国产丝袜丝视频在线观看| 视频国产精品丝袜第一页| 亚洲人网站| 久久情精品国产品免费| 九色免费视频| 国产一级二级三级毛片| 国产精品yjizz视频网一二区| 国产特一级毛片| 国产在线观看精品| 2021精品国产自在现线看| 久久中文字幕2021精品| 黄色免费在线网址| 污视频日本| 91精品aⅴ无码中文字字幕蜜桃| 欧美天堂久久| 无码日韩精品91超碰| 亚洲成a人片在线观看88| 波多野结衣一区二区三区88| 久草性视频| 亚瑟天堂久久一区二区影院| 亚洲αv毛片| 亚洲国产高清精品线久久| 久久天天躁狠狠躁夜夜躁| 在线观看的黄网| 久久久噜噜噜| 国产乱视频网站| 国产又色又刺激高潮免费看| 99久久人妻精品免费二区| 欧美三级日韩三级| 免费黄色国产视频| 亚洲三级色| 日韩二区三区| 欧美国产日韩在线播放| 精品国产Av电影无码久久久| 在线精品欧美日韩| 国产91精品调教在线播放| 久久亚洲国产最新网站| 成人在线观看一区| 国产精品深爱在线| 无码AV高清毛片中国一级毛片| 国产日韩久久久久无码精品| 国产在线精品99一区不卡| 国产自无码视频在线观看| 日本精品影院| 欧美精品啪啪| 国产啪在线91| 欧美精品亚洲精品日韩专| 欧洲在线免费视频| 激情爆乳一区二区| 国产亚洲精久久久久久无码AV| 色男人的天堂久久综合| 狠狠综合久久| 国产激情无码一区二区三区免费| 伊在人亚洲香蕉精品播放| 九色视频最新网址 | 99九九成人免费视频精品| 中文字幕免费在线视频| 久久香蕉国产线看精品| 特黄日韩免费一区二区三区| …亚洲 欧洲 另类 春色| 久久国产精品77777| 91久久国产热精品免费| 久久视精品|