當前位置:首頁 » 操作系統 » 滑動模擬演算法

滑動模擬演算法

發布時間: 2022-11-15 12:16:11

1. abaqus中怎麼模擬支座單項滑動比如我只想讓某個物體沿著一個方向滑動,另一個方向位移被限制

一個正方體物體沿斜坡向下滑動,其截面如圖正方形defh的邊i,長為2米,坡dc^2=ce^2+de^2 又有要使dc^2=ae^2+bc^2 所以ce^2+de^2 =ae^,

2. 物理學的 H5 應用:模擬慣性滑動

在移動端 H5 中,時間選擇器( date-picker )、省市區選擇器( area-picker )等組件經常會使用這樣的交互效果:

這個 gif 是在【微信錢包 - 賬單】中錄制的 ios 原生時間選擇器。可見, 當用戶手指在選擇器上先是滑動再從屏幕上移開,內容會繼續保持一段時間的滾動效果,並且滾動的速度和持續的時間是與滑動手勢的強烈程度成正比。 這種交互思路源於 ios 系統原生元素的滾動回彈( momentum-based scrolling ),來看 H5 的一個普通列表在 ios 上的滾動表現:

社區上大部分的移動端組件庫的選擇器組件都採取了這種交互方式,看看效果:

weui 的選擇器實現了慣性滑動,但滑動動畫結束得有點突兀,效果一般。

vant 的選擇器壓根沒有做慣性滑動,當手指從屏幕上移開後,選擇器的滑動會立刻停止。可見這樣的交互體驗是比較差的。

接下來我會從設計層面剖析和模擬慣性滑動的交互效果。

不難想像,慣性滑動非常貼合現實生活中的一些場景,如汽車剎車等。除此之外,與物理力學中的滑塊模型也十分相似,由此我會參考滑塊模型來剖析慣性滑動的全過程。

慣性 來源於物理學中的慣性定律(即 牛頓第一定律 ):一切物體在沒有受到力的作用的時候,運動狀態不會發生改變,物體所擁有的這種性質就被稱為慣性。我們不妨把慣性滑動模擬成滑動滑塊然後釋放的過程(以下討論中用戶滑動的目標皆模擬成 滑塊 ),主要劃分為兩個階段:

描述滑塊的慣性滑動,首先需要求出滑動的距離。在上述二階段中,滑塊受摩擦力 作 勻減速直線運動 。假設滑動距離為 ,初速度為 ,末速度為 。根據位移公式

加速度公式

可以算出慣性滑動距離

由於勻減速運動的加速度為負,不妨設一個加速度常量 ,使其滿足 ,那麼

這里 為正數。也就是說,我們只需要求出初始速度即可。

關注第一個階段,假設用戶滑動滑塊的距離為 ,滑動的持續時間是 ,那麼二階段的初速度 可以根據位移公式求得

綜上,求慣性滑動的距離我們需要記錄用戶滑動滑塊的 距離 持續時間 ,並設置一個合理的 加速度常量

注意,這里的距離和持續時間並不是用戶滑動滑塊的總距離和時長,而是觸發慣性滑動范圍內的距離和時長,詳見【慣性滑動的啟動條件】。

針對二階段的勻減速直線運動,時間段 產生的位移差 ,其中 。也就是說時間越往後,同等時間間距下通過的位移越來越小,也就是動畫的推進速度越來越慢。

這與 CSS3 transition-timing-function 中的 ease-out 速度曲線相吻合, ease-out (即 cubic-bezier(0, 0, .58, 1) )的貝塞爾曲線為

上圖來自 在線繪制貝塞爾曲線網站 。圖表中的縱坐標是指 動畫推進的進程 ;橫坐標是指 時間 ;原點坐標為 (0, 0) ,終點坐標為 (1, 1) ,假設動畫持續時間為2秒, (1, 1) 坐標點則代表離動畫開始2秒時動畫執行完畢(100%)。根據圖表可以得出,時間越往後動畫進程的推進速度越慢,符合勻減速直線運動的特性。

然而這樣的速度曲線過於線性平滑,減速效果不明顯。我們基於 ios 滾動回彈的效果,調整貝塞爾曲線的參數為 cubic-bezier(.17, .89, .45, 1) 。

滑塊滑動不是無邊界的,我們來考慮這樣的場景:當滑塊向下滑動,其頂部正要接觸容器上邊界時速度還沒有降到 ,此時如果讓滑塊瞬間停止運動,這樣的交互效果是不理想的。

