曲线积分量计算

1 Introduction
曲线积分量的计算主要包括曲线弧长,质量质心Center of Mass和惯性张量矩阵Inertia Tensor。这是三维软件中较常见的功能,查询模型的长度、面积和体积等。对于特殊的曲线如直线、圆等,我们有计算公式可以计算,对于一般任意地曲线,怎么计算这些积分量呢?可以带着问题来看看OCCT中是怎么实现这一功能的。
2 定义

2.1 曲线弧长

考虑空间曲线,一般用参数方程表示:C(t) = [x(t), y(t), z(t)],在空间曲线上插入N个点将曲线分成很多小段,在每个小段上可以用连接两个点的直线段来近似这段曲线的长度。

当点的数量N足够多即每小段分得足够小的时候,每小段线段的和的极限存在,即为曲线的弧长。当曲线用参数方程表示时,计算空间曲线弧长公式如下:


2.2 质量 Mass和质心 Center of Mass

当曲线形构件的线密度是变量,通过对弧长的曲线积分可以计算其质量。同样地,对于参数方程表示的曲线,其中计算公式为:

由力学可知,质心坐标为物体对三个坐标轴的静矩与物体质量的比值。在OCCT中只能计算线密度是常量的质量和质心。当线密度为常量时,质心的计算公式如下:

2.3 惯性张量 Inertia Tensor

对于三维空间自由运动的刚体存在无穷多个可能转轴,计算绕所有转轴的惯性矩显示是不现实的。因此,需要考虑这样的问题:是否存在一个量,它能够表示刚体绕任意轴的惯性矩?答案是肯定的,该量就是刚体的惯性张量。惯性张量描述了刚体的三维质量分 布,若在某坐标系下表示出来,它就是一个3阶对称矩阵。图3-3所示的一个刚体,其上定 义了固连的坐标系{A}

惯性张量是绕着一个点的,而转换惯量Moment of Inertia是绕着一个轴的。
3 数值积分

空间曲线弧长、质心和惯性张量矩阵的计算都需要计算定积分,定积分的计算一般是通过Newton-Leibniz公式,找出被积函数的原函数来计算。但是在许多实际计算问题中,往往难以运用上述方法来求积分,因为有些被积函数找不到原函数。或者无完整的表达式而仅是由实验测量或计算给出的若干离散点上的量值。对于这类问题,常常采用另一种求积方法数值积分法。

OCCT中实现了Gauss-Legendre积分算法,是一种常见的Gauss型求积算法。Gauss型求积算法是数值稳定的,且对有限闭区间上的连续函数,Gauss求积的数值随节点数目的增加而收敛到准确积分值 。
Gauss型求积算法的关键是高斯点Xi和求积系数Ai的计算。在OCCT中,将这些数据保存起来通过查表的方式来获取,避免复杂计算,以空间换时间:

由下图所示的Gauss-Legendre积分公式可知,通过查表得到高斯点Xi和求积系数Wi后,代入公式即可以计算。

http://staff.ustc.edu.cn/~rui/textbooks/nm/slides/num-integration-gauss.html#/16
4 代码分析

OCCT中计算曲线积分量的类是BRepGProp,主要实现代码在函数Perform()中:

使用函数math::GaussPoints()和math_::GaussWeights()来查表得到高斯点和求积系数:
  math::GaussPoints  (Order,GaussP);
  math::GaussWeights (Order,GaussW);
其中曲线在参数u处的切矢的模为弧长微元ds,变量dim用来计算曲线弧长,Ix, Iy, Iz分别是静矩,用来计算质心,最后的计算结果为:

其中惯性张量为inertia变量,曲线弧长dim,g为质心。OCCT也提供了更通用的积分类如math_GaussSingleIntegration, math_GaussMultipleIntegration, math_GaussSetIntegration,在计算曲线弧长类GCPnts_AbscissaPoint::Length()中有使用,但是这里并没有使用,可能是为了一次计算出所有的积分量。
5 Conclusion

曲线积分量主要有曲线弧长,质心和惯性张量、转动惯量等。要计算任意曲线的这些量,只能借助积分这个工具。这些量都是通过积分来计算,而联系积分公式和实现的是数值方法。其中Gauss型积分算法精度高,使用广泛。OCCT中实现了Gauss-Legendre积分算法来计算。理解曲线积分量的计算后,可以去理解曲面和体的积分量计算。
OCCT的代码实现,只有找到相关代码实现的理论出处才感觉是理解了,能看懂代码,就可以去改进了。每次探寻的过程就是理论联系实践的机会,体验数学工具的美妙。
6 参考文献

1 同济大学数学系. 高等数学. 高等教育出版社. 2019

2 陈纪修, 於崇华, 金路. 数学分析. 高等教育出版社. 2019

3 易大义, 陈道琦. 数值分析引论. 浙江大学出版社. 1998

4 冯康. 数值计算方法. 国防工业出版社. 1978

5 黄云清, 舒适. 数值计算方法. 科学出版社. 2009

6 http://www.tup.tsinghua.edu.cn/upload/books/yz/091702-01.pdf

7 https://math.ecnu.edu.cn/~sfzhu/course/NumerAnal/NumerInt3.pdf

8 https://ocw.mit.edu/courses/16-07-dynamics-fall-2009/dd277ec654440f4c2b5b07d6c286c3fd_MIT16_07F09_Lec26.pdf

 
 
 
 

© 版权声明
THE END
喜欢就支持一下吧
点赞2.5W+ 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容