细分生成球面三角网格(matlab)

论文需要生成一个球面网格,最简单的想法是通过正多面体的细分来逼近球面。我们知道柏拉图多面体有五个,三个是由正三角形组成(正四,八,二十面体),一个由正方形组成(正六面体),一个由正五边形组成(正十二面体)。三角形的细分比较简单,而且保持拓扑可以连续细分。

2011032212194925.png

由于只是为了得到图片,就直接用matlab来实现了,方便,matlab中画着三角网格可以用trimesh或者patch

       Syntax

trimesh(Tri,X,Y,Z)
trimesh(Tri,X,Y,Z,C)
trimesh(...'PropertyName',PropertyValue...) 

patch(X,Y,C)
patch(X,Y,Z,C)
patch(FV)
patch(...'PropertyName',propertyvalue...)
patch('PropertyName',propertyvalue,...)

但是都要用一个参数来指定每个三角面是由那些点组成(比如trimesh中的Tri)。我们用vertex储存点,face指定面由哪些点构成,细分的函数如下:

 1 function [vertex, face] = Subdivision(vertex, face)
 2 face_num = size(face, 1);
 3 vertex_num = size(vertex, 1);
 4 new_vertexs = zeros(face_num*3, 3);
 5 new_faces = zeros(face_num*3, 3);
 6 for i = 1 : face_num
 7     new_vertexs(3*(i-1)+1, :)=(vertex(face(i, 1), :)+vertex(face(i, 2), :))/2;
 8     new_vertexs(3*(i-1)+1, :)= new_vertexs(3*(i-1)+1, :)/norm(new_vertexs(3*(i-1)+1, :),2);
 9     new_vertexs(3*(i-1)+
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
三角网格模型(mesh)的修复可以通过以下步骤进行: 1. 数据检查:首先,对三角网格模型的数据进行检查,包括检查是否有缺失的面、是否有不满足拓扑结构的边等。这可以通过计算模型的边长、角度和面积等数据来判断模型的质量和完整性。 2. 预处理:根据检查结果,对问题区域进行预处理。这可能包括对异常边和面进行修复,或者对细小或尖锐的三角形进行变形或消除。 3. 重建缺失部分:如果存在缺失的面或边,可以使用插值、曲面重建等方法对其进行修复。例如,可以使用三角形重建算法从周围的数据点推断缺失的三角形。 4. 优化拓扑结构:根据需要,对三角网格的拓扑结构进行优化。这包括合并共面的三角形、移除共线的边和面、修复不满足欧拉公式的区域等。 5. 平滑和细化:通过平滑算法对三角网格进行局部或全局的平滑操作,使其更加光滑和连续。此外,可以使用细化算法对网格进行细分,以增加分辨率和细节。 6. 评估和修正:最后,对修复后的三角网格进行评估,检查修复效果是否满足需求。如果有不满意的地方,可以根据反馈信息对网格进行进一步的修正和优化。 总之,三角网格模型的修复是一个复杂的过程,需要根据具体情况选择合适的方法和算法,并不断进行评估和修正,以达到所需的修复效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值