一:前言
我苦于网格的点坐标顺序久矣,今天写一个命令,使自己只需要知道point 0 的坐标和网格的长宽高就得到13种网格中每一个点的具体坐标,尤其是要旋转的时候,一个变换公式就解决了大部分问题。用matlab来写。
这里列出需要完成的功能:
1. 13种网格要能选择;
2. 输出形式要就是能直接用的命令流;
3. 能画出图来做验证更好;
4. 要有旋转、移动命令,使网格的变化多样;
5. 简洁一点,不要命令行,要函数;
二:完成度
1功能没完成,我寻思着与其写个switch函数来选择你要的网格模式,不如直接在文件里找。更加快速。
三:函数使用说明
1文件夹里共有三种形式的函数
1) 一种是point_”网格名称”,point_radial_cylinder,高亮部分是网格名称,这个可参考对照flac3d里面的网格看;这种函数一共13个。这种函数主要功能是得到不变换坐标的flac3d建模函数。
2) 一种是变换命令point_shift,就是实现网格节点坐标旋转移动的公式,这个主要思路不赘述,下面会演示一遍以明白此函数的用法;这种函数就1个。
3) 一种是point_shift_”网格名称”,比如point_shift_radial_cylinder,高亮部分是网格名称,;这种函数一共13个。这种函数主要功能是得到变换后坐标的flac3d建模函数。
2下面是实际演示部分
用常用的radial_cylinder(内嵌圆柱径向渐变矩形网格)(也就是下面这个模型)来说明具体用法。
第一种函数使用方法
1) 首先在MATLAB中打开point_radial_cylinder、point_shift、point_shift_radial_cylinder
用的matlab是r2018a
然后在(命令行窗口)运行clear清理工作区,使工作区没有数据
2) 再在(命令行窗口)运行[point,zoneradial_cylinder,size]=point_radial_cylinder(xp0,yp0,zp0,x0,y0,z0,d1,d2,d3,d4)这个函数,可以直接复制过去,然后修改参数xp0,yp0,zp0,x0,y0,z0,d1,d2,d3,d4,修改原则如下
这里为表示清楚,特意修改为[point,zoneradial_cylinder,size]=point_radial_cylinder(2,3,4,10,20,30,2,4,6,8)
修改完直接enter得到这个网格的大致形状(画不来曲线,有人知道如何在两点之间换一个弧线并能控制弧线位置的请告诉我一下,谢谢),凑合看一下打开
得到坐标和flac3d命令流如下:(有关size的可以自己后期修改,这里是取一样的)
3) 得到的大致图形如下:(注意,请不要关闭这个图形窗口,如果要变换网格的话,可以对照观察)
4) 将得到的命令流运行得到的flac3d模型如下:(model new 后直接复制命令即可)这个模型就出来了,看起来还行。有关size和ratio就自己手动调整
第二种函数使用方法
下面是旋转移动的变换命令
再复制[point_shift]=point_shift(point,x0,y0,z0,t,xm,ym,zm)命令
这里的参数意思是:
Point是调用上一个函数的,不用修改
这里为演示,直接绕网格p0—p1两点直线方向旋转90度,注意旋转轴的一点必须是p0,另一点随意取,因为有先旋转再移动的参数不仅比直接取空间一直线旋转的参数好取,还容易理解。
这里输入[point_shift]=point_shift(point,12,3,4,90,10,20,30)
向x方向移动10.y方向移动20,z方向移动30
得到旋转后的坐标数组point_shift(注意输入的时候要用英文输入法)
第三种函数使用方法
啥参数都不用改,最后直接在(命令行窗口)输入[zoneradial_cylinder_shift]=point_shift_radial_cylinder(point_shift,size)命令
得到最终转换的flac3d命令流
注意:此时可以打开图形窗口查看变换shift是否合理
颜色都给你变了一下,贴心不
直接复制新的字符串zoneradial_cylinder_shift下的命令流可以得到flac3d图形如下:
可以看到,变换的还算可以。其他网格使用方法相同。不赘述。
教程完:祝你好运
说在前面:东西需要自取,如有错误,欢迎告诉我。
交流可加我,不交流其实也可以,哈哈。
链接:https://pan.baidu.com/s/17ZtIg2mLsiR6V2GhzM372Q
提取码:lggz (来个关注)狗头保命
。。。。。。。。。。。。。。。。。。。。。。。。
话说我在b站写小说勾上与我在b站写教程冲突吗?(管他乱七八糟的-#^_^#)