用C语言设计光线成像程序——计算机达人成长之路(26)

简介:

7C语言光线成像(一)诡异的笑

世界上的很多道理,没有亲身经历过,是不会有太大感触的。比如“少壮不努力,老大徒伤悲”,这句话从小时就耳熟能详,可是从小真正能理解的又有几人?大多数少壮之人都是随波逐流,直到进入大学才后悔高中没有头悬梁锥刺股。而后继续浑浑噩噩,享受人生中最美好的时光,直到毕业又开始后悔四年虚度。也许只有经历几次大起大落才能真正理解“莫等闲,白了少年头,空悲切”的含义。

哥哥向木鸿飞灌输计算机学习的方法和道路也是一样,虽然一个讲述得很详细,一个倾听得很认真;一个论述得头头是道,一个理解得句句是理,一个发自肺腑之言,一个听了大有裨益,但木鸿飞毕竟没有系统化地进行计算机学习,以其如此短暂的计算机生涯肯定不能如此迅速的理解计算机学习方法的真谛,未来必然有一段弯路。

果然,弯路来了。

在哥哥论道之后,木鸿飞并没有马上开始基础课程的学习,他还沉迷在动画之中,妄想着可以在动画的道路上继续前进。于是乎他把目光投向了哥哥的书架。

北青楼是个筒子楼,每个老师只能住宿在一个比蜂窝还小的房间中。哥哥的房间中紧紧的摆放了一张床和一套座椅,还有就是一个书架。书架大约半堵墙大小,极不和谐的挤在了这个狭小的房间中,上面琳琅满目摆满的全是书,成为这个蜂窝最大的特色。

书架的第一层摆满了英语书,除了大学教程、考试类书籍,比如《托福阅读》、《GRE阅读》等,还有诸如《乱世佳人》之类的英文原著。木鸿飞的目光在迅速扫描后,上移一层。

书架的第二层摆满了数学书,木鸿飞见到了《数学分析》、《概念论》、《组合数学》等认识的课程,也找到了诸如《近世代数》、《离散数学》等首次听说的理论。当然这些都不是预想的目标,于是目光再度上移。

书架从第三层以上就全是计算机书籍了,木鸿飞抽取了几本,《PASICAL程序设计》、《Viual C++程序设计》等等,随意的翻了翻,页面上大量的中文和代码行,没有太多吸引人的内容和图片,又一一插了回去。在漫无目的的搜寻中,一本书引起了木鸿飞的注意,书名叫《C语言成像与光线追踪程序设计》,听名字大概是用程序来画图,而且是比较高级的图像,封面上画满了圆球,或许就是用书中程序设计的。

木鸿飞低头看了看桌上的一个玻璃杯,透过玻璃,可以清楚地看到桌面,不过经过玻璃的阻隔,无论形状还是颜色都发生了变化,而且杯的边缘也有一定的反光,甚至还有部分如镜子般映射了后方的事物。这些就是光线的作用,虽然木鸿飞不懂绘画,但也知道想要栩栩如生地画出这个“桌上杯子图”,非功力高超的画家不可。

“这本书可以画出只有画家才能画的图,”木鸿飞心中有了计较,“就学习它吧!”

木鸿飞迫不及待的希望能够用程序生成一幅美丽的画面,而最快的实现方法,不是学习C语言光线成像,而是从书中照抄一段程序,直接输入运行观看结果。当然,这种做好并非木鸿飞独创,很多学生都有此种想法。

照抄代码,一般都有两个原则,一是实现的功能要趣味化,大家可能有兴趣画个漂亮的图片、设计一个好玩的游戏等等,但是却没有同样的兴致去计算一个复杂的数学公式。二是照抄的代码要将可能的短,倘若只一页纸就能实现3D旋转,估计人人都会试一试。若是输入整整一万行代码都只有全部内容的10%,就算是最美的游戏程序也没有人继续。

木鸿飞打开书本,一页一页的寻找,剔除太长的和无趣的程序,经过漫长的搜寻,终于停下来,“就它了!”根据书本的介绍,这是一个显示圆球的程序,代码也不长,只有两张共四页纸。

“哥哥,哥哥,我要编这个程序。”木鸿飞拿起书,走出房间,寻找哥哥。

此时木鹏飞正在走廊中做菜。筒子楼就是这样,由于面积狭小,楼道一般兼任厨房。看到弟弟来了,他关上火,接过书,看了看封面,哥哥皱了皱眉头,“这些内容对你来说太早了,刚刚不是跟你说了要先学习基础吗?怎么转眼你就忘记了。”

“没有忘。我只是想在学习基础之前,先看看别人编写的趣味程序,提高自己的学习兴趣而已。”木鸿飞狡辩道,“等我编好了这个程序,就从头学起。”

“问题是你连C语言都不知道,能编好吗?”哥哥表示怀疑。

“试一试啥。再说了,照着书输入代码就可以了,又不需要了解什么知识,会打字就行。”木鸿飞仍不放弃,“而且这段代码只有两页纸,很容易就搞定了。你告诉我用什么工具编写C语言程序就行了。”

