史都華平台與地震屋模擬.PDF

Similar documents
ii

厨房小知识(四)

妇女更年期保健.doc

小儿传染病防治(上)

<4D F736F F D B875B9B5A448ADFBBADEB27AA740B77EA4E2A5555FA95EAED6A641ADD75F2E646F63>

女性青春期保健(下).doc

避孕知识(下).doc

孕妇饮食调养(下).doc

禽畜饲料配制技术(一).doc

中老年保健必读(十一).doc

i

怎样使孩子更加聪明健康(七).doc

i

二零零六年一月二十三日會議

马太亨利完整圣经注释—雅歌

(i) (ii) (iii) (iv) 380,000 [ ] , , % % % 5.5% 6.5%

I

(Chi)_.indb

14A 0.1%5% 14A 14A

穨_2_.PDF

女性减肥健身(四).doc

新时期共青团工作实务全书(三十九)

Microsoft Word - 08 单元一儿童文学理论

第三章

nb.PDF

bnbqw.PDF

1. 本文首段的主要作用是 A. 指出 異蛇 的藥用功效 說明 永之人爭奔走焉 的原因 B. 突出 異蛇 的毒性 為下文 幾死者數矣 作鋪墊 C. 交代以蛇賦稅的背景 引起下文蔣氏有關捕蛇的敘述 2. 本文首段從三方面突出蛇的 異 下列哪一項不屬其中之一 A. 顏色之異 B. 動作之異 C. 毒性之

項 訴 求 在 考 慮 到 整 體 的 財 政 承 擔 以 及 資 源 分 配 的 公 平 性 下, 政 府 採 取 了 較 簡 單 直 接 的 一 次 性 減 稅 和 增 加 免 稅 額 方 式, 以 回 應 中 產 家 庭 的 不 同 訴 求 ( 三 ) 取 消 外 傭 徵 費 6. 行 政 長

(f) (g) (h) (ii) (iii) (a) (b) (c) (d) 208

untitled

Microsoft Word - 發布版---規範_全文_.doc

概 述 随 着 中 国 高 等 教 育 数 量 扩 张 目 标 的 逐 步 实 现, 提 高 教 育 质 量 的 重 要 性 日 益 凸 显 发 布 高 校 毕 业 生 就 业 质 量 年 度 报 告, 是 高 等 学 校 建 立 健 全 就 业 状 况 反 馈 机 制 引 导 高 校 优 化 招

鱼类丰产养殖技术(二).doc

疾病诊治实务(一)

名人养生.doc

<4D F736F F D2040B9C5B871A661B0CFABC8AE61C2A7AB55ACE3A8735FA7F5ABD8BFB3B9C5B871A661B0CFABC8AE61C2A7AB55ACE3A8732E646F63>


中老年保健必读(十).doc

27 i

% % ,542 12,336 14,53 16,165 18,934 22,698 25, ,557 7,48 8,877 11, 13,732 17,283 22,

海淀区、房山区(四)

穨ecr1_c.PDF

穨2005_-c.PDF

北京理工大学.doc

尲㐵.⸮⸮⸮⸮⸮

东城区(下)

果树高产栽培技术(一).doc

物质结构_二_.doc

第一節 研究動機與目的

i

水力发电(九)

中国古代文学家(八).doc

景观植物(一)

Microsoft Word - 目录.doc

园林植物卷(三).doc

19q indd

厨房小知识_一_

中南财经大学(七).doc


赵飞燕外传、四美艳史演义

厨房小知识(五)

最新监察执法全书(十八).doc

园林植物卷(十二).doc

华东师范大学.doc

國立中山大學學位論文典藏

乳业竞争_一_

最新执法工作手册(十).doc

untitled

最新执法工作手册(十六)

中国政法大学(六).doc

胎儿健康成长.doc

Microsoft Word - edu-re~1.doc

南華大學數位論文

Microsoft Word 一年級散文教案.doc