我們可以把上邊界想像成一條與滑塊緊密貼合的固定彈簧, 當滑塊到達臨界點而速度還沒有降到 時,滑塊會繼續滑動並拉動彈簧使其往下形變,同時會受到彈簧的反拉力作減速運動(動能轉化為內能);當滑塊速度降為 ,此時彈簧的形變數最大,由於彈性特質彈簧會恢復原狀(內能轉化成動能),從而拉動滑塊反向運動

回彈過程也可以分為兩個階段:

根據上述分析,回彈的第一階段作加速度越來越大的變減速直線運動,設此階段的初速度為 ,可以與 建立以下關系

那麼回彈距離為

微積分都來了,簡直沒法算好吧…

我們可以根據運動模型來簡化 的計算,由於該階段的加速度大於 非回彈慣性滑動 的加速度,設 非回彈慣性滑動 的總距離為 ,那麼

所以可以設置一個合理的常量 ,使其滿足

整個觸發回彈的慣性滑動模型包括三個運動階段:

然而把 階段a 和 階段b 描繪成 CSS 動畫是有一定復雜度和風險的:

出於簡化的考慮,可以將 階段a、b 合並為一個運動階段:

對於合並後的 階段a 末段,由於反向加速度越來越大,因此滑塊減速的效率會比 非回彈慣性滑動 同期更大,對應的貝塞爾曲線末段也會更陡,參數調整為 cubic-bezier(.25, .46, .45, .94) 。

在 階段b 中,滑塊先變加速後變減速,嘗試 ease-in-out 的動畫曲線:

可以看出,由於 階段b 初始的 ease-in 曲線使 階段a、b 的銜接段稍有停留,效果體驗一般。所以我們選擇只描繪變減速運動這一段,調整貝塞爾曲線為 cubic-bezier(.165, .84, .44, 1) 。

一次慣性滑動可能會出現兩種情況:

慣性滑動的啟動需要有足夠的動量。我們可以簡單地認為,當用戶滑動的距離足夠大(大於 15px )和持續時間足夠短(小於 300ms )時,即可產生慣性滑動。也就是說,最後一次 touchmove 事件觸發的時間和 touchend 事件觸發的時間間隔小於 300ms ,且兩者產生的距離差大於 15px 時認為啟動慣性滑動。

當慣性滑動未結束(包括處於回彈過程),用戶再次觸碰滑塊時會暫停滑塊的運動。原理上是通過 getComputedStyle 和 getPropertyValue 方法獲取當前的 transform: matrix() 矩陣值,抽離出水平 y 軸偏移量後重新調整 translate 的位置。

demo 基於 vuejs 實現,預覽地址: https://codepen.io/JunreyCen/pen/arRYem

3. 運用地理信息系統新技術進行滑坡穩定性三維評價和滑動過程模擬研究

譯自 Environment Geo1ogy,2003(43):503~512。

Mowen Xie1Tetsuro Esaki1Guoyun Zhou1Yasuhiro Mitani1

張曉娟2譯 羅靖筠2校 朱汝烈2復校

1Environmental System Institute,Kyushu University,Hakozaki 6-10-1,Higashi Ku,Fukuoka,Japan;2中國地質調查局水文地質工程地質技術方法研究所,河北保定,071051)

【摘要】本文在傳統的邊坡穩定性三維分析模型的基礎上,提出了一個全新的基於GIS的邊坡穩定性三維柵格分析模型。在這個模型中,假定初始滑動面就是橢球底面,採用蒙特卡洛(Monte-Carlo)隨機模擬方法,在求取最小安全系數法的同時,確定出最危險滑動面。運用GIS柵格模型和GIS數據模擬滑坡滑動過程時,滑坡體將沿主滑方向滑動,直到其安全系數上升到1為止。所有的計算均可通過一個稱為三維邊坡地理信息系統(3DSLOPGIS)的計算程序來完成,該程序主要利用GIS的空間數據處理分析功能。

【關鍵詞】確定性模型地理信息系統(GIS)蒙特卡洛(Monte-Carlo)模擬滑動模擬三維邊坡穩定性

1引言

滑坡不穩定性和風險評價不但已成為地學家和工程專家們感興趣的主要課題,同時也成了世界各地政府部門和管理者關注的焦點。據統計世界上每年約有600人葬身於滑坡災害中。在許多發展中國家,自然災害所帶來的經濟損失,占總國民生產總值的1%~2%。

近年來,由於地理信息系統具有強大的空間數據處理功能,被廣泛運用於自然災害評價領域。GIS是由硬體和軟體組成的系統,它可以實現數據採集、輸入、操作、轉換、可視化、組合、質疑、分析、建模和輸出等過程。GIS對空間數據具有強大的分析和處理功能。同時,基於GIS的地質技術分析模型,可以簡便而有效地分析滑坡穩定性。目前它已經被廣泛地用於土木工程和地質工程中,進行邊坡穩定性的分析。

