關(guān)于用matlab給flac3d網(wǎng)格坐標(biāo)點(diǎn)建模的嘗試(writeby-pzp-cug)

一:前言
我苦于網(wǎng)格的點(diǎn)坐標(biāo)順序久矣,今天寫一個(gè)命令,使自己只需要知道point 0 的坐標(biāo)和網(wǎng)格的長(zhǎng)寬高就得到13種網(wǎng)格中每一個(gè)點(diǎn)的具體坐標(biāo),尤其是要旋轉(zhuǎn)的時(shí)候,一個(gè)變換公式就解決了大部分問題。用matlab來寫。
?
這里列出需要完成的功能:
1.????? 13種網(wǎng)格要能選擇;
2.????? 輸出形式要就是能直接用的命令流;
3.????? 能畫出圖來做驗(yàn)證更好;
4.????? 要有旋轉(zhuǎn)、移動(dòng)命令,使網(wǎng)格的變化多樣;
5.????? 簡(jiǎn)潔一點(diǎn),不要命令行,要函數(shù);
?
二:完成度
1功能沒完成,我尋思著與其寫個(gè)switch函數(shù)來選擇你要的網(wǎng)格模式,不如直接在文件里找。更加快速。
?
三:函數(shù)使用說明
1文件夾里共有三種形式的函數(shù)
1)????? 一種是point_”網(wǎng)格名稱”,point_radial_cylinder,高亮部分是網(wǎng)格名稱,這個(gè)可參考對(duì)照flac3d里面的網(wǎng)格看;這種函數(shù)一共13個(gè)。這種函數(shù)主要功能是得到不變換坐標(biāo)的flac3d建模函數(shù)。
2)????? 一種是變換命令point_shift,就是實(shí)現(xiàn)網(wǎng)格節(jié)點(diǎn)坐標(biāo)旋轉(zhuǎn)移動(dòng)的公式,這個(gè)主要思路不贅述,下面會(huì)演示一遍以明白此函數(shù)的用法;這種函數(shù)就1個(gè)。
3)????? 一種是point_shift_”網(wǎng)格名稱”,比如point_shift_radial_cylinder,高亮部分是網(wǎng)格名稱,;這種函數(shù)一共13個(gè)。這種函數(shù)主要功能是得到變換后坐標(biāo)的flac3d建模函數(shù)。
2下面是實(shí)際演示部分
用常用的radial_cylinder(內(nèi)嵌圓柱徑向漸變矩形網(wǎng)格)(也就是下面這個(gè)模型)來說明具體用法。

第一種函數(shù)使用方法
1)????? 首先在MATLAB中打開point_radial_cylinder、point_shift、point_shift_radial_cylinder

然后在(命令行窗口)運(yùn)行clear清理工作區(qū),使工作區(qū)沒有數(shù)據(jù)

2)????? 再在(命令行窗口)運(yùn)行[point,zoneradial_cylinder,size]=point_radial_cylinder(xp0,yp0,zp0,x0,y0,z0,d1,d2,d3,d4)這個(gè)函數(shù),可以直接復(fù)制過去,然后修改參數(shù)xp0,yp0,zp0,x0,y0,z0,d1,d2,d3,d4,修改原則如下
xp0,yp0,zp0是你要建立網(wǎng)格的point 0點(diǎn)
x0,y0,z0是你的網(wǎng)格的長(zhǎng)(x方向)寬(y方向)高(z方向)
d1,d2,d3,d4是你的網(wǎng)格內(nèi)部圓柱的控制長(zhǎng)度,這個(gè)對(duì)照內(nèi)嵌圓柱徑向漸變矩形網(wǎng)格圖來看即可明白參數(shù)意思
這里為表示清楚,特意修改為[point,zoneradial_cylinder,size]=point_radial_cylinder(2,3,4,10,20,30,2,4,6,8)
修改完直接enter得到這個(gè)網(wǎng)格的大致形狀(畫不來曲線,有人知道如何在兩點(diǎn)之間換一個(gè)弧線并能控制弧線位置的請(qǐng)告訴我一下,謝謝),湊合看一下打開
得到坐標(biāo)和flac3d命令流如下:(有關(guān)size的可以自己后期修改,這里是取一樣的)

3)????? 得到的大致圖形如下:(注意,請(qǐng)不要關(guān)閉這個(gè)圖形窗口,如果要變換網(wǎng)格的話,可以對(duì)照觀察)

4)????? 將得到的命令流運(yùn)行得到的flac3d模型如下:(model new 后直接復(fù)制命令即可)這個(gè)模型就出來了,看起來還行。有關(guān)size和ratio就自己手動(dòng)調(diào)整

?
第二種函數(shù)使用方法
下面是旋轉(zhuǎn)移動(dòng)的變換命令
再?gòu)?fù)制[point_shift]=point_shift(point,x0,y0,z0,t,xm,ym,zm)命令
這里的參數(shù)意思是:
Point是調(diào)用上一個(gè)函數(shù)的,不用修改
x0,y0,z0與原點(diǎn)xp0,yp0,zp0構(gòu)成一條直線,模型通過這條直線旋轉(zhuǎn),由于有移動(dòng)的距離
xm,ym,zm,所以理論上模型通過旋轉(zhuǎn)和移動(dòng),可以到達(dá)任何位置。
t是旋轉(zhuǎn)的角度,方向是局部坐標(biāo)系的逆時(shí)針為正,具體看下面的例子即可明白旋轉(zhuǎn)方向
這里為演示,直接繞網(wǎng)格p0—p1兩點(diǎn)直線方向旋轉(zhuǎn)90度,注意旋轉(zhuǎn)軸的一點(diǎn)必須是p0,另一點(diǎn)隨意取,因?yàn)橛邢刃D(zhuǎn)再移動(dòng)的參數(shù)不僅比直接取空間一直線旋轉(zhuǎn)的參數(shù)好取,還容易理解。
這里輸入[point_shift]=point_shift(point,12,3,4,90,10,20,30)
向x方向移動(dòng)10.y方向移動(dòng)20,z方向移動(dòng)30
得到旋轉(zhuǎn)后的坐標(biāo)數(shù)組point_shift(注意輸入的時(shí)候要用英文輸入法)

第三種函數(shù)使用方法
啥參數(shù)都不用改,最后直接在(命令行窗口)輸入[zoneradial_cylinder_shift]=point_shift_radial_cylinder(point_shift,size)命令
得到最終轉(zhuǎn)換的flac3d命令流

注意:此時(shí)可以打開圖形窗口查看變換shift是否合理

直接復(fù)制新的字符串zoneradial_cylinder_shift下的命令流可以得到flac3d圖形如下:

可以看到,變換的還算可以。其他網(wǎng)格使用方法相同。不贅述。
教程完:祝你好運(yùn)

說在前面:東西需要自取,如有錯(cuò)誤,歡迎告訴我。
交流可加我,不交流其實(shí)也可以,哈哈。
鏈接:https://pan.baidu.com/s/17ZtIg2mLsiR6V2GhzM372Q?
提取碼:lggz? (來個(gè)關(guān)注)狗頭保命
。。。。。。。。。。。。。。。。。。。。。。。。
話說我在b站寫小說勾上與我在b站寫教程沖突嗎?(管他亂七八糟的-#^_^#)