赤平投影巖質(zhì)邊坡穩(wěn)定分析的VB解法518_第1頁
赤平投影巖質(zhì)邊坡穩(wěn)定分析的VB解法518_第2頁
赤平投影巖質(zhì)邊坡穩(wěn)定分析的VB解法518_第3頁
赤平投影巖質(zhì)邊坡穩(wěn)定分析的VB解法518_第4頁
赤平投影巖質(zhì)邊坡穩(wěn)定分析的VB解法518_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、赤羽靄巖質(zhì)邊坡穩(wěn)定分析的vb最新解法解題思路說明與講解云南省水利水電學(xué)校張華慶赤平投影巖質(zhì)邊坡穩(wěn)定分析的vb最新解法云南省水利水電學(xué)校張華慶【摘要】赤平投影巖質(zhì)邊坡穩(wěn)定分析用傳統(tǒng)的手工方法來進(jìn)行求解顯得過于原始和低效,英缺 點主要有:需要攜帶吳氏網(wǎng)、透明紙、鉛筆等作圖工具;誤差大、精確度差,結(jié)果不便于檢驗; 速度慢、效率低,不適合大量或批量計算;手工作圖麻煩、耗時,作出的圖談不上標(biāo)準(zhǔn)、漂亮, 不便用于地質(zhì)報告,且脫離吳氏網(wǎng)背景也不便閱讀和使用,為此筆者利用vb6.0編寫和開發(fā)了可視 化的赤平極射投影分析程序,該程序雖然很小(僅72kb),但卻徹底解決了上述問題?!娟P(guān)鍵詞】赤平投彫;visual

2、 basic;可視化編程;快捷、高效;方便、實用;電子化成圖引言:水利水電工程地質(zhì)教材在講到巖質(zhì)邊坡穩(wěn)定性分析時,由于涉及到大量的滑 面及滑面交線的產(chǎn)狀(即傾向、傾角)等角距的求解和計算問題,因此不論是定性分析(如根據(jù)兩結(jié)構(gòu)面組合交線與邊坡產(chǎn)狀關(guān)系來判斷邊坡巖體是否穩(wěn)定)述是定量計算(如巖質(zhì)邊坡雙斜滑面x赤平投影分析application畫結(jié)構(gòu)面畫坡面投影動畫演示問題求解清屏退出問題,就必須利用赤平投 影方法來求解滑動體重 力分解過程中的各種夾 角),都離不開赤平極射 投影這個工具。利用這個 工具去解決問題的科學(xué) 性是毋庸置疑的,那就是 可以把復(fù)雜的空間問題 轉(zhuǎn)化為平面問題來進(jìn)行 處理,如若不

3、然,就只有* 60957005707510654045508520652054 5113162023373246415651666277738884 -9 - 8 一-7_-7-.6_-.5=.5_-.4_-.4_-.3.3_-.2_-.2|一-.0.u80 3 0 30 80 30180 ao 30 80 aolao 3 0 ao ao 30 ao 30結(jié)構(gòu)面1傾向.4e結(jié)構(gòu)面1傾第:3(t/tw71s結(jié)構(gòu)面交線產(chǎn)狀:rh-j讒勰黑clear34.6°z29.6°通過制作空間模型來解決每一個與z有關(guān)的問題,或是利用空間解析幾何來處理這些問題,顯然這兩種解決問題的方法都是夠

4、煩瑣的,有時其至是不可為的,因此赤平極 射投影方法不失為目前最好的方法。然而,赤平投影分析若用傳統(tǒng)的手工方法來進(jìn)行計算或求解的話,又顯得過于原 始,遠(yuǎn)遠(yuǎn)跟不上時代的步伐,傳統(tǒng)赤平投影作圖解題方法的缺點主要是:需要攜帶 吳氏網(wǎng)、透明紙、鉛筆等作圖工具;誤差大、精確度差,結(jié)果不便于檢驗;速度 慢、效率低,不適合大量或批量計算;手工作圖不但麻煩、耗時,而且作出的圖談 不上標(biāo)準(zhǔn)和漂亮,難登大雅之堂,且脫離吳氏網(wǎng)背景也不便閱讀和使用。為此筆者利用vb6.0編寫和開發(fā)了可視化的赤平極射投影分析程序,該程序雖然很?。▋H72kb),但卻徹底解決了上述問題,并且該解法具有如下特點:可以自動生可以自動畫結(jié)構(gòu)面和坡

