第三章_曲线拟合算法的研究汇总(2)

2019-04-16 22:08

b) 平行弦法:???0; c) 平均转角法:13????3。 2) 两圆半径比(在保凸条件下): a) 垂直平分线法:R1R2?sin3???3???/sin; 442b) 平行弦法:R1R2??sin(?2)/sin(?2)?; c) 平均转角法:R1R2?sin3???3???/sin。 443.2.4 双圆弧拟合算法[8]

图11,设节点A和B为在第i?1个区间?Pi,Pi?1?上的相邻节点,经坐标变换后AB为横轴,A为原点,垂直于AB为纵轴。有向直线gA和gB为拟合曲线?j在A和B上的

有向切线。设C是直线gA和gB的交点,?和?分别是gA和gB与横轴的夹角,逆时 针方向为正;????,???,T为?ABC的内心。

Y 公切点 gA 轨迹弧 C gB P α> 0 ω-θ θ O2 O1 (a) 同向双圆

B β< 0 X

α> 0 A 公切点 轨迹弧 P θ O1 (b) 反向双圆弧

图11 双圆弧曲线

ω=β-α O2 ω-θ β> 0 X B Y C gA gB A T

如果C在横轴的上方,且gA和gB的方向分别与有向直线AC和CB的方向相同,那么,彼此相切且分别以gA和gB为切线的双圆弧公切点轨迹是过三点A,T,B且?ABC内部的圆弧,图11(a)。

如果gB的方向与CB的方向相反,则双圆弧公切点轨迹是过A点和B点且弧度为(???C/2)在AB下方的圆弧,图11(b)。

在当???0(保凸)时,双圆弧同向,为C形双圆弧。当???0时,双圆弧反向,为S 形双圆弧。在局部坐标系下,双圆弧圆心和半径可以统一地由下式给出:

6

左圆半径:R1?Lsin(???2??)/(2sin?sin), 22?

(3.5) (3.6) (3.7) (3.8) (3.9) (3.10)

圆心坐标:xA??R1sin?, yA?R1cos?。

?????), 右圆半径:R2??Lsin(??)/(2sinsin222圆心坐标:xB?L?R2sin?, yB?R2cos?。 公切点M的坐标:xM?Lsin(

???2??)cos(?2??)/sin?2

yM?Lsin(???2??)sin(??)/sin

22??其中?????;?是左圆弧的圆心角,???是右圆弧的圆心角;逆时针方向为正;正圆对应正圆心角,负圆对应负圆心角,??????,L是AB的长度。

3.2.5 误差分析方法

利用法向误差判断方法,步骤如下:

(1)计算二次曲线在节点Pi,Pi?1间n等分的各分点坐标。

1)对于抛物线y?ax2?b,在节点Pi,Pi?1间将横轴值x等分为n份:

xi?xi0?xi1???xin?1?xin?xi?1,计算出抛物线上各对应分点坐标:Pir(xir,y(xir)) r=1,2,…,n-1。

?x?asec??x?acos?2)对于椭圆?、双曲线?,在节点Pi,Pi?1间将参数?等分为n

?y?btg??y?bsin?份:?i??i0??i1????in?1??in??i?1,计算出椭圆或双曲线上各对应分点坐标:

Pir(x(?ir),y(?ir)) r=1,2,…,n-1

(2)判断分点Pi所对应的圆弧,过两圆心o1(x1,y1),o2(x2,y2)的直线(必过公切点)方程:

F(x,y)?Ax?By?C?0

(3.11)

其中:A?y2?y1;B?x1?x2;C?x2y1?x1y2。 将节点Pi(xi,yi)坐标代入式(3.11)左边,将有

F(xi,yi)?0(或F(xi,yi)?0)

(3.12)

将二次曲线上分点Pir坐标xir,yir代入式(3.11)左边计算值,如果F(xir,yir)?0,则Pir点对应第一段圆弧,否则对应第二段圆弧。

7

(3)计算法向误差

对应第一段圆弧的误差公式是:

?ir(1)?(xir?x1)2?(yir?y1)2?R1 ,r?1,2,?,m(m?n?1)

(3.13)

其中m是对应第一段圆弧的最后一个分点号。 对应第二段圆弧的误差公式是:

?ir(2)?(xir?x2)2?(yir?y2)2?R2 ,r?m?1,m?2,?,n?1

(3.14)

(4)判断最大误差

设?i?max(?ir,?ir(1)(2)),i?1,2,?,n?1.

如果?i??(?为指定的最大的允许误差),则双圆弧拟合结果为所求。如果?i??,则对节点Pi,Pi?1间用0.618法缩小区间,重新进行双圆弧拟合,直到满足误差要求。

3.2.6 双圆弧的最佳逼近算法