我們通常認為一個傳統的模型無論是對均質滑坡還是非均質滑動都是適用的。穩定性指數是被廣泛應用的、基於岩土工程模型和物理力學參數的安全系數。安全系數的計算需要幾何數據、剪切強度數據及孔隙水壓力數據,正確的結果取決於可靠的數據和恰當的模型。盡管輸入的數據會較大程度地影響安全系數,但一個可靠的確定性模型對於取得可靠結果則更為重要。確定性計算可在GIS系統內執行,也可利用其他程序完成。若使用其他程序計算,則GIS只作為一個空間資料庫用來存儲、顯示、更新輸入數據。此方法主要優點是利用外部模型計算可以節約時間;而其缺陷是對從外部模型獲得的數據進行轉化時較為復雜。因為每一個程序都有其自己的數據格式和數據結構,數據轉換成為一個主要的問題。有些程序的輸入模塊只允許人工輸入數據。只有當這些程序所默認的數據格式都是 ASCII碼時,數據轉換才可直接進行。運用外部模型的另一個缺點是計算結果通常不是按GIS的空間分布模式來表達,而是以點或線的形式表述的。因此,改變這種計算結果的表達形式也是個主要的問題。

用來計算安全系數穩定性模型的邊坡是二維或三維的。因為一個地區包括很多邊坡,而且必須分別對每個邊坡做分析,所以利用這些模型計算安全系數的空間分布非常花費時間。要克服數據轉換的困難,可以利用GIS內部確定性計算模型來實現。然而這一方法也有缺點,那就是由於應用復雜演算法、迭代過程及在常規二維 GIS中的三維體積等復雜局限性,使得只有簡單的模型能較容易實現。當前,只有基於GIS的無限邊坡模型能分別計算出每個像元的安全系數。研究表明,只有當越來越多的成熟的三維模型和GIS系統得到使用後,才能徹底解決這類問題。

從近來對 GIS用於邊坡穩定性分析的調查中發現,大部分研究者潛心於運用統計學方法來確定邊坡破壞與影響因素之間的關系。盡管GIS能對區域數據進行了准備和處理,但是只有極少量的研究者運用了GIS的集成功能和邊坡穩定性的確定性模型。

即使在很短的距離范圍內,邊坡破壞在空間上都有其不同的幾何結構。因而,運用三維模型分析邊坡穩定性是合理的。從20世紀70年代中期以來,三維穩定性模型的發展和運用日益受到關注。在地質力學的著作中提到了幾個三維分析方法。

上面提到的大部分方法都用到了柱狀圖法。這些方法將柱體之間的作用力,或者說作為三維安全系數計算的假定前提,都忽略不計。因為所有與斜坡相關的GIS數據都可轉成柵格數據,所以這些基於三維模型的柱體,就可能藉助於使用GIS柵格數據用來進行三維穩定性的計算。然而,長期以來大家習慣採用人盡皆知的「一維模型」——「無限斜坡」模型,來描述滑動面與地面平行的長期天然邊坡的潛在危險性。這樣的模型僅僅可以用於淺層斜坡失穩分析和一些存在深層滑坡的區域性研究。

由於演算法復雜、步驟重復和三維數據在二維GIS中難於表達,早期的文獻中並沒有提及三維確定模型的應用。為了克服 GIS數據的外部轉換和GIS內部演算法復雜等困難,此次研究中,在GIS軟體組件(a GIS component)中使用了Visual Basic程序。三維因子的計算和滑動過程的模擬由計算機內的三維邊坡地理信息系統(3-DSLOPGIS)的計算程序完成。在這個系統中,GIS組件(ESRI公司生產的MapObjects2.1)可以完成所需的GIS功能,就像普通的GIS軟體一樣,它可以有效的管理和分析所有與滑動相關的數據。所有用來計算三維斜坡安全系數的數據都採用GIS的數據格式(例如矢量和柵格數據層),因此,沒必要在GIS數據格式和其他程序的數據格式之間進行數據轉換;同時,復雜演算法和三維問題的交互程序也可以理想的實現。

在此次研究中,將基於GIS柵格數據和基於柱狀圖的三維邊坡穩定性分析模型相結合(Hovland,1977),演繹了一個新的基於GIS柵格的三維確定性分析模型。

運用蒙特卡洛隨機模擬方法求最小安全系數值,從而確定臨界滑動條件。假定基本滑動面是一橢球體的較低部分,臨界滑動則受不同地層受力情況和不連續界面狀況的影響而變化。客觀事物的這種變化引出最小三維安全系數。