筒子楼的走廊光线很暗,哥哥不能看清楚书上的内容,于是他走到旁边一扇门前,欲借门中透过的亮光看清楚,“这种程序一般很长的,照抄也要很久时间。”

“我找了一个程序,很短,只有4页纸,我做了一个记号,你看在这里。”木鸿飞把书翻到那一页。

“小木兄弟俩,你们在干什么?”哥哥借光的地方正好是高老师家,听到俩兄弟的谈论,高老师也探出头来。

“我想照抄一个程序。”木鸿飞老实的回答。

“我看到了,C语言成像。小木啊,现在计算机发展真的快,很多东西都不用画了,所有的光线都可以计算出来。”高老师感叹道。只是高老师没有想到,他的感叹,更加加深了木鸿飞照抄程序的决心。

“你确定一定要编这个程序?”趁着高老师与木鸿飞谈话的空档,哥哥已经浏览了书本前后几页。

“对!”木鸿飞坚定的点点头,然后在加上一句:“确定一定以及肯定!”

“好!”哥哥笑了起来,“行!吃完饭就教你!”

OK!”目的得逞,木鸿飞也高兴起来。

不过筒子楼的走廊光线太暗了,木鸿飞又只顾着看高兴,没有注意到哥哥的笑容中藏着一丝诡异,一个陷阱正等着他。

 


 本文转自 zhuyunxiang 51CTO博客,原文链接:http://blog.51cto.com/zhuyunxiang/426495,如需转载请自行联系原作者




相关文章
|
2月前
|
存储 自然语言处理 编译器
【C语言】编译与链接:深入理解程序构建过程
【C语言】编译与链接:深入理解程序构建过程
|
4月前
|
存储 算法 C语言
"揭秘C语言中的王者之树——红黑树:一场数据结构与算法的华丽舞蹈,让你的程序效率飙升,直击性能巅峰!"
【8月更文挑战第20天】红黑树是自平衡二叉查找树,通过旋转和重着色保持平衡,确保高效执行插入、删除和查找操作,时间复杂度为O(log n)。本文介绍红黑树的基本属性、存储结构及其C语言实现。红黑树遵循五项基本规则以保持平衡状态。在C语言中,节点包含数据、颜色、父节点和子节点指针。文章提供了一个示例代码框架,用于创建节点、插入节点并执行必要的修复操作以维护红黑树的特性。
111 1
|
4月前
|
NoSQL 编译器 程序员
【C语言】揭秘GCC:从平凡到卓越的编译艺术,一场代码与效率的激情碰撞,探索那些不为人知的秘密武器,让你的程序瞬间提速百倍!
【8月更文挑战第20天】GCC,GNU Compiler Collection,是GNU项目中的开源编译器集合,支持C、C++等多种语言。作为C语言程序员的重要工具,GCC具备跨平台性、高度可配置性及丰富的优化选项等特点。通过简单示例,如编译“Hello, GCC!”程序 (`gcc -o hello hello.c`),展示了GCC的基础用法及不同优化级别(`-O0`, `-O1`, `-O3`)对性能的影响。GCC还支持生成调试信息(`-g`),便于使用GDB等工具进行调试。尽管有如Microsoft Visual C++、Clang等竞品,GCC仍因其灵活性和强大的功能被广泛采用。
142 1
|
4月前
|
编译器 C语言 计算机视觉
C语言实现的图像处理程序
C语言实现的图像处理程序
181 0
|
18天前
|
存储 缓存 算法
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
38 5
|
18天前
|
C语言
C语言编程中,错误处理至关重要,能提升程序的健壮性和可靠性
C语言编程中,错误处理至关重要,能提升程序的健壮性和可靠性。本文探讨了C语言中的错误类型(如语法错误、运行时错误)、基本处理方法(如返回值、全局变量、自定义异常处理)、常见策略(如检查返回值、设置标志位、记录错误信息)及错误处理函数(如perror、strerror)。强调了不忽略错误、保持处理一致性及避免过度处理的重要性,并通过文件操作和网络编程实例展示了错误处理的应用。
50 4
|
16天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
43 1
|
18天前
|
网络协议 物联网 数据处理
C语言在网络通信程序实现中的应用,介绍了网络通信的基本概念、C语言的特点及其在网络通信中的优势
本文探讨了C语言在网络通信程序实现中的应用,介绍了网络通信的基本概念、C语言的特点及其在网络通信中的优势。文章详细讲解了使用C语言实现网络通信程序的基本步骤,包括TCP和UDP通信程序的实现,并讨论了关键技术、优化方法及未来发展趋势,旨在帮助读者掌握C语言在网络通信中的应用技巧。
29 2
|
18天前
|
程序员 C语言
C语言中的指针既强大又具挑战性,它像一把钥匙,开启程序世界的隐秘之门
C语言中的指针既强大又具挑战性,它像一把钥匙,开启程序世界的隐秘之门。本文深入探讨了指针的基本概念、声明方式、动态内存分配、函数参数传递、指针运算及与数组和函数的关系,强调了正确使用指针的重要性,并鼓励读者通过实践掌握这一关键技能。
32 1
|
2月前
|
存储 文件存储 C语言
深入C语言:文件操作实现局外影响程序
深入C语言:文件操作实现局外影响程序