ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:108.53KB ,
资源ID:21391929      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21391929.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机图形学实验二报告Word文档下载推荐.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

计算机图形学实验二报告Word文档下载推荐.docx

1、程序书写标识符定义规范,程序书写风规范格规范报告质量报告清晰,提交准时10%总分指导教师签名曲线拟合1. 实验内容1. 绘制三次 Bezier曲线(1)给定四个已知点 P1P4,以此作为控制顶点绘制一段三次 Bezier曲线。(2)给定四个已知点 P1P4,以此作为曲线上的点绘制一段三次 Bezier曲线。2. 绘制三次 B 样条曲线给定六个已知点 P1P6,以此作为控制顶点绘制一条三次 B 样条曲线。2.实验环境软硬件运行环境:Windows XP开发工具:visual studio 20083.问题分析1.绘制三次 Bezier 曲线Bezier 曲线是用 N+1 个顶点(控制点)所构成的

2、N 根折线来 定义一根 N 阶曲线。本次实验中的三次 Bezier 曲线有 4 个顶点,设它们分别为 P0, P1,P2,P3,那么对于曲线上各个点 Pi(x,y)满足下列关系:P(t)=(-P0+3P1-3P2+3P3)t3+(3P0-6P1+3P2)t2+(-3P0+3P2)t+(P0+4P1+P2)/6X(t)=(-X0+3X1-3X2+3X3)t3+(3X0-6X1+3X2)t2+(-3X0+3X2)t+(X0+4X1+X2)/6Y(t)=(-Y0+3Y1-3Y2+3Y3)t3+(3Y0-6Y1+3Y2)t2+(-3Y0+3Y2)t+(Y0+4Y1+Y2)/6其中 P0、P1、P2、P

3、3 为四个已知的点,坐标分别为 (X0 、 Y0) 、(X1 、Y1) 、(X1 、Y2) 、(X3 、Y3) 。所以只要确定控制点的坐标,该曲线可通过编程即可绘制出来。2. 绘制三次B 样条曲线三次B 样条函数绘制曲线的光滑连接条件为:对于6 个顶点,取P1、P2、P3、P44 个顶点绘制在第一段三次样条曲线,再取P2、P3、P4、P5这 4个顶点绘制在第二段三次样条曲线,总计可绘制 3 段光滑连接的三次样条曲线。4. 算法设计程序框架/DiamondView.hclass CDiamondView : public CView public:/参数输入和提示对话框CDlgBezier dl

4、gBezier;/Bezier曲线绘制中的参数输入对话框CDlgB dlgB;/B 样条曲线绘制中的参数输入对话框/绘图函数,需要实现void DrawBezier1(POINT p4);/已知点作为控制点绘制 Bezier曲线void DrawBezier2(POINT p4);/已知点作为曲线上的点绘制 Bezier曲线 void DrawBCurve(POINT p6);/绘制 B 样条曲线/DiamondView.cppvoid CDiamondView:OnMenuDiamond()IsCutting = FALSE;if(dlgDiamond.DoModal()=IDOK)Draw

5、Diamond(dlgDiamond.m_nVertex,dlgDiamond.m_nRadius,100);/调用绘制金刚石的函数 void CDiamondView:OnMenuBezier1() if(dlgBezier.DoModal() = IDOK)DrawBezier1(dlgBezier.m_nPoint);/调用已知点作为控制点绘制 Bezier 曲线的函数 /以已知的四个点为控制点绘制 Bezier曲线/p:已知的四个控制点DrawBezier1(POINT p4) OnMenuBezier2()DrawBezier2(dlgBezier.m_nPoint);/调用已知点作

6、为曲线上的点绘制 Bezier 曲线的函数 /以已知的四个点为 Bezier 曲线上的点来绘制 Bezier 曲线已知的四个点DrawBezier2(POINT p4)OnMenuB()if(dlgB.DoModal() = IDOK)DrawBCurve(dlgB.m_nPoint);/调用绘制 B 样条曲线的函数 /以已知的六个点为控制点来绘制 B 样条曲线已知的六个控制点DrawBCurve(POINT p6)5. 源代码/以已知的四个点为控制点绘制 Bezier 曲线CDC *pDC = GetDC();CPen newPen,*oldPen;newPen.CreatePen(PS_S

7、OLID,2,RGB(255,0,0);oldPen = pDC-SelectObject(&newPen);pDC-Polyline(p, 4);SelectObject(oldPen);newPen.DeleteObject();newPen.CreatePen(PS_SOLID,2,RGB(0,0,255);int x0=p0.x;int y0=p0.y;int x1=p1.x;int y1=p1.y;int x2=p2.x;int y2=p2.y;int x3=p3.x;int y3=p3.y;double x,y;int ax,ay,bx,by,cx,cy,dx,dy;int rat

8、e=1000;ax=-x0+3*x1-3*x2+x3;ay=-y0+3*y1-3*y2+y3;bx=3*x0-6*x1+3*x2;by=3*y0-6*y1+3*y2;cx=-3*x0+3*x1;cy=-3*y0+3*y1;dx=x0;dy=y0;MoveTo(x0,y0);for(double t=0;tCBrush newBrush,*oldBrush;newBrush.CreateSolidBrush(RGB(0,0,0);oldBrush=pDC-newBrush);for(int i=0;iEllipse(pi.x-3,pi.y-3,pi.x+3,pi.y+3);SelectObjec

9、t(oldBrush);Sleep(50);POINT q4;q0.x=p0.x;q0.y=p0.y;q1.x=(-5*p0.x+18*p1.x-9*p2.x+2*p3.x)/6;q1.y=(-5*p0.y+18*p1.y-9*p2.y+2*p3.y)/6;q2.x=(2*p0.x-9*p1.x+18*p2.x-5*p3.x)/6;q2.y=(2*p0.y-9*p1.y+18*p2.y-5*p3.y)/6;q3.x=p3.x;q3.y=p3.y;DrawBezier1(q);InvalidateRgn(NULL);Polyline(p, 6);newPen.CreatePen(PS_SOLID

10、,3,RGB(0,0,255);3;ax=-(pi.x-3*pi+1.x+3*pi+2.x-pi+3.x)/6;bx=(pi.x-2*pi+1.x+pi+2.x)/2;cx=-(pi.x-pi+2.x)/2;dx=(pi.x+4*pi+1.x+pi+2.x)/6;ay=-(pi.y-3*pi+1.y+3*pi+2.y-pi+3.y)/6;by=(pi.y-2*pi+1.y+pi+2.y)/2;cy=-(pi.y-pi+2.y)/2;dy=(pi.y+4*pi+1.y+pi+2.y)/6;MoveTo(Round(x),Round(y);Sleep(2); 6. 程序运行结果图 1 控制顶点一段三次 Bezier 曲线绘制图 2 控制顶点一段三次 Bezier 曲线绘制图 3 曲线上的点一段三次 Bezier 曲线的绘制图 4 控制顶点一条三次 B 样条曲线的绘制图 5 控制顶点一条三次 B 样条曲线的绘制7. 总结通过这次实验,我对 Bezier 曲线有了一定的了解,同时也懂得了 Bezier 曲线和 B 样条曲线的参数表示法。用编程实现了它们的绘制。在此过程中遇到了不少的麻烦,并且逐一解决。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1