matlab b样条修匀,GitHub - xiamenwcy/b_spline-fitting: 使用b样条曲面拟合一个给定的三维曲面,要求可以自适应地依照原始网格曲面曲率设置b样条的节点线。本版本...

更新日志涉及修复QPainter警告,优化网格参数化处理,包括去除无关函数,设置初始参数不可见,定义B_parameter函数,改进识别文件后缀和曲率文件的方法,提出新的矩形区域三角系查找策略,以及线积分和面积分的精确计算方法。通过遍历Mesh和顶点,结合折半查找和集合操作,实现了更高效的计算。同时注意到计算过程中存在的误差问题。
摘要由CSDN通过智能技术生成

更新日志

2015年11月13日

修复Warning: A paint device can only be painted by one painter at a time.

办法:在paintevent()里去掉下面的painter->begin(this);因为出现了两次。

参考:bool QPainter::begin ( QPaintDevice * device )的说明

2015年11月14日

去掉类中无关函数,设置节点线网格初始参数化不可见,待参数化后可见。

2015年11月15日

定义B_parameter ==的函数,用在

void KnotsViewer::set_knots_view(bool kv)

2015年11月18日

使用正则表达式准确识别了载入网格文件的后缀名、正确的曲率文件,提出了新的查找矩形区域三角系的方法

2015年11月20日

找到两种方法替代原始的确定矩形区域包含的三角形,以及如何求解面积分和线积分。

遍历Mesh的三角形,以重心落在矩形区域里面确定三角形也落在矩形区域里面,这其中需要用折半查找法确定重心所在的矩形区域。

遍历Mesh的顶点,以顶点落在矩形区域内部,就说明与顶点相关联的所有三角形都落在内部(需要用到set的概念),这样就可以确定了矩形区域包含的三角形,然后就可以求解面积分。至于线积分,也就是两个矩形相交的节点线的积分,我想可以这样:遍历这些非边界边,每条边都有两个半边,每个半边属于一个矩形,这样就找到了这条边相邻的两个矩形,然后计算矩形所包含的三角形的序号的交集(set_intersection),即为与这条边相交的三角形的序号。然后将这些三角形与边求交,取长即可求解线积分。

*注意:*无论是面积分还是线积分,都带有一些误差,因为有些三角形与矩形相交,但是三角形的三个点都不在矩形中。可以参考如下图片:

参数设置:

p=3,q=3,m=7,n=6

从0开始数,第2个矩形面包含的三角形:

687474703a2f2f37786f6864792e636f6d312e7a302e676c622e636c6f7564646e2e636f6d2f6273706c696e655f696d672f30312f6831312e6a7067

局部放大图:

687474703a2f2f37786f6864792e636f6d312e7a302e676c622e636c6f7564646e2e636f6d2f6273706c696e655f696d672f332d332d372d362d322f30312f6831342e6a7067

从0开始数,第3个矩形面包含的三角形:

687474703a2f2f37786f6864792e636f6d312e7a302e676c622e636c6f7564646e2e636f6d2f6273706c696e655f696d672f30312f68312e6a70673f696d61676556696577322f312f772f3430362f682f3433322f712f3735

第8条节点线(也就是第2个矩形面和第3个矩形面相交的线段)所关联的三角形:

687474703a2f2f37786f6864792e636f6d312e7a302e676c622e636c6f7564646e2e636f6d2f30312e6a7067

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值