如何利用双圆弧样条对平面二次曲线进行逼近呢?简单的办法就是先将曲线插值出型值点,再对型值点进行拟合[27-29],这样做的缺点是:增加了插值误差;型值点过密会增加圆弧的段数。为了很好地解决这个问题,在本章中另外提出的一种方法是先将平面二次曲线进行合适的分割,再用双圆弧拟合,计算逼近误差,如果超过允许误差,再对曲线进行分割、拟合,直至满足要求。这样能够得到在逼近误差允许范围内圆弧段数最少的圆弧样条。

曲线的分割是指在曲线的拐点和奇点处将曲线分成几段,每一段分别处理。另外,为了算法的简捷,要求分割后的曲线两端点的切线角小于90o。如图12所示曲线Г为分割后的平面二次曲线,在两端点P1、P2之间无奇点、无拐点。要求过两点P1、P2分别作圆弧C1、C2,与曲线Г相切于点P1、P2同时公切于P点。

O2 已知P1、P2两点坐标,曲线最佳逼近算法为:

曲线Г

C1 P1 P C2

P2

O1 图12 分割后的平面二次曲线

8

(1)计算 P1、P2两点的切线T1、T2 在直角坐标系下,任意二次曲线的方程为:

F(x,y)?a11x2?2a12xy?a22y2?2a13x?2a23y?a33?0 过二次曲线上点P1(x1,y1)的切线方程为:

a11x1x?a12(x1y?xy1)?a22y1y?a13(x?x1)?a23(y?y1)?a33?0 同理可以得出过P2的切线方程。 (2)确定公切点P

公切点的选择直接影响到双圆弧逼近曲线的光顺性和逼近效果,可以证明双圆弧公切点轨迹是一圆弧,考虑到双圆弧样条与平面二次曲线要取得最好的逼近效果,将公切点取作公切点圆弧与平面二次曲线的交点,这样双圆弧与被逼近的二次曲线段有5个交点(端点相切算两个交点),因而基本上是最佳的双圆弧逼近。

如图13所示,过P1S1P2,1、P2作切线T1、T2交点为S,夹角为?。作等腰三角形P使?P,则公切点圆弧必然与直线P1S1、P2S1相切。 1S1P2??P1SP2

Γ

P1 θ1 α1 P T1 S θ S1 C0 α2 θ2 P2 T2 O 图13 确定公切点

[25]

可以证明公切点P的轨迹为过P,其圆心及半径分别为: 1、P2的圆弧C0x0?y0?x1?x2y2?y1??ctg 222y1?y2x2?x1??ctg 222R?1?(x2?x1)2?(y2?y1)2csc 22

9

其中:ctg?2?‘’'2'21?yy?(1?y)(1?y1212)'y2?y1' ,当

y1'?1y?1'2时成立。

求公切点转化为求公切点圆弧轨迹C0与二次曲线Γ的交点,设交点坐标为(x,y),则有:

222??(x?x0)?(y?y0)?R ?22??a11x?2a12xy?a22y?2a13x?2a23y?a33?0解此二元二次方程组,即可求出交点P坐标(x,y)。

下面证明公切点圆弧轨迹C0与二次曲线Γ在P从图13可1、P2之间只有一个交点。以看出?1??2??1??2,因此存在三种情况:

a) ?1??1,?2??2,则P2S1与曲线Γ有一个交点,而P1S1与曲线Γ无交点; b) ?1??1,?2??2,则P1S1与曲线Γ有交点,而P2S1与曲线Γ无交点; c) ?1??1,?2??2。

由于对曲线进行了分割,分割后的曲线段与圆弧应是同向凸的,假设为上凸,如图13所示,属情况b),在P1附近C0位于曲线Γ的下方,在P2附近C0位于曲线Γ的上方,因此C0与曲线Γ必有唯一的交点。情况a)同理可证。情况c)是一种特殊情况,C0即为所求的双圆弧。

(3)求双圆弧C1 、C2

已知两端点P另外又已知两圆弧的公共切点,很容易找到两圆弧的1、P2及其斜率,圆心及半径---(x1,y1)、R1、(x2,y2)、R2。

(4)误差估计

逼近的双圆弧与原曲线的误差计算,是算法的重要组成部分。按曲线C的法线误差计算,可以得出双圆弧C1 、C2与原曲线Γ的误差?1、?2:

2?1?|(y?y1)2?(x?x1)?R1| 点(x,y)在P1和P之间 2?2?|(y?y2)2?(x?x2)?R2| 点(x,y)在P和P2之间

如何找到?1、?2的最大值呢?直接求导很复杂,本章中提出一种区域逼近的方法求

'最大值。首先将区域十等分,求每点的误差及其最大值?max,由于曲线是单峰的,所以

''真正的误差?max一定在?max附近,将区域缩小至?max的邻近区域,重复以上过程,直至

10


第三章_曲线拟合算法的研究汇总(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:保持党员纯洁性教育思想总结

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: