当前位置:首页 » 操作系统 » b样条曲线算法

b样条曲线算法

发布时间: 2023-06-01 16:26:03

㈠ 求;B-样条曲线的deboor算法和C++程序

voidCGraph151View::seekPoint(intk)//表示k阶2{3CPoint *interim;//存储B样数组指针4CDC *pDC =GetDC();5CGraph151Doc *pDoc = GetDocument();//6intj = pDoc->Length-1;7intlength=1.0/0.001;//B样曲线的点的个数8interim =newCPoint[length];//保存B样曲线点9intindex_length=0;//记录interim数组下一个下标10//画控制点图11pDC->MoveTo(pDoc->m_point[0]);12for(intn=0;n<pDoc->Length;n++)13{14pDC->LineTo(pDoc->m_point[n]);15pDC->MoveTo(pDoc->m_point[n]);16}17///结束1819for(floatt=pDoc->T[0];t<pDoc->T[pDoc->T_Length-1];t +=0.001)20{21inti;22chushihua();//还原m_point 和 im_point点数组使与初始化相同23for(intr=1;r<k;r++)24{25guodian();//更新一下m_point点数组 的数据26for( i=r;i<=j;i++)27{28floatpara1;29floatpara2;3031if( (pDoc->T[i+k-r] - pDoc->T[i]) !=0.0)32{33para1 = (t - pDoc->T[i]) / (pDoc->T[i+k-r] - pDoc->T[i]);34para2 = (pDoc->T[i+k-r] - t) /(pDoc->T[i+k-r] - pDoc->T[i]);35}36else37{38para1=0.0;39para2=0.0;40}4142intx =int( (para1 * pDoc->m_point[i].x) + (para2 * pDoc->m_point[i-1].x) );43inty =int( (para1 * pDoc->m_point[i].y) + (para2 * pDoc->m_point[i-1].y) );44pDoc->im_point[i].SetPoint(x,y);45}4647}4849interim[index_length++].SetPoint( pDoc->im_point[3].x,pDoc->im_point[3].y);//存储计算出的点50}5152//画图 B样曲线53CPen pen(PS_SOLID,1,RGB(255,0,0));54pDC->SelectObject(pen);55pDC->MoveTo(interim[0]);56for(intn=0;n<length;n++)57{58pDC->LineTo(interim[n]);59pDC->MoveTo(interim[n]);60}61//B样曲线画图结束62}

㈡ 三次均匀B样条插值算法

三次样条插值(Cubic Spline Interpolation)简称Spline插值,是通过一系列形值点的一条光滑曲线,数学上通过求解三弯矩方程组得出曲线函数组的过程。
实际计算时还需要引入边界条件才能完成计算。一般的计算方法书上都没有说明非扭结边界的定义,但数值计算软件如Matlab都把非扭结边界条件作为默认的边界条件。

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:648
制作脚本网站 发布:2025-10-20 08:17:34 浏览:939
python中的init方法 发布:2025-10-20 08:17:33 浏览:634
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:823
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:734
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1069
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:302
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:163
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:855
python股票数据获取 发布:2025-10-20 07:39:44 浏览:765