首页 > 其他分享 >OpenCASCADE曲面求交之迭代法2

OpenCASCADE曲面求交之迭代法2

时间:2023-05-28 13:11:08浏览次数:37  
标签:求交 迭代 交线 参数 OpenCASCADE 曲面 迭代法

OpenCASCADE曲面求交之迭代法2

[email protected]

1 Introduction

朱心雄等著《自由曲线曲面造型技术》书中对曲面求交的迭代法有详细介绍,其中关于曲面迭代求交的原理介绍如下:为求得两个曲面精确的交点,Newton-Raphson迭代法得到广泛应用,该法的优点为

  • 计算精度高,速度快,在初值选择比较合理的情况下,一般仅需要迭代二到三次就可以使交点的精度从百分之几提高到万分之几甚至百万分之一的数量级。
  • 适用范围广,只要能获得曲面的几何位置、切矢、法矢等信息,不论什么类型的曲面都可以使用迭代法。

其缺点是对初始值要求较严格,初始值选择不当,可能导致迭代不收敛,也就无法得到精确的交点。

在曲面求交等问题中,一般可根据参与变化的参数数量将迭代法分为三参数迭代法和四参数迭代法两种类型。我们知道,一张参数曲面有两个参数,两张参数曲面共有四个参数变量。采用三参数迭代法时,两个曲面的四个参数中只有三个参数参与迭代过程,而保持另一个参数固定不变,这实际上就是计算不变参数的等参数线与另一张曲面的交点。采用四参数迭代法时,两张曲面的四个参数变量都参与迭代过程,四者都可能变化。两种迭代法各有其优缺点。在下述情况下以应用三参数迭代法为宜:

  • 要求将交点迭代至某参数线上,以利于后继追踪求交法中滤除无效初值点;
  • 当交线接近于参数边界时,希望将交点迭代至准确的边界上,以便进行裁剪等操作。

但对于一般交点,三参数法则未必适用。首先遇到的问题是在四个参数中选择何者作为不变参数,固定参数选择不当可能降低迭代收敛速度以至根本不收敛,或者破坏交线拓朴结构的正确性。迭代法本身不能够成独立的求交方法,主要在追踪法中使用,OpenCASCADE中曲面求交追踪法的类是IntWalk_PWalking。前面的blog已经介绍了曲面交求的离散网格法,和类IntWalk_TheInt2S实现原理,本文主要介绍OpenCASCADE曲面求交迭代法的类IntWalk_TheInt2S的用法结果。

2 Newton迭代求交

前文介绍了曲面求交的离散网格法,使用类IntPolyh_Intersection来计算两个曲面网格的交线,计算结果是网格交线的一组交点。把离散网格的交点作为迭代法的输入,来检查一下迭代法的计算结果。

Newton迭代法的输入是初始估计点分别在两个曲面上的四个参数(u1, v1, u2, v2),及两个曲面aS1和aS2,迭代终止精度TolTangency。将计算结果输出,其中第一个距离是迭代的精确值与网格上交点的距离,第二个距离是精确交点的u1, v1, u2,v2分别在两个曲面上点的距离,可以看出经过Newton迭代计算后,根据精确交点的参数u1, v1, u2, v2计算出两个曲面上的点在指定的精度下是重合的。为了便于观察,将计算结果输出到DRAW中查看。

其中红色的线是两个曲面网格的交线,绿色的线是将网格交线经过Newton迭代后得到精确交线。再将两个交线与实际曲面一起显示来对比:

从图上可以看出,绿色的交线已经能比较准确地表达两个曲面之间的相交情况。比网格交线效果好。

3 Conclusion

综上所述,将曲面求交的离散网格交线作为Newton迭代法的初始估计点,可以得到较好的交线。后面再分析一下曲面求交的追踪法,看在追踪法中是如何使用离散网格交线数据的。对于一般的NURBS曲面求交,先用离散网格法或分割离散法求得交线和交点的估计值,然后再应用Newton迭代法由估计值求得精确交点。如果认为估计交点分布不够细密,可以对网格加密,由此可以得到完整、致密的精确交线而无需应用追踪法。

