三次样条实验报告_第1页
三次样条实验报告_第2页
三次样条实验报告_第3页
三次样条实验报告_第4页
三次样条实验报告_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、湘 潭 大 学 实 验 报 告课程名称 计算机图形学 实验名称 参数三次样条的绘制 页数 专业 计算机科学与技术 班级 一班 同组者姓名 学号 2012551208 姓名 刘兆臣 实验日期 2015.05.05 一、 实验目的使学生掌握三次参数样条的定义、画法和程序的编写。二、 实验内容和要求给定型值点,要求用vc+6.0画出通过给定型值点的参数三次样条曲线。三、 实验方案设计给定型值点,计算出参数三次样条曲线的每个区间段的代数式,由hermit曲线定义画出每个区间的曲线。开 始 给定型值点 计算出参数 if n = 1? y n给系数矩阵赋值 if n = 2? y 给定系数值 n 求解方程

2、组,计算出各点导数 if i < n? i = 0 y计算第i段的二次项,三次项系数结 束 t = 0 if t <tti-1?ny t = t+es计算出第i段中各点的x,y值连线段 i +四、 程序运行和实验结果说明和分析。使用vc+6.0运行程序后得到如下图形图为四段曲线组成的三次参数样条曲线,其中各段的绘制是通过给定了型值点的相关参数计算出型值点的导数,再由hermit曲线知识,在各段上以直代曲绘制出每段的图形。基本达到了实验目的,完成实验要求。五、 性能、扩展性等方面存在的不足和可能的改进之处。不足:在源代码中的n个点采用了数据初始化的方法给出且给定了型值点的个数。由于给

3、定型值点较少,三次参数样条曲线看起来不够明显。可改进:可将初始化的型值点数据去除,采用手动键盘输入或文件输入的方法导入多个型值点数据。附件一 源程序,执行程序,符号列表文件。#include <graphics.h>#include<math.h>#include<conio.h>main( )int gdriver=detect,gmode;float x100,y100,a100,b100,c100;float px100,py100,qx100,qy100,tt100;float dx100,dy100;int i,n=4,t,es=3;float b

4、x3,bx4=0.0,by3=0.0,by4,cx,cy;initgraph(&gdriver,&gmode," ");for(i=0;i<n;i+) ai=0.0; bi=0.0; ci=0.0; pxi=0.0; pyi=0.0; dxi=0.0; dyi=0.0; tti=0.0; qxi=0.0; qyi=0.0; px0=1.0; py0=1.0; px4=1.0; py4=1.0; x0=10.0; y0=110.0; x1=40.0; y1=100.0; x2=80.0; y2=90.0; x3=130.0; y3=95.0; x4=20

5、0.0; y4=105.0; moveto(x0,y0); for(i=0;i<n;i+) putpixel(xi,yi,15); putpixel(x0,y0,15); for(i=0;i<n;i+)tti=sqrt(xi-xi-1)*(xi-xi-1)+(yi-yi-1)*(yi-yi-1);if(n=1) goto po; for(i=1;i<=n-1;i+) ai=2*(tti+tti+1); bi=tti+1; ci=tti; dxi=3*(tti*(xi+1-xi)/tti+1+tti+1*(yi-yi+1)/tti);dxi=dx1-tt2*px0;dxn-1=

6、dxn-1-ttn-1*pxn;dy1=dy1-tt2*py0;dyn-1=dyn-1-ttn-1*pyn;if(n=2) px1=dx1/a1; py1=dy1/a1; goto po; c1=c1/a1; for(i=2;i<=n-1;i+) ai=ai-bi*ci-1; ci=ci/ai; qx1=dx1/a1; qy1=dy1/a1; for(i=2;i<=n-1;i+) qxi=(dxi-bi*qxi-1)/ai; qyi=(dyi-bi*qyi-1)/ai; pxn-1=qxn-1; qyn-1=qyn-1; for(i=n-2;i>=1;i-) pxi=qxi-

7、ci*pxi+1; pyi=qyi-ci*pyi+1; po: for(i=0;i<=n-1;i+) bx3=(3*(xi+1-xi)/tti+1-2*pxi-pxi+1)/tti+1; bx4=(2*(xi-xi+1)/tti+1+pxi+pxi+1)/tti+1)/tti+1; by3=(3*(yi+1-yi)/tti+1-2*pyi-pyi+1)/tti+1; by4=(2*(yi-yi+1)/tti+1+pyi+pyi+1)/tti+1)/tti+1; t=0; do t=t+es; cx=xi+(pxi+(bx3+bx4*t)*t)*t; cy=yi+(pyi+(by3+by4

8、*t)*t)*t; lineto(cx,cy); while(t<tti+1); getch( ); closegraph( ); xi i型值点 x 坐标yi i型值点 y 坐标ai初始赋值 方程组系数矩阵m i,i的值bi初始赋值 方程组系数矩阵m i,i+1的值ci初始赋值 方程组系数矩阵m i,i-1的值pxi i型值点导函数 x 值pyi i型值点导函数 y 值qxi,qyi,dxi,dyi 均为解方程组中的各项系数tti 第i段参数范围(型值点i-1到型值点i的距离)bx,y3 每段函数中二次项的系数bx,y4 每段函数中三次项的系数cx 每段函数中各点的x值cy 每段函数中各点的y值es 作图时每段以直代曲中的参数增量其中 方程矩阵形式为:m 1,1 m 1,2 p1 c1m 2,1 m 2,2 m 2,3 p2 c2 m 3,2 m 3,3 m 3,4 p3 c3 . . . . = . m n-1,n-2 m n-1,n-1 m n-1,n pn-1 cn-1 m n,n-1 m n,n pn cn将系数矩阵改写为:其中 方程矩阵形式为:(变量与代码变量不对应,如a2不等于a2)m 1,1 m 1,2 l1 1 u1m 2,1 m 2,2 m 2,3 a2 l2 1 u2 m 3,2 m 3,3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论