5、 面的赤平投影圓弧(其中坡 面投影圓弧以點線組合來 區(qū)分);可以輸入兩結(jié)構(gòu) 面產(chǎn)狀求它們的夾角;可 以求兩結(jié)構(gòu)面交線的產(chǎn)狀(傾向、傾角);求解其 它。如右圖所示。利用本法求解,具有快 速(tvo.ls)、精確、高效的5*16心3915*67妙00岔37盯7735*2106645*14對64右15盯68近2270*7675*3280*87q44 =9 = 8 = 7 = 7 = 6 - 5 = 5 = 4 = 4 = 3 = 3 = 2 = 2 = 1 = 1 = o = o aoaoaoaoaoaoaoaoaoaoaoaoaoaoaoao-doarean0.479)s結(jié)構(gòu)面交線產(chǎn)狀:34.6&

6、#176;z29.6°週屏畫吳氏網(wǎng) 畫結(jié)構(gòu)面畫坡面投影 結(jié)構(gòu)面之法線 兩條直線之夾角 兩結(jié)構(gòu)面之夾角 法線對應(yīng)的結(jié)構(gòu)面 兩結(jié)構(gòu)面交線產(chǎn)狀 打印窗體退出赤平投影分析application畫赤平投影網(wǎng) 畫結(jié)構(gòu)面 畫坡面投影 動畫演示問題求解清屏退岀成或清除吳氏赤平投影網(wǎng);特點,并且省去了筆墨紙張等材料的消耗,計算結(jié)果直觀顯示,并可通過電子裁切將 其粘貼于工程文字報告中。下面主要介紹本程序的產(chǎn)生過程、編程依據(jù)、計算原理及編程講解。一、產(chǎn)生過程:將赤平投影的求解過程通過vb編程中的代數(shù)運算、解析兒何處理、 圖形顯示技術(shù)等有機(jī)結(jié)合,同步顯示計算過程,克服了過去dos編程計算過程不可視、 不便檢

7、查計算結(jié)果之對錯的弊端。二、編程依據(jù):利用鄭州水利學(xué)校陳松所編工程地質(zhì)中赤平投影網(wǎng)的繪制方 法:經(jīng)線作法;緯線作法;其它線條作法。都不外乎是作圓弧或者作直線,均 容易寫岀其解析表達(dá)式。于是利用vb提供的文字顯示以及點、線(段)及圓(弧)的便不難得岀計算結(jié)果并且能夠同步圖形顯示。圖形支持,以及坐標(biāo)旋轉(zhuǎn)原理等,三、計算原理: 經(jīng)線作法:以50°經(jīng)線為例,作 zaow=50°,連 as,交 we 線于 b 點; 作bs中垂線ve交we線(或其延長 線)于d點,以d為圓心,ds = db = dn為半徑作弧sbn,則圓弧sbn即為 50。經(jīng)線(見右圖)。 緯線作法:以50°

8、;緯線為例,作 zaow=50°,過a點作切線(半徑oa 的垂線)af交sn線的延長線于f點; 以f為圓心,fa為半徑作弧ac,則圓 弧ac即為50。緯線(見右圖)。下面首先詳細(xì)說明利用vb進(jìn)行吳氏網(wǎng)繪制的方法: 先在窗體左側(cè)設(shè)置一個圖片框,此圖片框雖然不是必需的,但可用它來顯示各 經(jīng)度經(jīng)線的中點(頂點)至圓心o的距離,以便容易檢驗所作代數(shù)計算的正確性與否; 用scale語句定義窗體顯示范圍,以便圖形顯示能夠大小適中; 用line語句畫十字架坐標(biāo)系,用circle語句畫出半徑為1的大圓,并用print語 句標(biāo)出n、e、s、w等; 用for-next語句,以5。為間隔分別畫出5。至85