标签:求交,迭代,交线,参数,OpenCASCADE,曲面,迭代法
From: https://www.cnblogs.com/opencascade/p/occt_IntWalk_TheInt2S.html

相关文章

  • OpenCASCADE曲面求交之迭代法
    OpenCASCADE曲面求交之迭代法[email protected]朱心雄等著《自由曲线曲面造型技术》书中对曲面求交的迭代法有详细介绍,其中关于曲面迭代求交的原理介绍如下:为求得两个曲面精确的交点,Newton-Raphson迭代法得到广泛应用,该法的优点为计算精度高,速度快,在初值选择比较合......
  • OpenCASCADE曲面求交之网格离散法3
    OpenCASCADE曲面求交之网格离散法[email protected]由朱心雄等著《自由曲线曲面造型技术》书中对曲面求交之网格离散法描述如下:该法的基本思想是先将曲面离散为由小平面片组成的网格,当网格足够密时,可以认为已经非常接近真实曲面,对分别表示不同曲面的两张网格,利用平......
  • OpenCASCADE曲面求交之网格离散法2
    OpenCASCADE曲面求交之网格离散法[email protected]由朱心雄等著《自由曲线曲面造型技术》书中对曲面求交之网格离散法描述如下:该法的基本思想是先将曲面离散为由小平面片组成的网格,当网格足够密时,可以认为已经非常接近真实曲面,对分别表示不同曲面的两张网格,利用平......
  • OpenCASCADE曲面求交之网格离散法1
    OpenCASCADE曲面求交之网格离散法[email protected] 1Introduction由朱心雄等著《自由曲线曲面造型技术》书中对曲面求交之网格离散法描述如下:该法的基本思想是先将曲面离散为由小平面片组成的网格,当网格足够密时,可以认为已经非常接近真实曲面,对分别表示不同曲面的两张网格,利用......
  • 该算法 转速环采用广义预测控制和扩展状态观测器作为前馈叠加输出为给定转矩 给定转矩
    该算法转速环采用广义预测控制和扩展状态观测器作为前馈叠加输出为给定转矩给定转矩经过牛顿迭代法数值求解得到dq电流仿真表明具有良好的调速性能和抗干扰能力ID:7678651585887577......
  • opencascade下载安装
    安装要求(https://www.opencascade.com/components/cad-simplification-component/)下载地址:https://dev.opencascade.org/release截图如下(从https://dev.opencascade.org进,RESOURCES=>Download): 安装之后目录:《opencascade-7.7.0》文件夹:在环境变量中添加环境变量:DEvEnv......
  • 牛顿迭代法求根
    用牛顿迭代法求根。方程为ax^3+bx^2+cx+d=0,系数a,b,c,d的值依次为1,2,3,4,由主函数输入。求x在1附近的一个实根。求出根由主函数输出代码如下:#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<math.h>intmain(){ floatsout(floata,floatb,floatc,floatd); ......
  • 牛顿迭代法求方程根
    一、问题描述编写用牛顿迭代法求方程根的函数。方程为ax3+bx2 +cx+d=0,系数a,b,c,d由主函数输入。求x在1附近的一个实根。求出根后,由主函数输出。牛顿迭代法的公式是: x=xo-f(x0)/f'(x0),设迭代到|x-x0|<=10e-5时结束。二、牛顿迭代公式 三、解题思路1、在......
  • 牛顿迭代法求方程根
    问题描述编写用牛顿迭代法求方程的根。方程ax3+bx2+cx+d=0,系数a,b,c,d由主函数输出。求x在1附近的一个实根,由主函数输出。牛顿的迭代法公式是:x=x0-f(x0)/f’(x0)代码如下#include<stdio.h>#include<math.h>floatfun(doublea,doubleb,doublec,doubled){ floatx0=......
  • 6牛顿迭代法
    #include<stdio.h>#include<math.h>floatsolution(floata,floatb,floatc,floatd){ floatx0,f,fd,h; floatx=1.5; do { x0=x; f=a*x0*x0*x0+b*x0*x0+c*x0+d; fd=3*a*x0*x0+2*b*x0+c; h=f/f......