如果滑坡的三維安全系數小於1,滑坡就有滑動的危險,那麼評估滑坡災害的規模和影響范圍是非常重要的。因此,在此研究中,採用基於GIS三維柵格數據模型和GIS柵格數據來模擬滑坡滑動過程的目的,就是評估滑坡危險性和預測其影響范圍。

2基於GIS的三維模型

利用GIS的空間分析功能,所有與三維安全系數計算有關的輸入數據(如高程、傾向、坡度、地下水、地層、滑動面和力學參數等)都有其對應的柵格元,而所有與斜坡相關的數據都是柵格化的。當這些數據輸入到確定的邊坡穩定性模型中時,就可計算出一個安全系數值。下面在Hovland模型的基礎上,詳細介紹基於GIS的三維模型。在這個模型中,考慮了孔隙地下水壓力,所有輸入數據都能簡單地轉換成柵格數據。

圖1是具有潛在滑動面的滑體的三維幾何示意圖。滑坡的穩定性與地質岩層、地貌、地質力學參數和水動力條件有關。

圖1邊坡坍塌三維景觀

圖2所示是土壤(或岩石)小柱狀研究體物質的離散性。所有與滑坡相關的數據都可用如圖2所示的柱狀三維可視圖來表示。假定每一個柱體單元的垂面均為無摩擦面(柱體單元的垂面不受其他邊界影響,或其影響可忽略不計),三維安全系數可用公式(1)表示:

地質災害調查與監測技術方法論文集

式中:F3-D為三維斜坡安全系數,W為一個柱體的重量,A為滑動面面積,c為內聚力,φ為內摩擦角,θ為滑動面的角度,而J、I為在斜坡破壞范圍柵格內的行列數和柱體數。如果沒有GIS,則基於柱體模型的三維安全系數的計算將是冗長且耗時的工作,數據的更新和增加也極其不便。然而,在GIS中,通過運用GIS空間數據處理與分析功能,整個研究區的邊坡穩定性相關數據可用如圖3所示的矢量圖層來描述;而對於每一層,則可通過GIS空間數據處理與分析功能得到柵格數據,其像元大小可根據精度需要而定。

圖2滑動面和三維棚格柱狀圖

現在,將斜坡破壞劃分為基於柵格數據的柱體。參考圖2,諸如地表、地層、地下水、裂縫和滑動面之類的空間數據均可從柵格數據層中得到。因為與斜坡相關的數據量非常大,所以不能高效的管理所有的柵格數據集。因此,在三維邊坡地理信息系統中,有一個專門儲存這些柵格數據的點資料庫,其中,有一個屬性表用來鏈接所有與滑動相關的數據。每個柵格柱狀圖的中心點設置點類型,其他區域則設置與滑坡相關的一些數據(例如地面高程、地層和裂縫的高程、地下水、滑動面的深度等等)。表1所示即是屬性表的一個實例。

圖3邊坡穩定性分析GIS圖層

表1點資料庫的實例描述

另一方面,為了控制滑坡邊界和有效管理空間數據並進行分析,滑坡的邊界線被定義為多邊形類型文件。

基於這種點資料庫,公式1可以改成基於GIS的方程。這里所有的阻力和滑力都是沿著滑動方向的,而不必如 Hovland的模型所用的Y軸方向。在本研究中,假定斜坡區域的主要傾斜方向為可能滑動方向。根據圖4,滑動表面面積可由公式(2)得到。

地質災害調查與監測技術方法論文集

從圖4推導出如下公式:

地質災害調查與監測技術方法論文集

地質災害調查與監測技術方法論文集

接著,x和y軸的傾角推導如下:

地質災害調查與監測技術方法論文集

記α=cellsize/cosθxz和b=cellsize/cosθyz,則一個柵格柱狀圖的滑動面面積為:

地質災害調查與監測技術方法論文集

滑坡范圍主滑動方向的傾角計算公式如下:

地質災害調查與監測技術方法論文集

至此,三維邊坡水平滑動方向安全系數可以用下面的公式計算:

地質災害調查與監測技術方法論文集

圖4三維安全因子推導公式的一個柵格柱狀圖

這里,對於每個柵格,Zji,zji分別為地表高程和滑動面高程,uji為在滑動面上的孔隙水壓力,而 γ′為單位重量。

為了檢驗基於柵格的GIS三維穩定分析模型,我們運用這個模型做了一個實例計算。實例問題為一個均質的粘土滑坡,具有球形滑動面,其他各種參數如圖5所示。在圖5中,c為內聚力,φ為摩擦角,R為瞬時摩擦力,γ為土的單位重量。運用封閉式(closed-form)演算法得出三維安全系數為1.402。運用CLARA模型算得安全系數為1.422。同樣的問題運用三維邊坡模型算得三維安全系數范圍為1.386到1.472,它取決於用於被分離的邊坡柱體的數量。

