《计算机图形学》实验4实验报告.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验4实验报告格式 《计算机图形学》实验4实验报告 实验题目:参数曲线绘制 实验内容:1 圆的参数曲线绘制。 2显式数学曲线描绘程序。 3贝赛尔曲线绘制。 编写程序调用验证之。 参考资料:1 circleParam.java 2 explicitCurve.java 3 BezierLine.java 4 数学曲线绘制.ppt和实验3的参考ppt 基本概念:(详细叙述自己对实验内容的理解) (1)圆的参数曲线绘制:??圆的参数曲线绘制就是按照圆的定义,利用步长,得在显示域上每一点的位置,然后绘制,圆是图形中经常使用的元素,圆被定义为所有离一中心位置距离为给定值?的点集,其函数方程为:???????? 参数方程为: 根据已知的Xc和Yc,以及t可以确定一个圆。 (2)显示数学曲线描绘程序:显示曲线的绘制就是在已知的坐标系上,按照方程要求在固定的点画点,然后连接成一条线,例如如果曲线的方程式:,利用这个公式的递推演算,我们依次从-x到+x来绘制。 (3)贝塞尔曲线的绘制:贝赛尔曲线的每一个顶点都有两个控制点,用于控制在顶点两侧的曲线的弧度。它是应用于二维图形应用程序的数学曲线。曲线的定义有四个点:起始点、终止点(也称锚点)以及两个相互分离的中间点。滑动两个中间点,贝塞尔曲线的形状会发生变化。例如下面的公式: 算法设计:(详细叙述自己设计的的算法) (1)圆的算法设计:? 本例体现的主要是圆的快速算法,这里的主要算法是: ?t是圆的某一点与X轴之间的夹角。Xc和Yc分别是圆的中心,以上一个终点为下一个的起点。改变t的值,就可以得到一个圆。 体现在代码中就是: //圆的参数曲线x=f(t) private double fx(double t) { return Math.cos(t); } //圆的参数曲线y=f(t) private double fy(double t) { return Math.sin(t); } (2)显示数学曲线绘制:? 本例主要演示绘制曲线,其基本算法:利用这个公式的递推演算,我们依次从-x到+x来绘制。 体现在代码中就是: //描绘曲线y=x^3-1 private double f(double x) { return x*x*x-1; } (3)贝塞尔曲线绘制:? 贝塞尔曲线是两个端点不变,中间的点在变,其连线使用圆弧来代替,其实就相当于模拟曲线。 体现在代码中就是: for(t=0;t=1;t+=0.01) { //参数法求点坐标 for(i=0;in;i++) { //4个节点 x1=x1+(int)(Bin(n-1,i,t)*p[i].x); y1=y1+(int)(Bin(n-1,i,t)*p[i].y); } //i循环 g.drawLine(x0,y0,x1,y1); //划短直线 x0=x1; //下一折线 y0=y1; x1=0; y1=0; } //参数t循环 代码:(给出主要的Java程序和注解) (1)package 实验4; //circleParam.java //参数曲线描绘程序 import java.awt.*; //绘图基于java AWT包 import java.applet.Applet; //定义参数曲线描绘类 public class circleParam extends Applet { MyCanvas m; //定义MyCanvas的对象 private double xmin=-1.2; //x轴的最小值 private double ymin=-1.2; //y轴的最小值 private double xmax=1.2; //x轴的最大值 private double ymax=1.2; //y轴的最大值 //Applet程序的自动初始化方法init public void init() { setSize(500,500); m=new MyCanvas(this); //生成MyCanvas类的对象 } //圆的参数曲线x=f(t) private double fx(double t) { return Math.cos(t); } //圆的参数曲线y=f(t) private double fy(double t) { return Math.sin(t); } //Applet程序的描绘方法paint public void paint(Graphics g) { m.setBackground(Color.gray); //背景色 m.setColor(Color.red); //

文档评论(0)

zyg_2930102 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档