1 / 5
文档名称:

实验四 曲线生成算法.docx

格式:docx   大小:52KB   页数:5页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

实验四 曲线生成算法.docx

上传人:maritime_4 2022/6/21 文件大小:52 KB

下载得到文件列表

实验四 曲线生成算法.docx

相关文档

文档介绍

文档介绍:实验四曲线生成算法
一、 目的和要求
根据曲线的基础知识和常用曲线的数学基础,对其算法进行程序设计,验证算 法的正确性,并通过程序结果加深对常用曲线数学模型的理解。;
写出Bezier曲线的算法实现;
写出B样条曲线的算法实现;
实验四曲线生成算法
一、 目的和要求
根据曲线的基础知识和常用曲线的数学基础,对其算法进行程序设计,验证算 法的正确性,并通过程序结果加深对常用曲线数学模型的理解。;
写出Bezier曲线的算法实现;
写出B样条曲线的算法实现;
二、 实验内容
(一)Bezier曲线的算法实现
1、 建立一个BezierCurve的工程文件:
2、 右击CBezierCurveView类,建立成员函数:
int CBezierCurveView::Multiply_n(int m, int n)
用于的函数实现:
! ( )
! ! !
double CBezierCurveView::Bernstein(int m, int n, double t)
用于实现伯恩斯坦多项数的函数实现:
() ,
3、编写自定义的成员函数代码:(注意:程序灰色底纹部分为自己添加,没有底纹的为 工程文件自动生成。)
int CBezierCurveView::Multiply_n(int m, int n)
(
int i,j,a;
if(m!=0)
a=1;
for(i=m+1;i<=n;i++)
a=a*i;
for(j=1;j<=n-m;j++)
a=a/j;
return a;
else
return 1;
double CBezierCurveView::Bernstein(int m, int n, double t) (
int i,j;
double sum;
sum二Multiply_n(m,n);
for(i=1;i<=m;i++)
sum二sum*t;
for(j=1;j<=n-m;j++)
sum=sum*(1-t);
return sum;
}
4、编写OnDraw()函数:
void CBezierCurveView::OnDraw(CDC* pDC)
{
CBezierCurveDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
int i,j,k,n=3;
double curx,cury,t,b;
double dt=;
int array[4][2]={{30,100},{100,30},{50,150},{200,40}};
CPen PenRed(PS_SOLID,1,RGB(255,0,0));//定义红色笔
CPen PenBlue(PS_SOLID,1,RGB(0,0,255));//定义蓝色笔
〃绘制特征多边形
pDC->SelectObject(&PenBlue);
pDC->MoveTo(array[0][0],array[0][1]);
for(i=0;i<=n;i++)
pDC->LineTo(array[i][0],array[i][1]);