米食天地教案

第32回独立行政法人評価委員会日本貿易保険部会 資料1-1 平成22年度財務諸表等

(i) (4)0.10 (1) 0.40 (ii) (iii) (i) (ii) ,000,000125,000,000 1,250,000, (iv) 3,750,000, ,000,000 1,250,000,00

13 3 8,223,074 5,292,504 (7,721,024) (4,903,705) 502, , , ,700 (11,722) (13,170) (120,481) (124,884) 2,680 3,052 5 (60,396) (100,56

奥运档案(三).doc

通州区、密云县、大兴区(一)

锦州港年度报告全文.PDF

第 2 頁 (a) 擔 任 機 場 擴 建 統 籌 辦 總 監 的 首 席 政 府 工 程 師 職 位 第 3 點 ) ; (b) 擔 任 ( 機 場 擴 建 統 籌 辦 ) 的 首 長 級 丙 級 政 務 官 職 位 ; 以 及 (c) 擔 任 總 助 理 ( 機 場 擴 建 統 籌 辦 ) 的

南華大學數位論文

商业采购条款和条件

cgn

C/C++ - 函数

II

39898.indb

穨ecr2_c.PDF

電腦相關罪行跨部門工作小組-報告書

i

发展党员工作手册

i

香 港 舞 蹈 總 會    北 京 舞 蹈 學 院

中医疗法(上).doc

扬州大学(上)

Microsoft Word - EDB Panel Paper 2016 (Chi)_finalr

村 地 区 的 老 年 人 口 抚 养 比 会 达 到 34.4%, 而 城 镇 地 区 则 为 21.1% 随 着 人 口 年 龄 结 构 的 转 型 以 及 农 村 年 轻 人 口 不 断 往 城 市 迁 移, 农 村 家 庭 未 来 为 老 年 人 提 供 养 老 保 障 的 压 力 会 越

Microsoft Word - 中三選科指南 2014 subject

<4D F736F F D205B345DB5D8AE4CACD AECAAFC5C1C9C1DCBDD0AB48A4CEB3F8A657AAED>

Transcription:

Stewart Platform and Simlation of Earthquake Room

I

3D Studio Max 3D Studio Max II

The purpose of this speial subjet is to simulate the senario of the earthquakee by using 3D Studio Max and Stewart platform it is our goal to aomplish the building of the earthquake room. Continue the researh of the Stewart platform system we try to investigate the generation of earthquake senery and integrate to the platform system.in this program tasks have been shared into two parts one is looking for the data of earthquake the other is to generate the senario of earthquake.finally we tune the ation of the platform to math the senery of the earthquake. III

1-1 3 1-2.7 1-3 1-4 1-5 1-6 2-1 2-2 2-3 2-4 2-5 2-6 2-7 3-1 3D 3-23D 3-3 3-4 3-5 4-1Open GL 4-2 4-3 4-4 IV

1-1 JMA 4 1-2 SI 4 1-3.5 1-4.6 2-1 17 V

1

2

S t e f t f t t / ( ) [1 sin(2 m )]sin(2 ) f T 1/ m m f 3

log A m M 1.73log 3.17 Am M log T 0.82 0.22M m C ( t) A sin2 f t A C fa C 2 2 4 2 f A M 4.85 0.5M k M M k 1-1 4

T 1 SI S V dt T S V 0 1-2 2 2 4 f A 2 fa 2 f f 1 2 f 1 392 1.006 H Z 2 62 f 1 24.5 0.599 H Z 2 6.5 5

1-3 1-4 6

1-2 1-3 7

1-4 1-5 1-6 8

9 2-1

2-3 2-2 10

2-4 11

12 Cartesian Joint Spae p v p p z y x T R z y x T Z Y X 1 1 0 1 1 s s s s s s s s s s s s s s s s s s s s s R R R R X Y Z 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0,,, T v z y x T 1 ~ 6 i, i P v i P R T P 6 1~ i, i i i B P S, 1 ~ 6 i S S S i i i i

