这一期我们聊个有意思的问题。问题的背景是生物力学。计算动脉的压力后,想要取出中间的一段,把这一段剖开,铺平,再观察压力分布:
动脉压力分布
剖开、铺平
为了解决这个问题,就需要做一把“代码手术刀”,先上下各切一刀,然后再沿着血管的边割开,再进行铺平。最后把压力数据转移过来显示。
问题是个有意思的问题,但是解决起来一点都不简单。我常常跟团队的人讨论,我们专业工程上的画图也好,数据处理也好,开发软件也好。内核都是数学和力学功底,这是我们跟别人专业区别最大的,尽管都是画图,都是软件开发。
具体到这个问题上,就是个典型的数学问题。我在之前的文章里提到,用MATLAB进行CAD处理,这个问题可以算作是那个问题的延申。
思路
思路是简单的。对于我考虑的管段,我截取多个剖面的结果(图1),然后每个剖面的结果拉直展开(图2),然后统一插值显示就OK了。
图1
图2
1. 那么如何截取剖面呢?
我们知道,这个模型是网格模型,压力的结果是结点的结果。如果我用平行于xy的平面去截取剖面,就是用截面和血管求交点。血管壁面由三角形网格组成,就变成截面和三角形求交。
图3
2. 那么截取剖面时候,如何获取压力数据呢?
上面的操作截取的剖面,是位置结果,最终截取的点未必处于节点上,那么如何能给出截取点的压力呢?当然是插值啦。
3. 那么截取完剖面后,如何铺展开呢?
比如我的起点是i,那么我只要“捏住”i不动,其余的点按照长度间隔依次往后“加”,同时把压力随之排过去。
图4
4. 如何保证“下刀”的地方是一条线上?
血管本身近似于一个圆,我截完一个剖面后,对这个剖面的点做一个逆时针的排布,起始点就是在下面这个位置:
图5
所有的剖面都在这个相对位置上。
图6
5. 展示下最后的结果
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删