优化了的过关键点的光滑曲线拟合算法

优化了的过关键点的光滑曲线拟合算法

ID:26201527

大小:46.50 KB

页数:6页

时间:2018-11-25

优化了的过关键点的光滑曲线拟合算法_第1页
优化了的过关键点的光滑曲线拟合算法_第2页
优化了的过关键点的光滑曲线拟合算法_第3页
优化了的过关键点的光滑曲线拟合算法_第4页
优化了的过关键点的光滑曲线拟合算法_第5页
资源描述:

《优化了的过关键点的光滑曲线拟合算法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、优化了的过关键点的光滑曲线拟合算法作者:中国论坛网收集来源:http://www.51one.net加入时间:2004-8-25这个是我一个数学老师(教授,数学高手,经常自己做算法)给我的例子,用于多个离散点拟合光滑曲线的,他优化了追赶法,这个例子适用于闭合和不闭合两种情况。当时由于工程情况,写的急,代码不好看,但是很好用。为了方便传递参数,我做了一个链表,用时候根据自己情况可以修改,核心算法不动即可。classCFoldPoint{public:   doubleX;   doubleY;};typedefCTypedPtrListCFoldPointList;ty

2、pedefCArrayCDoubleArray;三个函数,SPLine调用另外两个。用时候直接调用SPLine函数,入口pList是已知离散点链表,pDestList是生成的点的链表。SM是在两个点中间插入点的数目,continue=0是采样点无规律,要求生成闭合曲线。1是采样点x坐标连续2是y连续voidZG(CDoubleArray*A,CDoubleArray*B,CDoubleArray*C,CDoubleArray*G,int&LOGI){ //追赶法 registerlongI; intN; N=A->GetSize(); if(LOGI==0) {  (

3、*C)[0]=(*C)[0]/(*B)[0];  for(I=1;I  {   (*B)[I]=(*B)[I]-(*A)[I]*(*C)[I-1];   (*C)[I]=(*C)[I]/(*B)[I];  }  (*A)[0]=0.;  (*C)[N-1]=0.;  LOGI=1; } (*G)[0]=(*G)[0]/(*B)[0]; for(I=1;I {  (*G)[I]=((*G)[I]-(*A)[I]*(*G)[I-1])/(*B)[I]; } for(I=N-2;I>-1;I--)//DO30I=N-1,1,-1 {  (*G)[I]=(*G)[I]-(*C

4、)[I]*(*G)[I+1]; } return;}voidSPLine4(CDoubleArray*X,CDoubleArray*Y,double&XI,double&YI,CDoubleArray*A,CDoubleArray*B,CDoubleArray*C,CDoubleArray*G,int&LOGI,intMD){  registerlongI; doubleW1,W2,H; intN=X->GetSize();  if(LOGI==0) {  for(I=1;I  {   (*B)[I]=(*X)[I]-(*X)[I-1];   (*C)[I]=((*Y

5、)[I]-(*Y)[I-1])/(*B)[I];  }  for(I=1;I  {   (*A)[I]=(*B)[I]+(*B)[I+1];   (*G)[I]=6.*((*C)[I+1]-(*C)[I])/(*A)[I];   (*A)[I]=(*B)[I]/(*A)[I];  }  for(I=1;I  {   (*C)[I]=1.-(*A)[I];   (*B)[I]=2.;  }  (*B)[0]=2.;  (*B)[N-1]=2.;  if(MD==3)  {   (*C)[0]=-1.;   (*A)[N-1]=-1.;   (*A)[0]=0.;   (

6、*C)[N-1]=0.;  }  ZG(A,B,C,G,LOGI); } for(I=1;I {  if(XI>=(*X)[I-1]&&XI<=(*X)[I])//GELE  {   H=(*X)[I]-(*X)[I-1];   W1=(*X)[I]-XI;   W2=XI-(*X)[I-1];   YI=W1*W1*W1*(*G)[I-1]/6./H;   YI=YI+W2*W2*W2*(*G)[I]/6./H;   YI=YI+W1*((*Y)[I-1]-(*G)[I-1]*H*H/6.)/H;   YI=YI+W2*((*Y)[I]-(*G)[I]*H*H/6.

7、)/H;  } }}voidSPLine(CFoldPointList*pList,CFoldPointList*pDestList,intSM,intContinue=0){ CFoldPoint*pFoldHead,*pFoldTail; POSITIONpos; CDoubleArrayA,B,C,G,X,Y,T; doubleXI,YI,XX,YY; registerlongi; longN; intLOGI; longRealSM; longBei,Yu; CFoldPoint*pFold; file://赋初值 N=pList->GetC

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。