圖5實例問題驗證

運用基於GIS柵格的三維穩定分析模型(圖5),並將格網尺寸定為0.5m時,算得三維安全系數為1.386;而當格網尺寸為0.6m時,算得安全系數為1.388。很明顯,與封閉式演算法相比,基於柵格模型的GIS可有效的用於三維邊坡穩定性評估。

3確定臨界滑動表面和蒙特卡洛模擬

滑動面只能通過岩土工程調查來確定,由於地質調查的費用比較昂貴,因此滑動面通常是很難確定的。因此,邊坡穩定性評價對臨界滑動面的確定是非常重要的。

為了判定三維臨界滑動情況,利用蒙特卡洛隨機模擬方法來計算三維安全系數最小值。假定最初的滑動面是一個橢球體的較低部分,邊坡表面則根據不同地層受力情況和不連續界面條件而改變。最終得到危險滑動面,同時可得到相關三維安全系數的最小值。

4橢圓坐標轉換

假定最初的滑動面是一橢球體的較低部分,橢球體的傾斜方向設置為與研究區主要的傾斜方向一致;將橢圓的傾角基本上設定得與研究區起伏變化的傾角接近。其主傾向為α,主傾角為β,它們是由邊坡破壞區域主要柵格像元的值確定的。假定傾向和傾角屬正常分布,則將主傾向α和傾角β代入分布模型中:

地質災害調查與監測技術方法論文集

運用公式(10)和(11)完成坐標轉換。圖6顯示了坐標轉換過程。

圖6坐標轉換過程

地質災害調查與監測技術方法論文集

地質災害調查與監測技術方法論文集

式中:x、y、z為全球大地坐標,

為當地坐標,x0、y0、z0為橢球體中心點坐標。

5 Z值的確定和滑動面的傾斜度

滑動面上「B」點的Z值是根據直線 AB和橢圓,由公式(12)計算的結果確定的(見圖7)。

地質災害調查與監測技術方法論文集

對於每個柵格像元,滑動面的傾向和傾角可通過下面的公式計算得出,像元(j,i)的傾角可以通過圖8中點1~4的Z值來確定。點1~4的值由公式(13)(14)(15)算出,滑動面的傾向和傾角由公式(16)算出。

圖7確定滑動面上的Z值

圖8滑動傾角的計算

地質災害調查與監測技術方法論文集

地質災害調查與監測技術方法論文集

地質災害調查與監測技術方法論文集

地質災害調查與監測技術方法論文集

這里,Z(j,i)為像元(j,i)的Z值,θ為傾角,β0是相對於X軸的傾向。在GIS中,傾向是與 Y軸之間的夾角。因此,當最高點是點3時,傾向是90-β0;當最高點是點4時,傾向是90+β0;當最高點是點2時,傾向是270-β0;當最高點是點1時,傾向是270+β0。

6隨機模擬

為了確定臨界滑動面,蒙特卡洛模擬通常用於為三維邊坡穩定性分析選擇變數。這些變數是橢球體的中心點、幾何參數和傾角。橢球體的中心點作為研究區的中心點需要首先確定,然後在一個確定的范圍內隨機選擇。

橢球體的幾何參數a、b、c是由用戶在一定范圍內隨機設定的,確定范圍如公式(17):

地質災害調查與監測技術方法論文集

假定a,b,c都均勻分布,則蒙特卡洛模擬的隨機變數由公式(18)和(19)來算出。

在[0,1]范圍內平均分布的隨機變數可通過全等乘積方法得出:

地質災害調查與監測技術方法論文集

地質災害調查與監測技術方法論文集

式中:ri為在[0,1]范圍內平均分布的隨機變數。在[a,b]范圍內平均分布的隨機變數可由公式(19)計算得出。

地質災害調查與監測技術方法論文集

式中:xi為在[a,b]范圍內平均分布的隨機變數。

橢球體的傾角設定為平均分布的一個隨機變數。平均分布范圍為主傾角及其在一個確定的波動范圍之內變化的變數。

7 計算三維安全系數最小值的過程

整個研究區(或邊坡破壞范圍)可以被均分為若干小矩形柵網,如同基於柵格的GIS一樣。關於基於柵格的三維邊坡穩定性分析的數值計算,所有的計算過程都可以通過前面提到的Visual Basic(利用GIS組件)來完成。這個軟體叫三維邊坡地理信息系統,是運用 Visual Basic 6.0和ESRI公司生產的MapObjects 2.1開發的。MapObjects作為GIS的一個組件,用來對GIS數據進行組織和空間分析。計算三維安全系數的過程如圖9所示。

圖9三維安全因子最小值計算過程

在這個過程中,數據模塊的功能用來獲得所有與邊坡相關的地質、地貌、水動力學數據和地質力學參數;隨機變數參數模塊用來隨機選擇蒙特卡洛模擬的實驗滑動面;三維邊坡穩定性模塊可用於計算三維安全系數;而危險滑動面及其安全系數可以通過一些實驗計算得出。在圖9中可以看到,關於GIS空間分析功能的所有模塊可以通過GIS組件來實現。因為一個GIS組件是在三維邊坡地理信息系統系統中完成的,所以可以有效地計算三維安全系數;同時利用與邊坡相關的GIS數據,所有的相關數據和結果可以在三維邊坡地理信息系統系統中實現可視化。

實例剖面如圖10所示。在這個實例中考慮的因素有:4個地層、地下水和破壞面;其物理和力學參數如表2所示。

表2研究實例的物理和地質力學參數

圖10斷層面研究實例

圖11計算次數與最小三維安全因子實驗

為確定臨界滑動面,對蒙特卡洛隨機計算次數進行了實驗,總共計算次數達到了1000次。每次實驗計算的三維安全系數最小值的結果如圖11所示。圖中明確顯示在實驗計算了300次後,得到的安全系數最小值。這300次實驗的結果見圖12,這些計算結果差別不太大,其最小值為1.34,最大值是1.68。這個臨界滑動的研究程序是建立在最小安全系數的計算基礎之上的。而最小安全系數的計算結果取決於參數的隨機選擇。有關這一臨界滑動實例的三維可視圖見圖13。通過三維模型與二維模型結果的比較,用Janbu法確定臨界滑動面時,使用的是圖10所示的二維模型和表2所列的參數,通過這種二維模型計算出的安全系數為1.18,這要比用三維模型計算出結果的極小值(1.346)略小一點。

圖12三維安全因子分布曲線

8滑坡滑動過程模擬

基於GIS柵格三維邊坡穩定性分析模型和GIS柵格數據,對滑坡滑動過程進行了模擬,直到三維安全系數大於1為止。滑動方向按滑動面的主滑方向確定。圖14中展示了由滑動面確定的八個滑動方向。例如,若滑面方向的傾角在22.5°~67.5°之間,則滑坡將要滑動的方向恰在該圖的右上方(即「5」方向)。

圖13臨界滑動面三維展視圖

圖14滑動面的滑動主傾向

圖15滑坡滑動過程模擬流程方框圖

滑坡滑動過程的模擬流程見圖15。首先,要計算滑坡初始狀態時的三維安全系數,以確定其滑動的可能性。若其安全系數小於1,則接著進行下一步滑動過程模擬。先沿著由滑面主傾向確定的滑動方向移動滑坡多邊形;接著,在新的滑坡多邊形范圍內,分步(每一步等於一個柵格大小)計算每一個柵格的DEM和滑動的變化,並再次計算下一步滑動的新滑動方向。並在新的DEM數據和滑動多邊形范圍的基礎上,計算出新的三維安全系數。如果三維安全系數仍然小於1,則進行以下的新滑動步驟模擬。

在這種滑動模擬模型中,假定滑動面內摩擦角不改變,但除了在初始三維邊坡安全系數的計算過程之外,假定滑動面沒有內聚力(即內聚力為零)。

仍然用同樣的實例(如圖5所示),用不同的兩種動力學參數進行滑坡滑動過程模擬:

情況1:c=4kN/m2,φ=110,y=23kN/m3

情況2∶c=6kN/m2,φ=10.5°,γ=23kN/m3

第一種情況下,初始邊坡安全系數為0.82,在進行7步滑動之後,滑坡體開始趨於穩定,其安全系數是1.04。部分滑動步驟剖面及三維視圖變化如圖16所示。在此圖中,DEM的改變及滑坡體移動過程一目瞭然。運用三維邊坡地理信息系統,也可將可視滑動過程表現為GIS地圖和剖面圖的形式。滑坡體沿水平方向的最終滑動距離為3.0m。

圖16不同滑動階段的地表和剖面三維視圖

第二種情況下,滑坡體將一直向下滑動到平坦地區,水平方向滑動距離為14m。滑坡體最後停止滑動位置的三維展視圖如圖17所示。

圖17滑坡體最後停止位置

9討論和結論

