- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验四三次样条实验报告
湘 潭 大 学 实 验 报 告 课程名称 计算机图形学 实验名称 三次样条实验报告 页数 专业 计算机科学与技术 班级 12级计算机2班 同组者姓名 学号 2012600719 姓名 黄柳 实验日期____2015-5-6 ____ 实验目的 掌握三次样条的定义,画法和程序编写。用OpenGL画三次样条。 二、实验内容和要求 实验给出型值点,用VC++ 画出通过给定型值点的三次参数样条曲线。 实验方案设计 实验方案设计说明,包括主要设计思路、算法设计、程序和各个类的设计说明。 思路: 设第i段三次函数为fi(t) = At^3 + Bt^2 + Ct + D; 可以通过每个型值点纵坐标Pi ,相邻点横坐标差 t[i] 求出每个点的导数。 算法流程: 算出第i+1个点和第i个点的横坐标差t[i]; 列出关于每个点导数的方程组 解方程组得到n 个点的导数 通过每个点的导数,求出每个点的三次函数中的A, B, C, D。 对于每一段三次样条,用连续的小段直线,画出曲线的效果。 程序运行和实验结果说明和分析。 程序一共有7个型值点,分别是 (10, 302) (150, 303) (430, 302) (800, 302) (1000, 303) (1200, 303) (1440, 303) 程序窗口宽1000,高600 实验结果: 性能、扩展性等方面存在的不足和可能的改进之处。 这个三次样条还可以更好,用更加简便的方法画出来。 这次实践增强了我的动手能力,提高和巩固了图形学方面的知识,特别是软件方面。让我认识到把理论应用到实践中去是多么重要。这个过程中,我花费了大量的时间和精力,更重要的是,我在学会实践的基础上,同时还懂得合作精神的重要性,学会了互相学习。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在各位同学和老师地帮助下,终于游逆而解。同时,在老师那里我学到了很多实用的知识。我表示再次衷心的感谢! 附件一 源程序,执行程序,符号列表文件。 源程序:a.cpp #include GL\glut.h #include cmath #include cstdio #include cstring #include iostream using namespace std; #define prt(k) cout#k = kendl double sqr(double x) { return x*x; } #define pf sqr double lf(double x) { return x*x*x; } #define drawLine(x1, y1, x2, y2) glBegin(GL_LINES); \ glVertex2f((x1), (y1)); glVertex2f((x2), (y2)); glEnd(); static const int W = 1000, H = 700; void init() { glClearColor(0, 0, 0, 0); glShadeModel(GL_FLAT); } struct P { double x, y; P() {} P(double a, double b) { x = a, y = b; } double d(P b) { return sqrt(sqr(x - b.x) + sqr(y - b.y)); } double operator - (P b) { return y - b.y; } }; P p[55]; double t[55]; double f(double x, double A, double B, double C, double D, double a=0) { x -= a; //x /= 20; double y = A*x*x*x + B * x*x + C * x + D; return y / 200 + 300; } double A[55], B[55], C[55], D[55]; double a[55], b[55], c[55]; double f2(double x, double A, double B) { return 6 * A*x + 2 * B; } double yy[55]; const int n = 7; void gao() { p[1] = P(10, 410); p[2] = P(150, 510); p[3] = P(430, 405)
文档评论(0)