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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

图形学实验五.docx

1、图形学实验五贵州大学实验报告学院: 计信学院 专业:计科 班级:计科101姓名罗琳学号1008060016实验组无实验时间2013-4-22指导教师吴云成绩实验项目名称常用曲面和曲线的生成算法实验目的掌握常用曲线和曲面的生成算法,为几何造型打下基础。实验要求编写绘制Hermit、Bezier、B样条曲线的程序.实验原理三次Hermite曲线的生成:算法原理:给定直线的两个端点:P0,P1,及两端点处的切线:R0,R1,则三次Hermit曲线方程为:例:P0=100,100;P1=200,150;Q0=-200,100;Q1=-100,120;count=100; deltat=1/count;

2、t=0.0;PX(1)=P0(1); PY(1)=P0(2);for i=1:count t=t+deltat; F3=2*t*t*t-3*t*t+1; F2=-2*t*t*t+3*t*t; F1=t*t*t-2*t*t+t; F0=t*t*t-t*t;PX(i+1)=F3*P0(1)+F2*P1(1) +F1*Q0(1)+F0*Q1(1); PY(i+1)=F3*P0(2)+F2*P1(2) +F1*Q0(2)+F0*Q1(2);endfigure;plot(PX,PY,PX,PY,o);title(P0=100,100;P1=200,150;Q0=-200,100;Q1=-100,120;

3、);P0=100,400;P1=200,450;Q0=-200,100;Q1=-100,120;count=1000; deltat=1/count;t=0.0;PX(1)=P0(1); PY(1)=P0(2);for i=1:count t=t+deltat; F3=2*t*t*t-3*t*t+1; F2=-2*t*t*t+3*t*t; F1=t*t*t-2*t*t+t; F0=t*t*t-t*t; PX(i+1)=F3*P0(1)+F2*P1(1) +F1*Q0(1)+F0*Q1(1); PY(i+1)=F3*P0(2)+F2*P1(2) +F1*Q0(2)+F0*Q1(2);endfig

4、ure;plot(PX,PY,PX,PY,o);title(P0=100,400;P1=200,450;Q0=-200,100;Q1=-100,120;);Bezier曲线(以逼近为基础的参数曲线):满足以下条件的一组折线集(Bezier特征多边形)称为Bezier曲线:曲线的起点和终点与多边形的起点和终点重合,多边形的第一条边和最后一条边表示曲线在起点和终点的切矢量方向。曲线的形状趋向于Bezier特征多边形的形状。当给定Bezier特征多边形的n+1个顶点Pi时,Bezier曲线的插值公式为:(权Bi,n(t) i=0,1,2,3,n+1称为基函数)Bernstein(伯恩斯坦)基函数:三

5、次Bezier曲线矩阵表示:调合函数:例:P0=100,100;P1=200, 450;P2=400,600;P3=500,150;count=100; deltat=1/count; t=0.0;PX(1)=P0(1); PY(1)=P0(2);for i=1:count t=t+deltat; B0=1-3*t+3*t*t-*t*t*t; B1=3*t-6*t*t+3*t*t*t; B2=3*t*t-3*t*t*t; B3=t*t*t;PX(i+1)=B0*P0(1)+B1*P1(1) +B2*P2(1)+B3*P3(1); PY(i+1)=B0*P0(2)+B1*P1(2) +B2*P2

6、(2)+B3*P3(2); endfigure;plot(PX,PY,PX,PY,o);title(P0=100,100;P1=200,150;P2=-200,100;P3=-100,120;);B样条曲线:当给定特征多边形的n+1个顶点Pi(i=0,1,2,.,n)时,K次B样条曲线的插值公式为:(权Ni,k(u) i=0,1,2,3,n+1称为基函数,即调合函数)三次B样条曲线矩阵表示:例:%三次均匀B样条曲线.clear;clc;P1=0,0; P2=1,1; P3=2,2; P4=4,0;P5=6,-4; P6=8,-5; P7=10,2;t=0.0;count=1000;deltat

7、=1/count;%绘制第一段曲线for i=1:count+1 B0=(-t*t*t+3*t*t-3*t+1)/6; B1=(3*t*t*t-6*t*t+4)/6; B2=(-3*t*t*t+3*t*t+3*t+1)/6; B3=t*t*t/6; PX(i)=B0*P1(1)+B1*P2(1) +B2*P3(1)+B3*P4(1); PY(i)=B0*P1(2)+B1*P2(2) +B2*P3(2)+B3*P4(2); t=t+deltat;endfigure;plot(PX,PY,blue);函数hold on;PXX=P1(1),P2(1),P3(1),P4(1);PYY=P1(2),P