在三維邊坡穩定性柱狀分析模型的基礎上,開發了一個全新的基於GIS柵格的三維確定性模型,並且通過一個問題實例證實了其正確性。在三維邊坡穩定性分析模型中,假定其初始滑面為一橢球面;其三維臨界滑面,是利用蒙特卡洛隨機模擬求取最小三維安全系數而確定的。基於GIS的柵格三維模型,滑坡滑動過程模擬用於判斷滑坡災害和預測滑動距離。已開發了作為計算程序軟體的三維邊坡地理信息系統,它足以完成一切有關三維邊坡問題的計算,其中的GIS組件用於實現GIS的空間分析功能和有效數據的管理。因其具有空間分析、數據管理和與邊坡相關的綜合數據的GIS可視化等優點,所以三維邊坡穩定性問題已經比較易於研究。自打全新的基於GIS柵格三維邊坡穩定性分析模型問世,就為慣於使用傳統數學方法研究邊坡穩定性的工作者拓展了一個新的研究領域和資料庫方法。

4. ANSYS如何模擬兩節點沿連線方向的滑動

使用NSOL命令,直接輸出指定節點的位移即可。
在使用ansys進行分析後,需要批量提取某些節點的位移數據,可以將這些節點寫到txt文件中,然後通過編寫循環來提取某時間段內的位移數據。當結構上承受一系列載荷作用時,ANSYS提供的慣性釋放的功能可計算結構與所承受載荷平衡所需要的加速度,此時結構上的位移約束只能約束剛體運動,且計算的約束點上的反力應為零。因為加速度是根據單元質量矩陣和所施載入荷計算的,包括平移和旋轉加速度,所以輸入數據中一定要有材料密度。

5. appium滑動操作總結

經常有人說appium的滑動實現是門藝術,實現不好就會出現事與願違的操作,比如本來想要向上滑動,卻出現了下拉的動作,這樣使得我們在調試中就要花費大量時間去調試滑動操作。

以下是我在滑動操作中總結的一點經驗,希望可以對遇到這方面問題的讀者有一點幫助;

總結:

1、滑動時中間要加等待時間,不加等待時間容易出錯,而且加等待時間的長短也要掌握好,一般在200-1000毫秒之間應該差不多,自己調試幾次感覺一下哪個時間比較穩,每個程序可能會有所差異,還要注意的是ios和Android的等待時間也會有差異,ios等待1000毫秒可能出現長安的效果;

TouchAction tAction = new TouchAction(driver);

 tAction.press(x,y).waitAction(200).moveTo(x,y).release().perform();

2、滑動的坐標點,滑動的坐標點要掌握好,如果坐標點掌握不好也會導致錯誤出現,比如Android和ios就有很大區別,以下示例分別是ios和Android實現上滑動作;

Android實現上滑:

int width=driver.manage().window().getSize().width;

int height=driver.manage().window().getSize().height;

int y1 = height*3/4; //上滑的開始點,從y1開始也就是屏幕的四分之三處

int y2 = height*1/4; //上滑的結束點,到y2結束也就是屏幕的四分之一處

TouchAction tAction = new TouchAction(driver);

 tAction.press(width/2,y1).waitAction(200).moveTo(width/2,y2).release().perform();

ios實現上滑:

 tAction.press(width/2,y1).waitAction(200).moveTo(width/2,y2-y1).release().perform();

解釋:

比如總高度是1600,那麼y1就是1200,y2是400,高度從1200移動到400的位置,這個大家應該都能理解,而ios的結束點的高度坐標是y2-y1,這樣得出的是一個負數,這樣感覺不太容易理解,這個可能是他們的演算法有差異;我理解ios滑動演算法是,y2-y1=-800,然後y1是1200,y1移動到y2,就是y1+y2=400,就是說移動到400的位置,這樣理解感覺也能說的通,當然只是我自己的理解,如有更好見解歡迎討論。

6. 滑動窗口技術工作原理

滑動窗口針對圖像的演算法的一般描述是:在規模為 W×H 的圖像中,按一定規律移動 w×h 的窗口(W>>w, H>>h),對窗口內像素點的像素值進行一系列運算,運算結束後窗口向右或向下移動一步,直到完成對整幅圖像的處理。

如果問的是滑動窗口協議的話,網路隨便搜索下,N多回答。

7. pyppeteer 模擬人工滑動驗證(一)

pyppeteer 有提供滑鼠滑動的方法,但是單獨調用 pyppeteer 滑動方法是無法通過驗證的,必須使滑動軌跡更加接近人工的方式才行。

這里我們先了解一下pyppeteer是如何實現滑動的

根據以上的4個方法組合就可以實現滑動。

如果滑塊已經頁面page中,則直接調用 page.hover(slide_id), 無需這么復雜

1.找出 iframe 的css選擇器 :iframe#sufei-dialog-content (你應該根據實際情況填寫)

2.在page中找到此 WebElement元素節點: iframe_element = await page.J('iframe#sufei-dialog-content')

此時還 無法在 iframe_element 上調用hover() 函數,因為iframe_element此時是 ElementHandle Class,而我們需要的是Frame Class

3.將ElementHandle Class強轉成Frame Class :iframe =await iframe_element.contentFrame()
完整的方法應該是:

其中x,y 是指移動到絕對橫向,縱向坐標,options是一個字典,只有一個鍵steps,用來控制速度。
例如你想要滑鼠向右移動500像素,則 x為當前橫坐標 + 500,y為當前縱坐標不變。
當前的橫坐標、縱坐標獲取有些麻煩,網上也有人這樣來滑動:
await page.mouse(10000,0) ,這樣是指把滑鼠橫行移動到10000,縱向移動到零,滑動無法縱向移動,所以只能看到橫行的移動效果。沒有添加第三個參數,則默認一步完成 {'steps':1}
注意:這里的坐標和像素值是一致的,左上角為起點(0,0)
steps 是指分成幾步來完成,steps越大,滑動速度越慢。(在源碼中,steps是指移動到指定x,y 分段滑動的次數,但是每次啟動滑動都會花費一定時間,可以認為steps是滑動的速度)

到現在,我們已經完成了滑動驗證的功能,當然它還不夠完善,但基本的功能已經齊全了,在下一節,介紹一下控制滑動軌跡,模擬人工滑動。

注意1:這里pyppeteer涉及到 page 與 iframe,peppeteer的功能是以frame為基礎單位來實現的,page 的功能 iframe 都有,page 在執行函數時,會先調用 frame = self.mainFrame,然後在frame上執行功能。mainFrame就是最外面的那個Frame

注意2: mouse對象是page/mainFrame對象所獨有的,在子frame中,也就是iframe 中不能調用mouse對象。

後續: pyppeteer 模擬人工滑動驗證(二)

8. 滑動平均濾波演算法

value_buf可以理解為循環隊列,裡面的數據不斷由AD采樣值來更新。每讀到一個新AD值,value_buf先更新再求平均。程序中有兩個小錯誤,但思想是對的。
if(i==N) i=0;
sum +=value_buf[count];

9. 面試難點!常用演算法技巧之「滑動窗口」

滑動窗口,顧名思義,就是有一個大小可變的窗口,左右兩端方向一致的向前滑動(右端固定,左端滑動;左端固定,右端滑動)。

可以想像成隊列,一端在push元素,另一端在pop元素,如下所示:

假設有數組[a b c d e f g h]
一個大小為3的滑動窗口在其上滑動,則有:

1、單層循環

2、雙層循環

模板只是一個解題思路,具體的題目可能需要具體分析,但是大體框架是不變的。
記住: 多刷題,多總結,是王道

1、最長不含重復字元的子字元串

2、絕對差不超過限制的最長連續子數組

3、無重復字元的最長子串

4、替換後的最長重復字元

滑動窗口演算法就是用以解決數組/字元串的子元素問題
滑動窗口演算法可以將嵌套的for循環問題,轉換為單循環問題,降低時間復雜度

生命不止堅毅魚奮斗,有夢想才是有意義的追求
給大家推薦一個免費的學習交流群:
最後,祝大家早日學有所成,拿到滿意offer,快速升職加薪,走上人生巔峰。
Java開發交流君樣:756584822

10. 按鍵精靈的一個模擬人工滑動的代碼

按鍵精靈只要把你操作的步驟錄製成功,
然後就可以一直重復使用,
這個看不懂沒關系的。

熱點內容
在配置更新的時候沒電關機怎麼辦 發布:2024-05-18 20:36:10 瀏覽:926
win7訪問win2000 發布:2024-05-18 20:27:41 瀏覽:387
青島人社局密碼多少 發布:2024-05-18 20:19:10 瀏覽:733
無法存儲呼叫轉移 發布:2024-05-18 20:18:30 瀏覽:125
資料庫的調優 發布:2024-05-18 20:18:29 瀏覽:345
sqlserver注冊表清理 發布:2024-05-18 20:13:14 瀏覽:990
linux刪除連接 發布:2024-05-18 20:06:56 瀏覽:821
linux搭建雲伺服器平台 發布:2024-05-18 19:52:21 瀏覽:401
安卓怎麼關閉美易訂閱 發布:2024-05-18 19:29:16 瀏覽:643
蘋果手機配置代理伺服器怎麼開 發布:2024-05-18 19:29:07 瀏覽:230