9、。經(jīng)線與緯線; 上句中間執(zhí)行過程調(diào)用,分別調(diào)用過程sub hwx()畫緯線及過程sub hjx()畫經(jīng)線。四、編程講解:下面主要對畫緯線和畫經(jīng)線的過程代碼進(jìn)行必要講解:3*pi/2-a,3*pi/2+a為的是指定圓弧始點和終點,第二條語句的作用是畫岀下半球與之對 稱的緯線。2.畫經(jīng)線:以o點為坐標(biāo)原點xd=( 1+sin(a) )/cos(a)/2-cos(a)/( 1+sin(a) )/2令 b=atn(l/xd),即求得 b二zods=zodn上面語句中xd變量算出的就是右 圖中d點的橫坐標(biāo)(d點的縱坐標(biāo)為0)o 顯然度數(shù)a越高,則xd越大,所以d 點可以位于線段0e上,也可以位于0e 的

10、延長線上。上述計算d點橫坐標(biāo)的原理是:根據(jù)度數(shù)a值確定a點坐標(biāo) (cos(a),sin(a),由于對稱性,實際取a點在第一象限的對稱點c,不影響結(jié)果(以便使得三角函數(shù)值全為正); 用兩點式寫出as直線方程,并令y=0求出b點橫坐標(biāo)(b點的縱坐標(biāo)為0); 用中點坐標(biāo)公式求岀bs中點v的坐標(biāo),利用vd丄bs,斜率應(yīng)為負(fù)倒數(shù)關(guān)系求 出vd斜率; 用點斜式寫岀直線vd方程,并令y=0求出d點橫坐標(biāo)(d點的縱坐標(biāo)為0); 在 rtasod 中,不難求b=zsdo = atan (os/od) =atan (1/xd)。現(xiàn)在以d為圓心,db = ds = dn為半徑作弧sbn,則弧sbn即為所求經(jīng)線。即:

11、circle(xd,o),dspi-b,pi+b(西半球度數(shù)為 a 的經(jīng)線)circle(-xd,0),ds2*pi-b,b(東半球度數(shù)為 a 的經(jīng)線)除赤平投影分析程序外,筆者還編制了邊坡穩(wěn)定分析、抗剪強(qiáng)度指標(biāo)計算、附加 應(yīng)力計算等實用的工程地質(zhì)與土力學(xué)方面的可視化小程序,為了方便各位專家和同仁 共同研究或探討,特附上這幾個小程序,也口j致電郵至:zhanghqing索取。下面是赤平極射投影分析程序的源程序代碼,以供有興趣研究的專業(yè)人員參考:option explicitconst pi = 3.141592654private a as double, b as double, c as

12、double, ai as single, ci as singleprivate xd as double, n as integer, ds as single, fa as singledim xt as single, yt as single, jv as single, jo as singledim i as integerdim w as boolean, tg as boolean, vg as boolean, vr as booleandim xi!, yl!, rl!, x2!, y2!, r2!, x3!, y3!, r3!dim x as single, y as

13、single, t as single, q as single, qt as singledim qx as single, qj as singledim xj 1 as single, yj 1 as single, xj2 as single, yj2 as singledim v as single, xp as single, yp as singledim ca!, aa!, cb!, ab!private declare sub sleep lib "kernel32" (byvai dwmilliseconds as long)private sub co

14、mmand 1 _click()cispicture 1.cislabel 1 .caption 二"”label2.caption = "hlabel3.caption =label4.caption =uhpicture! .setfocusend subprivate sub dvyqjgm l_click(lndex as integer) dvyqjgm.clickend subprivate sub dyhb1_click()timerl. enabled = truetimer2.e nabled = falsevr = falseend subprivate

15、 sub dyhb2_click()timerl .enabled = falsetimer2.e nabled = truevr = falseend subprivate sub faxj l_click(index as integer)faxj_clickend sub用來畫吳氏網(wǎng)7* tw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtw rtwprivate sub form_load()showforecolor = rgb(0,

16、0, 0) form 1.cisform 1.picture 1.cisform 1.scale (-1.5, 1.5)-(1.5, -1.5)form 1 .label 1 .caption = ”顯示結(jié)果"call ycrossvg = falsefor n = 5 to 85 step 5a = n/ 57.29578vg = not (vg)if vg = false thenforecolor 二 rgb(0, 200, 0)elself vg = true thenforecolor = rgb(100, 250, 100)end ifcall hwxcall hjxpi

17、cture 1.print na=m; n; ”。”picture 1.print format(jv, "0.000")next nvg = falseai = 60a = ai/ 57.29578forecolor = rgb(0, 0, 0)end subprivate sub hwx()'畫緯線fa = 1 / tan(a)circle (0, 1 / sin(a), fa, 3 * pi / 2 - a, 3*pi/2 + acircle (0, -1 / sin(a), fa, pi / 2 - a, pi / 2 + aend subprivate s

18、ub hjx()'畫經(jīng)線xd = (1 + sin(a) / cos(a) / 2 - cos(a) / (1 + sin(a) / 2ds = sqr(xd a 2 + 1)jv = ds xdb=atn(l / xd)circle (xd, 0), ds, pi b, pi + bcircle (-xd, 0), ds, 2 * pi b, b'上面語句曾經(jīng)為circle (-xd,0), ds,-b,b,結(jié)果錯(圖中出現(xiàn)一條經(jīng)線)end subprivate sub dyct_click()printformend subprivate sub dvyqjgm_click

19、()qx = inputbox(m請輸入法線的傾向“,“輸入対話框”,45, 9000, 7000)'指明傾向qj = inputbox(m請輸入法線的傾角“,“輸入對話框”,30, 9000, 7000)'指明傾角call faxjdvyqjmgpmjend subprivate sub faxjdvyqjmgpmj()if qx < 180 thenci = qx + 180elself qx >= 180 thenci = qx - 180end ifc = -ci / 57.29578 + pi/2ai = 90 qja = ai/ 57.29578call

20、 cjtionx3 = xt: y3 = yt: r3 = ds'必須在此及時把ds賦給r3,否則經(jīng)過下面語句后ds的值就改變了v二qj / 57.29578法線傾角與結(jié)構(gòu)面互余xd = (1 + sin(v) / cos(v) / 2 - cos(v) / (1 + sin(v) / 2ds = sqr(xd a 2 4- 1)jv = ds xdxp = jv * cos(c): yp = jv * sin(c)if tg = false thenline (xp, yp)-(0, 0), rgb(100, 140, 250)drawwidth = 2: pset (xp, yp)

21、, rgb(180, 40, 40): drawwidth = 1print ”法線”label 1.caption 二”法 線:”& format(str$(qx), n#0.0n) & “° ” & “z” & format(str$(qj), n#0.0u) & ”° ” & chr(10) & ”結(jié)構(gòu)面:'& format(str$(ci), n#0.0h) &“° ” & “z” & format(str$(ai), h#0.0h) &“end ife

22、nd subprivate sub faxj_click()call hvjgm_clickv = pi / 2 - a '法線傾角與結(jié)構(gòu)面互余xd = (l + sin(v)/ cos(v) / 2 - cos(v)/(1 + sin(v) / 2ds = sqr(xd a 2 + 1)jv = ds xdxp = jv * cos(c): yp = jv * sin(c)if tg = false thenline (xp, yp)-(0, 0), rgb(100, 140, 250)drawwidth = 2: pset (xp, yp), rgb(180, 40, 40): d

23、rawwidth = 1print ”法線”end iflabel 1.caption = ”結(jié)構(gòu)面:“ & format(str$(ci), ”#0.0“)& “° ” && format(str$(ai),”#0.0”) & ”° ” & chr(10) & ”法 線:”& format(str$( 180 + ci), “#0.0”)& ”° “ & “z” &format(str$(90 - ai), h#o.ou) & ”end subprivate sub

24、form_dblclick()vr = truetimer 1.enabled = falsetimer2.enabled = falsecall form_loadforecolor = rgb(0, 0, 0)end subprivate sub fonn_mousedown(button as integer, shift as integer, x as single, y as single)if button = 2 thenpopupmenu aaaend ifend subprivate sub cjtion()'本過程用來繪制任意傾向z傾角結(jié)構(gòu)面的赤平投影dim ki

25、 as double, k2 as doubleif ai <> 90 then xd = abs(l + sin(a) / cos(a) / 2 - cos(a) / (1 + sin(a) / 2)ds = sqr(xd a 2 + 1)ifxd = 0 thenb = pi / 2elself xd>0 thenb = atn(l / xd)end ifxt = xd * cos(c): yt = xd * sin(c)form 1.scale (-1.5, 1.5)-(1.5, -1.5)'畫結(jié)構(gòu)面的赤平投影弧ki = c + pi - b: k2 = c +

26、 pi + bif ki >= 2 * pi thenki =k1 2* pielself ki < 0 thenki = ki + 2* piend ifif k2 >= 2 * pi thenk2 = k2 2 * pielself k2<0 thenk2 二 k2 + 2 * piend ifif tg = false thenif ai = 90 thenline (cos(pi / 2 + c), sin(pi / 2 + c)-(-cos(pi / 2 + c), -sin(pi / 2 + c), rgb(180,40,40)elself ai <&

27、gt; 90 thencircle (xt, yt), ds, rgb(180,40, 40), ki, k2end ifend ifif w = true then *繪坡面線drawstyle = 2form 1.circle (xt, yt), ds + 0.02, rgb(180, 40, 40), ki + 0.02, k2 0.02drawstyle = 0end ifend subprivate sub hscrolll_change()ci = hscrolll. valuelabel 1 .caption = ”結(jié)構(gòu)面傾向:” & str$(ci) &” &a

28、mp; chr$(10) & ”結(jié)構(gòu)面傾角:“ & str$(ai) &tt oc = -ci / 57.29578 + pi/2call cjtionend subprivate sub hscroni_scroll()ci = hscrolll.valuelabel 1 .caption = ”結(jié)構(gòu)面傾向:” & str$(ci) &” & chr$(10) & ”結(jié)構(gòu)面傾角:“ & str$(ai) &if °c = -ci / 57.29578 + pi/2call cjtionend subprivat

29、e sub hvjgm_click()i = i + 1if tg = false thenci = inputbox(h請輸入結(jié)構(gòu)面的傾向“,“輸入對話框”,45, 9000, 7000)指明傾向ai = inputbox(h請輸入結(jié)構(gòu)面的傾角“,“輸入對話框”,30, 9000, 7000)'指明傾角c = -ci / 57.29578 + pi/2: a = ai/ 57.29578ifi= 1 thenca = ci: aa = ailabel2.caption = ”結(jié)構(gòu)而傾向:” & str$(ci) & 1,0 h & chr$(10) &

30、 ”結(jié)構(gòu)面傾角:” & str$(ai) ”elself i = 2 thencb = ci: ab = ailabel3.caption = ”結(jié)構(gòu)面傾向:” & str$(ci) &” & chr$(10) & ”結(jié)構(gòu)面傾角:” &str$(ai)&“° ”end ifif w = false thenlabel 1 .caption = “結(jié)構(gòu)而傾向:” & str$(ci) &“ & chr$(10) & ”結(jié)構(gòu)面傾角:” &str$(ai)&“° ”elself

31、 w = true thenlabel 1 .caption = “坡面傾向:“ & str$(ci) &” & chr$(10) &“坡面傾角:”& str$(ai) &end ifelself tg = true thencall uyxifuvicaend ifcall cjtionend subprivate sub hvjgml_click(index as integer) hvjgm_clickend subprivate sub lhjmgpmjjbjk_click() *求兩結(jié)構(gòu)面z夾角*dim xs#, ys#, rs#沖間變

32、量,用來暫吋存儲x2; y2; r2dim g 1 as single, g2 as single, g as singlecall ljgmjxuv_click'若交線水平(jk=o。)則執(zhí)行下列六條語句并結(jié)束本過程if abs(ca cb) mod 180 = 0 thenif ca = cb theng = abs(aa ab)elself ca <> cb theng = abs(18 0aa ab)end iflabel 1.caption 二”兩結(jié)構(gòu)面夾角:” & format(str$(g), ”#00“) &“tg = false'任

33、務(wù)執(zhí)行完后使tg恢復(fù)其初值exit subend ifcall faxjdvyqjmgpmjxs = x2: ys = y2: rs 二 r2xi =x1: y1 =y1: r1 = r1: x2 = x3: y2 = y3: r2 = r3call qnjkdj'注意上面語句后x2、y2已經(jīng)具有x3、y3的值xjl =x: yjl =y,也就是說x2、y2本來的值已被x3、y3取代xi =x3: y1 = y3: r1 = r3: x2 = xs: y2 = ys: r2 = rscall qnjkdjxj2 = x: yj2 = y呼面pl、p3交線(點)的z1的坐標(biāo)(xjl,yj

34、l)'平面p2、p3交線(點)的z2的坐標(biāo)(xj2,yj2)if tg = false then call xcvchp,(原本為 if tg = false then call xcvchp,但是子程序出錯)dim xf as double, yf as double, af as singledim fz1 as single, fz2 as single'點f的坐標(biāo)為(xf, yf1) 坐標(biāo)旋轉(zhuǎn)由(0, yf ) (xf, yf)'可視為pl、p2、p3同時繞圓心旋轉(zhuǎn),使得p3傾向為c二pi/2或3*pi/2for a = 0.001 to pi / 2 - 0.

35、001 step 0.001yf= 1 / sin(a): af= 1 / tan(a)ifyjl =0thengl =0exit forelselfyjl = 1 thengl =pi/2exit forelselfyjl =-l thengl = -pi / 2exit forelselfyjl >0and yjl < 1 thenfz1 = sqr(xj 1 a2 + (yjl yf)a2)if abs(af fz1)< 0.001 then gl 二 aexit forend ifelselfyjl <0 and yjl >-l thenfz1 = sqr

36、(xj 1 a2 + (yjl +yf)人 2)ifabs(af -fz1)< 0.001 then gl = -aexit forend ifend ifnext afor a = 0.001 to pi / 2 - 0.001 step 0.001yf= 1 / sin(a): af = 1 / tan(a)ifyj2 = 0theng2 = 0exit forelself yj2 = 1 theng2 = pi / 2exit forelseifyj2 = -l theng2 = -pi / 2exit forelself yj2 > 0 and yj2 < 1 the

37、nfz2 = sqr(xj2 a2 + (yj2 - yf) a 2)if abs(af fz2) < 0.001 then g2 = aexit forend ifelself yj2 < 0 and yj2>-1 thenfz2 = sqr(xj2 a2 + (yj2 + yf)人 2)ifabs(af fz2) < 0.001 theng2 = -aexit forend ifend ifnext ag = abs(gl - g2) * 57.29578label 1.caption = ”兩結(jié)構(gòu)面夾角:“ & format(str$(g), ”#0.0”

38、) &”tg = false'任務(wù)執(zhí)行完后使tg恢復(fù)其初值end subprivate sub xcvchpotg = truecall lhjmgpmjjbjk_clickend subprivate sub uyxlfuvica()'此過程用于坐標(biāo)旋轉(zhuǎn)(使得交線傾向為we向)后為結(jié)構(gòu)面產(chǎn)狀重新賦值'此處需要分兩種情況ifqx >=0and qx < 180 then,交線傾向為 i ii 彖限if i = 1 thenci = ca + 90 qxif ci >= 360 thenci = ci 360elself ci < 0 th

39、enci = ci + 360end ifc = -ci / 57.29578 + pi/2ai = aaa = ai/ 57.29578elself i = 2 thenci = cb + 90 qxif ci >= 360 thenci = ci - 360elself ci < 0 thenci = ci + 360end ifc = -ci / 57.29578 + pi/2ai = aba = ai/ 57.29578end ifelself qx >= 180 and qx < 360 then '交線傾向為iiiiv象限ifi= 1 thenci

40、= ca + 270 - qxif ci >= 360 thenci = ci 360elself ci < 0 thenci = ci + 360end ifc = -ci / 57.29578 + pi/2ai = aaa = ai/ 57.29578elself i = 2 thenci = cb + 270 - qxif ci >= 360 thenci = ci 360elself ci < 0 thenci = ci + 360end ifc = -ci / 57.29578 + pi/2ai = aba = ai/ 57.29578end ifend if

41、end subprivate sub lhjmgpmjjbjkl_click(index as integer)lhjmgpmjjbjk_clickend subprivate sub ljgmjxuv_click(),求兩結(jié)構(gòu)面交線及其產(chǎn)狀i = 0call hvjgm_clickxi =xt: y1 =yt:rl =dscall hvjgm_clickx2 = xt: y2 = yt: r2 = dscall qnjkdjcall jxqxif tg = false then call bijkdaxkend subprivate sub qnjkdjo '本過程用來求出兩結(jié)構(gòu)面交

42、線(交點坐標(biāo))'弧 1 方程為:(x-x1)a2+(y-y1)a2=r1a2'弧 2 方程為:(x-x2)a2+(y-y2)a2=r2a2dim k as double, p as double, v1 as double, v2 as doubledim al as double, bl as double, cl as double, d as doubleif abs(yl - y2) <= 0.00001 thenx = (r2 a 2 r1 人 2) / (x1 x2)/2 + xl /2 + x2/2vi = sqr(r2 人 2 (x x2) a 2) +

43、y2: v2 =sqr(r2 人 2 (x x2) a 2) + y2ifx a2 +vi a2<= 1 theny = vielself x a 2 + v2 a 2 <= 1 theny = v2end ifelselfyl -y2 oothen當(dāng)兩圓縱坐標(biāo)相等吋y1 -y2=0, k出錯k = -(xl x2)/(y1 y2)p = (r2 a 2 r1 人 2) / (y1 y2) / 2 + (y1 + y2) / 2 k * (xi + x2) / 2al = 1 + ka2: bl =2*(k*p k*y 1 xi): cl = (p y1)八2 + x1 八2 r1

44、 八2 ifal = 0 thenlabel 1.caption = ”兩圓相切,有唯一交點“exit subend ififbl 人24* al *c1 >= 0 thend = sqr(bl a2-4*a1 *c1)elselfbl a2-4*a1 * cl <0 thenlabel 1 .c aption ="未找到交點"exit subend ifx = (-b1 +d)/a1 /2y = k * x + pifxa2 + ya2> ithen '找到兩圓交點屮位于吳氏網(wǎng)內(nèi)(上)的那個交點的坐標(biāo) x = (b1 - d)/a1 /2: y二

45、 k*x + pend ifend ifjo = sqr(x a 2 + y a 2)if tg = false thenline (x, y)-(0, 0), rgb(40, 200, 250)*pset (x, y): print “j”; ”(”; format(x, ”0.#”); ”,”; format(y, “().#“); ”)“end ifend subprivate sub jxqx(),用來求交線傾向ifx>0and y = 0thent = 270elselfx <0 and y = 0 thent = 90elselfx >0 and y>0 t

46、he nt= 180 + 57.29578 * abs(atn(x / y)elself x > 0 and y < 0 thent = 360 - 57.29578 * abs(atn(x / y)elself x < 0 and y < 0 thent = 57.29578 * abs(atn(x / y)elself x < 0 and y > 0 then(= 180- 57.29578 * abs(atn(x / y)end ifqx = t'qx為交線傾向t = format(t, ”#0.0”)end subprivate sub bi

47、jkdaxk()用來求交線傾角并在文本框輸出顯示傾向z傾角if j0= 1 thenq = 0elself jo = 0 thenq = 90elsefor q = 0 to 90 step 0.01if q = 90 then exit fora = q/ 57.29578xd = (1 + sin(a) / cos(a) / 2 cos(a) / (1 + sin(a) / 2ds = sqr(xd a 2 + 1)jv = ds - xdifabs(jv -jo) <= 0.0001 then exit fornext qend ifcij = q'qj為交線傾角label

48、 1.caption = ”結(jié)構(gòu)面交線產(chǎn)狀:“ & chr$(10) & fonnat(str$(t), “#0.0”) &” & ”z” &format(str$(q), n#0.0m) &”end subprivate sub ljgmjxuvl_click(index as integer)ljgmjxuv_clickend subprivate sub pomjtpyq_click()w = truecall hvjgm_clickw = falseend subprivate sub pomjtpyq l_click(index as

49、integer)pomjtpyq_ciickend subprivate sub qqpq_click()form i .cislabel4.c aption =ycrossend subprivate sub ycross()forecolor = rgb(0, 200, 0)line (0,-1)-(0, 1)line (-1, 0)-(1, 0)form 1 .circle (0, 0), 1currentx = 0.00& currenty = 0: print “o"currentx = -0.02: currenty = 1.1: print hnucurrent

50、x = -0.02: currenty = -1.03: print "s"currentx = -1.09: currenty = 0.02: print "w"currentx = 1.04: currenty = 0.02: print ”e” forecolor = rgb(0, 0, 0)end subprivate sub qqpql_click(index as integer) qqpq_clickend subprivate sub timer l_timer()for i = 10 to 30 step 10command l_cli

51、ckfor ci = 0 to 360 step ic = -ci / 57.29578 + pi/2 ai = 60a = ai/57.29578cjtiondoeventsif vr = true thenvr = falseexit subend ifsleep 5 * inext cisleep 1000next iend subprivate sub timer2_timer()comma ndl_clickfor ci = i to 360 + i step 36c = -ci / 57.29578 + pi/2ai = 60a = ai/ 57.29578cjtiondoeven

52、tsif vr = true thenvr = falseexit subend ifnext cii = i + 2ifi= 180 theni = 0end subprivate sub tvch_click()endend subprivate sub tvchl_click(index as integer) tvch_clickend subprivate sub twolsangle_click()* 求空間兩直線之夾角rt* rt* rt* rt* rt* rt* rtw rt* rtw rt* rt> rt* rtw rt* rtw rt* rtw rtw rtwi =

53、0uyls: if tg = false thenqx = inputbox(h請輸入直線1的傾向”,“輸入對話框”,45, 9000, 7000)'指明傾向qj = inputbox(h請輸入直線1的傾角“,“輸入對話框”,30, 9000, 7000)'指明傾角call faxjdvyqjmgpmjca = qx: aa = qjelself tg = true thenqx = ca: qj = aaend iflabel2.caption 二“直線傾向:”& str$(qx) &” & chr$(10) &“直線傾角:”& str

54、$(qj) &”if qx < 180 thenci = qx + 180elself qx >= 180 thenci = qx - 180end ifc = -ci / 57.29578 + pi/2ai = 90 - qja = ai/ 57.29578call cjtionxi =xt: y1 =yt: r1 =dsv = qj/57.29578,法線傾角與結(jié)構(gòu)面互余xd = (1 + sin(v) / cos(v) / 2 - cos(v) / (1 + sin(v) / 2ds = sqr(xd a 2 + 1)jv = ds xdxp = jv * cos(c

55、): yp = jv * sin(c)xjl =xp* cos(-qt) - yp * sin(-qt)yjl =xp* sin(-qt) + yp * cos(-qt)if tg = false thenqx = inputbox(n請輸入直線2的傾向”,“輸入對話框”,45, 9000, 7000)'指明傾向 qj = inputbox(h請輸入直線2的傾角“,“輸入對話框”,30, 9000, 7000) '指明傾角call faxjdvyqjmgpmjcb = qx: ab = qjelself tg = true thenqx = cb: qj = abend ifl

56、abeb.caption = “直線傾向:”& str$(qx) & 1,0 " & chr$(10) &“直線傾角:”& str$(qj) &“if qx < 180 thenci = qx + 180elself qx >= 180 thenci = qx - 180end ifc = -ci / 57.29578 + pi/2ai = 90 qja = ai/ 57.29578call cjtionx2 = xt: y2 = yt: r2 = dsv = qj/57.29578'法線傾角與結(jié)構(gòu)面互余xd = (

57、1 + sin(v) / cos(v) / 2 - cos(v) / (1 4- sin(v) / 2ds = sqr(xd a 2 + 1)jv = ds - xdxp = jv * cos(c): yp = jv * sin(c)xj2 = xp * cos(-qt) yp * sin(-qt)yj2 = xp* sin(-qt) + yp* cos(-qt)if tg = true then'currentx = 0: currenty = 0.6print hxjl=u; xjl; "yjl; yjl'print ”xj2二“;xj2; hyj2=u; yj2drawwidth = 2: pset (xj 1, yjl): pset (xj2, yj2):

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論