8、2(2),P3(2),P4(2);plot(PXX,PYY,:red,PXX,PYY,o);%绘制第2 段曲线t=0.0;for i=1:count+1 B0=(-t*t*t+3*t*t-3*t+1)/6; B1=(3*t*t*t-6*t*t+4)/6; B2=(-3*t*t*t+3*t*t+3*t+1)/6; B3=t*t*t/6; PX(i)=B0*P2(1)+B1*P3(1) +B2*P4(1)+B3*P5(1); PY(i)=B0*P2(2)+B1*P3(2) +B2*P4(2)+B3*P5(2); t=t+deltat;endplot(PX,PY,red);PXX=P2(1),P3(

9、1),P4(1),P5(1);PYY=P2(2),P3(2),P4(2),P5(2);hold on;plot(PXX,PYY,:red,PXX,PYY,o);%绘制第3段曲线t=0.0;for i=1:count+1 B0=(-t*t*t+3*t*t-3*t+1)/6; B1=(3*t*t*t-6*t*t+4)/6; B2=(-3*t*t*t+3*t*t+3*t+1)/6; B3=t*t*t/6; PX(i)=B0*P3(1)+B1*P4(1) +B2*P5(1)+B3*P6(1); PY(i)=B0*P3(2)+B1*P4(2) +B2*P5(2)+B3*P6(2); t=t+deltat

10、;endplot(PX,PY,blue);PXX=P3(1),P4(1),P5(1),P6(1);PYY=P3(2),P4(2),P5(2),P6(2);hold on;plot(PXX,PYY,:red,PXX,PYY,o);%绘制第4段曲线t=0.0;for i=1:count+1 B0=(-t*t*t+3*t*t-3*t+1)/6; B1=(3*t*t*t-6*t*t+4)/6; B2=(-3*t*t*t+3*t*t+3*t+1)/6; B3=t*t*t/6; PX(i)=B0*P4(1)+B1*P5(1) +B2*P6(1)+B3*P7(1); PY(i)=B0*P4(2)+B1*P5

11、(2) +B2*P6(2)+B3*P7(2); t=t+deltat;endplot(PX,PY,red);PXX=P4(1),P5(1),P6(1),P7(1);PYY=P4(2),P5(2),P6(2),P7(2);hold on;plot(PXX,PYY,:red,PXX,PYY,o);实验环境硬件平台:PC软件(推荐):Windows平台,Visual C+,matlab实验步骤1. 掌握算法原理;2. 依据算法,编写源程序并进行调试;3. 对运行结果进行保存与分析;4. 把源程序以文件的形式提交;5. 按格式书写实验报告。实验内容1、 通过实验,进一步理解和掌握生成Hermit、Be

12、zier和B样条曲线及Bezier曲面的生成算法2、 掌握Hermit、Bezier、B样条曲线及Bezier曲面的基本生成过程3、 通过编程,会在一种语言环境下编程实现三次Hermit、Bezier曲线的绘制实验结果1、在VC中建立工程,设计界面并给控件添加代码,主界面运行显示如下:(1)Hermit曲线(2)三次B样条曲线(3)Bezier曲线 一次Bezier曲线 二次Bezier曲线 三次Bezier曲线 四次Bezier曲线(4)Bezier曲面 运行程序的主界面(坐标系):绘制曲面:2、程序主要的代码:(1)Hermit曲线int a44 =2,-2,1,1,-3,3,-2,-1,

13、0,0,1,0,1,0,0,0;/Mh矩阵系数 int b42;/边界点 for(int i=0;iSelectObject(&MyPen); pDC-MoveTo(p1i0,p1i1); for(double t=0.0;tLineTo(x,y); pDC-SelectObject(pOldPen); MyPen.DeleteObject(); (2)三次B样条曲线int i,rate=10;/rate是平滑程度 long lx,ly; double F03,F13,F23,F33; lx=ROUND(xq00+4.0*xq10+xq20)/6.0);/t0的起点x坐标 ly=ROUND(x

14、q01+4.0*xq11+xq21)/6.0);/t0的起点y坐标 pDC-MoveTo(lx,ly); CPen MyPen2(PS_SOLID,3,RGB(255,0,0);/红笔画B样条 CPen *POldPen2=pDC-SelectObject(&MyPen2); for(i=1;i7;i+)/6段样条曲线 for(double t=0;tLineTo(lx,ly); pDC-SelectObject(POldPen2); MyPen2.DeleteObject(); 实验总结通过这次实验体会到了生活中的曲线是与学习中的曲线息息相关的,明确了学习与实践是应当有效结合的,此次实验加深了对Bezier,三次均匀B样条曲线的了解。因为曲面由曲线所生成,线由点所生成,它们是环环相扣的,通过控制顶点生成曲线,通过曲线生成曲面。所以画曲线,的关键在于将它们之间的关系理清楚。指导教师意见签名: 年 月 日

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

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