计算机图形学实验de Casteljau算法.doc

计算机图形学实验de Casteljau算法.doc

ID:56997577

大小:112.50 KB

页数:4页

时间:2020-07-30

计算机图形学实验de Casteljau算法.doc_第1页
计算机图形学实验de Casteljau算法.doc_第2页
计算机图形学实验de Casteljau算法.doc_第3页
计算机图形学实验de Casteljau算法.doc_第4页
资源描述:

《计算机图形学实验de Casteljau算法.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、实验7-2一、实验题目在屏幕上使用鼠标绘制任意控制点的控制多边形,基于deCasteljau算法绘制如图7-48所示的Bezier曲线。二、实验思想Bezier曲线上的点,可以使用Bezier曲线方程直接计算,但使用deCasteljau递推算法则要简单的多。1.递推公式给定空间n+1个控制点Pi(i=0,1,2¼n)及参数t,deCasteljau递推算法表述为:当n=3时,有三次Bezier曲线递推如下第一级递推:第二级递推:第三级递推:其中:规定:定义Bezier曲线的控制点编号为其中,r为递推次数。deCasteljau已经证明,当r=n时,表示曲线上的点。根据式

2、(7-16)可以绘制n次Bezier曲线。三、实验代码voidCTestView::OnMENUBezierCurve(){//TODO:AddyourcommandhandlercodehereRedrawWindow();MessageBox("单击左键绘制特征多边形,单击右键绘制曲线","提示",MB_OK);pt=newCPoint[N_MAX_POINT];Flag=true;CtrlPoint=0;}voidCTestView::DrawBezier()//绘制Bezier曲线{CClientDCdc(this);intrate=500,n;n=CtrlPoi

3、nt-1;doublex,y;doublepx[N_MAX_POINT],py[N_MAX_POINT];for(intk=0;k<=n;k++){px[k]=pt[k].x;py[k]=pt[k].y;}for(doublet=0;t<=1;t+=0.01/rate){x=DeCasteliau(t,px);y=DeCasteliau(t,py);dc.SetPixel(ROUND(x),ROUND(y),RGB(0,0,255));}}doubleCTestView::DeCasteliau(doublet,doublep[])//德卡斯特里奥函数{doublepp[

4、N_MAX_POINT][N_MAX_POINT];intn=CtrlPoint-1;for(intk=0;k<=n;k++){pp[k][0]=p[k];}for(intr=1;r<=n;r++){for(inti=0;i<=n-r;i++){pp[i][r]=(1-t)*pp[i][r-1]+t*pp[i+1][r-1];}}return(pp[0][n]);}voidCTestView::DrawCharPolygon()//绘制控制多边形{CClientDCdc(this);CPenNewPen,*OldPen;NewPen.CreatePen(PS_SOLID,

5、3,RGB(0,0,0));OldPen=dc.SelectObject(&NewPen);for(inti=0;i

6、::OnLButtonDown(UINTnFlags,CPointpoint)//获得屏幕控制点坐标{//TODO:Addyourmessagehandlercodehereand/orcalldefaultCView::OnLButtonDown(nFlags,point);if(Flag){pt[CtrlPoint].x=point.x;pt[CtrlPoint].y=point.y;if(CtrlPoint

7、uttonDown(UINTnFlags,CPointpoint)//调用绘制函数{//TODO:Addyourmessagehandlercodehereand/orcalldefaultif(CtrlPoint!=0){Flag=FALSE;DrawBezier();}CView::OnRButtonDown(nFlags,point);}四、实验结果截图

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

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

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