实验二自由曲线几何设计

实验二自由曲线几何设计

ID:29625929

大小:110.50 KB

页数:9页

时间:2018-12-21

实验二自由曲线几何设计_第1页
实验二自由曲线几何设计_第2页
实验二自由曲线几何设计_第3页
实验二自由曲线几何设计_第4页
实验二自由曲线几何设计_第5页
资源描述:

《实验二自由曲线几何设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、授课老师:谢伙生老师学生姓名:沈睿汀学生号:030300833班级:计算机(6)班年级:03实验二自由曲线的几何设计课程名称:图形学任课老师谢伙生老师年级03级班级计算机(6)班姓名沈睿汀学号S0303008339授课老师:谢伙生老师学生姓名:沈睿汀学生号:030300833班级:计算机(6)班年级:03一、实验要求1、自由曲线包括:二次、三次Bezier曲线,二次、三次均匀B样条曲线;2、Bezier曲线的实现算法要求选用细分算法;3、均匀B样条曲线过控制多边形的首末顶点;4、利用B样条曲线的局部控制性来动态修改曲线形状;5、界面设计友好、几何直观

2、。二、实验环境说明(1)本系统基于JAVA编程环境,使用JBuilderX作为相关的开发工具,因此系统的运行与其它用VC++开发的系统略有不同。(2)在WINDOWS-XP下运行本程序的时候,请先安装j2re-1_4_2_04-windows-i586-p.exe,然后,才能正常运行,在windows环境下双击030300833Curve.exe。三、算法与数据结构(程序设计)[在Bezier.java文件中可以看到具体代码]由于有了实验1的基础,绘制图形的代码实现部分基本不是难点,现在关键是核心代码的实现。由于刚开始我以为只需要编写Bezier,所

3、以把工程名和类都命名为Beizer,到后来才发现还得完成B样条曲线的代码实现,但木已成舟,所以,就只好默认先前的命名了。由于JAVA语言与C语言有些差别,比如,JAVA没有提供引用,只提供传值,而类是相当于C语言的引用。因为临近期末,没太多时间考虑代码的模块化和美观效果,所以,我就把生成B样条曲线和Bezier曲线的的算法代码直接放在可视化代码里面,而没有象Cohen-Sutherland算法那样另外新建一个类Sutherland,然后在可视化类CutLineFrame里面调用Sutherland类的方法。当然,生成B样条曲线和Bezier曲线的的算

4、法代码并不会太多,这也是个原因。Bezier曲线(1)二次Bezier曲线和三次Bezier曲线算法其实差别不大,他们的核心算法如下代码所示。比如,三次Bezier曲线是有四个控制点控制画出一段曲线,再由下四个控制点画出另外一段曲线出来,最后把这么多段曲线拼接起来便可以了。比如,有A,B,C,D,E,F,G这7个控制点,先利用前四个控制点A,B,C,D,把这四个点存放进一个数组里面,然后调用voidgenerateBezier(Graphicsg,point[]inPt,floatt,intn,intfloor)便可以生成一段三次Bezier曲线,接

5、着再利用下四个控制点D,E,F,G,把这四个点存放进一个数组里面,然后调用voidgenerateBezier(Graphicsg,point[]inPt,floatt,intn,intfloor)便可以生成下一段三次Bezier曲线,依次类推,最后把这些控制点产生的曲线连接起来,便可以得到我们所需要的曲线了。以下用代码来说明是如何利用控制点来调用generateBezier(Graphicsg,point[]inPt,floatt,intn,intfloor)从而生成二次Bezier曲线的。三次Bezier曲线的生成算法类似。9授课老师:谢伙生老师

6、学生姓名:沈睿汀学生号:030300833班级:计算机(6)班年级:03inti=0;while(i<=(Bezier2PtNum-2)){//Bezier2PtNum表示全部控制点的个数for(intk=0;k<3;k++){//把控制点的坐标传递给ptTemp[]ptTemp[k].x=(float)Bezier2pt[i+k].x;ptTemp[k].y=(float)Bezier2pt[i+k].y;}generateBezier(g,ptTemp,(float)0.5,3,7);i=i+2;}(2)核心算法voidgenerateBezie

7、r(Graphicsg,point[]inPt,floatt,intn,intfloor)//二次Bezier曲线和三次Bezier曲线都是调用这个核心代码generateBezier//inPt[]存放的控制点,t是参数,n表示控制点的个数,floor表示深度publicvoidgenerateBezier(Graphicsg,point[]inPt,floatt,intn,intfloor){intfloortemp=floor;//深度标记位//声明并初始化数组,outPt[][]数组是用来存放通过控制点计算而生成的中间点的,每次生成的点中其中

8、一个是曲线上的点,另外几个可以利用来当作生成下两个曲线上的点的控制点point[][]outPt=newpo

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

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

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