y R 1 VI 1716.35 2 6.22 * 10 s 4.782 *10 4 2 s 1 1 s 1 PM -5 V I 6.22*10 1716.35 4 2 2 s 4.782*10 s 1 60( ma) 1716.35( m / s) 10.2981( m / s) VI * 10( V ) 1( A) 1( V ) 10( V ) PM 360( m) 1( V ) 36( m) 13

14

2-6 2-7 15

16

17-1

3.1 3-1 18

3.2 3-2 19

3-3 20

3-4 21

3-5 22

Open GL Open GL Open GL Open GL C C++ runtime library Open GL Open GL API Windows API Internet Open GL 3D Open GL CAD 3D API Mirosoft Windows 3D Open GL Open GL API(Appliation Programming Interfae Open GL Open GL C C++ Open GL Open GL Open GL Windows GDI 23

API, Open GL C (alling onvention) C C C API Open GL OpenGL (proedual desriptive API 200 OpenGL OpenGL Mirosoft Windows) bitmap OpenGL OpenGL Open GL Open GL Silion Graphis IRIS GL. IRIS 3D API. (3D depth SGI IRIS GL 24

OpenGL IRIS GL API GL 25

4-1 4-2 26

4-3 27

(Ambient) (Diffuse) (Speular) (Emitted) 4-4 28

29

MAX : 3D STUDIO MAX R2.X 1998Club, V. N. (Club, V. N.) 3D Studio max R2 1998 MAX : 3D Studio MAX R2.5 1998Club, V.N. 3D Studio MAX R2.5 1998 3D Studio MAX 2 1998Carbonaro, Greg (Carbonaro, Greg) 3D Studio MAX 2.X 1998 3D STUDIO MAX FOR WINDOWSNT 1997 3D Studio max 1997 3D Studio MAX 1997 3D Studio MAX 1997 3D Studio : 3DS 1994 : 3D STUDIO 1991 30

#inlude <math.h> #inlude <stdio.h> #inlude <graphis.h> #inlude <onio.h> #inlude <bios.h> #inlude <dos.h> #inlude <stdarg.h> #inlude <iostream.h> #inlude "inverse.h" #define PI 3.1415926 int grid[32],gridnew[32],sidegrid[32]; matrix R(1,0,0,0,1,0,0,0,1),RT,Rnew; vetor p1(-52.5,90.94,-89.5),p2(105,0,-89.5),p3(-52.5,-90.94,-89.5); vetor pp1(-52.5,90.94,0),pp2(105,0,0),pp3(-52.5,-90.94,0); vetor p1new,p2new,p3new,p1p,p2p,tv(0,0,-89.5),tvnew,temptv; vetor b1(-122.5,24.65,0),b2(39.9,118.4,0),b3(82.6,93.75,0); vetor b4(82.6,-93.75,0),b5(39.9,-118.4,0),b6(-122.5,-24.65,0); float a0,as0,a2,as2,a3,as3,a1=0,a2=0,a3=0; float rolldeg,pithdeg,yawdeg,fm,f; void main(void) { int i,k=0,vgadriver=detect,vgamode; void Inversekine(void); void invgraph(void); void seteular(void); void settv(void); void nextatt(void); 31

sidegrid[0]=195; sidegrid[1]=195; sidegrid[2]=160; sidegrid[3]=170; sidegrid[4]=125; sidegrid[5]=195; sidegrid[6]=125; sidegrid[7]=250; sidegrid[8]=195; sidegrid[9]=250; sidegrid[10]=195; sidegrid[11]=195; sidegrid[12]=125; sidegrid[13]=195; sidegrid[14]=125; sidegrid[15]=250; sidegrid[16]=150; sidegrid[17]=250; sidegrid[18]=150; sidegrid[19]=230; sidegrid[20]=170; sidegrid[21]=230; sidegrid[22]=170; sidegrid[23]=250; sidegrid[24]=195; sidegrid[25]=250; sidegrid[26]=195; sidegrid[27]=195; sidegrid[28]=125; sidegrid[29]=195; sidegrid[30]=125; sidegrid[31]=250; for(i=0;i<32;i++) { grid[i]=sidegrid[i]; gridnew[i]=sidegrid[i]; } initgraph(&vgadriver,&vgamode,""); while(1) { settextstyle(small_font,horiz_dir,4); setfillstyle(solid_fill,green); bar(0,0,639,479); setfillstyle(solid_fill,white); bar(10,135,320,365); 32

setolor(black); setlinestyle(solid_line,1,thick_width); retangle(8,133,322,367); setfillstyle(solid_fill,white); bar(330,135,630,365); setolor(black); setlinestyle(solid_line,1,thick_width); retangle(328,133,632,367); setlinestyle(dotted_line,1,1); line(160,136,160,364); line(11,250,319,250); setlinestyle(dotted_line,1,1); line(480,136,480,364); line(331,313,630,313); line(331,223,630,223); setolor(black); moveto(425,455); settextstyle(triplex_font,horiz_dir,4); outtext("earthquake Room Simulation"); if(k==0) { p1new=p1; p2new=p2; k=1; } setolor(red); setlinestyle(solid_line,1,thick_width); setfillstyle(solid_fill,black); drawpoly(16,gridnew); 33

invgraph(); seteular(); /**/ settv(); /**/ } } void Inversekine(void) { a1=pithdeg/180*pi; a2=yawdeg/180*pi; a3=rolldeg/180*pi; a0=os(a1); as0=sin(a1); a2=os(a2); as2=sin(a2); a3=os(a3); as3=sin(a3); Rnew.setdata(0,0,os(a1)*os(a2)); Rnew.setdata(1,0,os(a1)*sin(a2)); Rnew.setdata(2,0,-sin(a1)); Rnew.setdata(0,1,sin(a3)*sin(a1)*os(a2)-os(a3)*sin(a2)); Rnew.setdata(1,1,os(a1)*os(a2)+sin(a3)*sin(a1)*sin(a2)); Rnew.setdata(2,1,sin(a3)*os(a1)); Rnew.setdata(0,2,sin(a3)*sin(a2)+os(a3)*sin(a1)*os(a2)); Rnew.setdata(1,2,os(a3)*sin(a1)*sin(a2)-sin(a3)*os(a2)); Rnew.setdata(2,2,os(a3)*os(a1)); Rnew.normalize(); /**/ RT=Rnew.transpose(); /* matrix */ p1new=tvnew+ve_mtr(pp1,rt); p2new=tvnew+ve_mtr(pp2,rt); p3new=tvnew+ve_mtr(pp3,rt); 34

} void invgraph(void) { int b31x1,b31x3,px1,px2,py1,py2; setfillstyle(solid_fill,blue); b31x3=480-b3.putdata(0)-28; b31x1=480-b1.putdata(0)+25; bar(b31x3,311,b31x1,315); px2=480-p2new.putdata(0); px1=480-p1new.putdata(0); py2=313+p2new.putdata(2); /* z-axil display in y-plane */ py1=313+p1new.putdata(2); setolor(red); setlinestyle(solid_line,1,norm_width); line(px2,py2-2,px1,py1-2); line(px1,py1-2,px1,py1+2); line(px1,py1+2,px2,py2+2); line(px2,py2+2,px2,py2-2); setfillstyle(solid_fill,blue); floodfill((px1+px2)/2,(py1+py2)/2,red); setolor(red); setlinestyle(solid_line,1,thick_width); line(480-b3.putdata(0),313+b3.putdata(2),px2,py2); line(480-b2.putdata(0),313+b2.putdata(2),px1,py1); line(480-b1.putdata(0),313+b1.putdata(2),px1,py1); } void seteular(void) { har h; 35

bar(5,5,635,125); gotoxy(2,2); printf(" Continue or not! (y or n) "); gotoxy(300,2); h=geth(); if((h=='n') (h=='n')) { losegraph(); return; } gotoxy(2,3); } printf(" OK!"); void settv(void) { bar(5,5,325,125); temptv.getvetor(); gotoxy(2,6); } void vetor::getvetor(void) { float move,t,time,x=0,y=0; int m; gotoxy(2,3); out<<"input the intensive value of the earthquake! (1-8)"; in >>m; if(m==1) 36

{ bar(5,5,635,125); gotoxy(2,3); out<<"the intensity is 1 degree!\n"; fm=4; f=0.099; } else if(m==2) { bar(5,5,635,125); gotoxy(2,3); out<<"the intensity is 2 degree!\n"; fm=2.44; f=0.211; } else if(m==3) { bar(5,5,635,125); gotoxy(2,3); out<<"the intensity is 3 degree!\n"; fm=1.45; f=0.295; } else if(m==4) { bar(5,5,635,125); gotoxy(2,3); out<<"the intensity is 4 degree!\n"; fm=0.88; f=0.391; } else if(m==5) 37

{ bar(5,5,635,125); gotoxy(2,3); out<<"the intensity is 5 degree!\n"; fm=0.52; f=0.497; } else if(m==6) { bar(5,5,635,125); gotoxy(2,3); out<<"the intensity is 6 degree!\n"; fm=0.3165; f=0.599; } else if(m==7) { bar(5,5,635,125); gotoxy(2,3); out<<"the intensity is 7 degree!\n"; fm=0.19; f=0.681; } else if(m==8) { bar(5,5,635,125); gotoxy(2,3); out<<"the intensity is 8 degree!\n"; fm=0.1148; 38

f=1.01; } gotoxy(2,5); out<<"input the moving time!"; in>>time; moveto(30,380); for(t=0.05;t<=time;t+=0.05) { move=exp(-t/10)*(1+0.5*sin(2*pi*fm*t))*sin(2*pi*f*t)*10; x=3; y=(move/2); setlinestyle(solid_line,1,thick_width); setolor(white); linerel(x,y); data[0]=move; data[1]=0; data[2]=0; int i; for(i=0;i<3;i++) { Tvnew.setdata(i,Tv.putdata(i)+tempTv.putdata(i)); temptv.setdata(i,0); } Inversekine(); invgraph(); delay(100); setfillstyle(solid_fill,255); bar(330,132,630,365); for(i=0;i<32;i+=2) gridnew[i]=(grid[i]+move); setolor(red); 39

} } drawpoly(16,gridnew); delay(100); bar(95,168,220,251); setlinestyle(dotted_line,1,1); line(160,136,160,364); line(11,250,319,250); setlinestyle(dotted_line,1,1); line(480,136,480,364); line(331,313,630,313); line(331,223,630,223); void matrix::normalize(void) { int i,j; float size,temp=0; for (i=0;i<3;i++) { for (j=0;j<3;j++) temp+=data[j][i]*data[j][i]; size=sqrt(temp); temp=0; for (j=0;j<3;j++) data[j][i]=data[j][i]/size; } } matrix matrix::transpose(void) { matrix result; 40

} int i,j; for (i=0;i<3;i++) for (j=0;j<3;j++) result.setdata(i,j,data[j][i]); return result; vetor operator+(vetor &a,vetor &b) { vetor ; int i; for (i=0;i<3;i++).setdata(i,a.putdata(i)+b.putdata(i)); return ; } vetor ve_mtr(vetor &a,matrix &b) { vetor result; int i,j; float temp=0; for (i=0;i<3;i++) { for (j=0;j<3;j++) temp+=a.putdata(j)*b.putdata(j,i); result.setdata(i,temp); temp=0; } return result; } 41