计算机图形学:应用Java 2D和3D
基本信息
编辑推荐
畅销教材金牌作者Y.Daniel Liang力作...
内容简介回到顶部↑
本书将计算机图形学的基本概念和原理与编程实践有机结合起来,给出了完整而权威的计算机图形学知识体系,循序渐进地介绍了2d和3d计算机图形学的基本概念和基本原理,并以精心挑选的java 2d和java 3d图形编程实例对相应的知识点做了详细解释。书中还涵盖了3d计算机图形学相关的高级技术及其最新发展,可以很好地帮助读者学习、理解和掌握计算机图形学和java 2d和java 3d编程应用。
本书适合作为高等院校相关专业的本科生和研究生的教材,也可供相关技术人员和专业人士参考使用。
本书适合作为高等院校相关专业的本科生和研究生的教材,也可供相关技术人员和专业人士参考使用。
目录回到顶部↑
出版者的话
专家指导委员会
译者序
前言
第1章 计算机图形学综述
1.1 引言
1.2 计算机图形学编程技术的发展
1.2.1 硬件层
1.2.2 操作系统层的支持
l.2.3 gks和phigs
1.2.4 opengl
1.2.5 java
1.3 java编程语言
1.4 java 2d
1.5 java 3d
1.6 相关领域
1.7 参考资料
第2章 2d图形学:基础
2.1 引言
2.2 2d图形绘制过程
专家指导委员会
译者序
前言
第1章 计算机图形学综述
1.1 引言
1.2 计算机图形学编程技术的发展
1.2.1 硬件层
1.2.2 操作系统层的支持
l.2.3 gks和phigs
1.2.4 opengl
1.2.5 java
1.3 java编程语言
1.4 java 2d
1.5 java 3d
1.6 相关领域
1.7 参考资料
第2章 2d图形学:基础
2.1 引言
2.2 2d图形绘制过程
译者序回到顶部↑
计算机图形学是计算机技术的重要组成部分,一直是学术界和工业界共同关注的热点学科,它不仅丰富了计算技术的内容和形式,更架起了计算技术与各学科领域应用间的桥梁,极大地拓展了计算技术的应用范围,还催生了诸如计算机辅助设计和制造、可视化、地理信息系统、计算机动画、虚拟现实、数字娱乐、人工生命等大量新兴的技术领域。如果说操作简便的图形用户界面和千姿百态的世象万物造型是前期计算机图形学研究和应用成果的典型表现,那么,《指环王》、《哈利波特》和《变形金刚》等影片和《最终幻想》、《魔兽世界》和《古墓丽影》等游戏中栩栩如生的造型、惊心动魄的场景、令人震撼的效果、身临其境的感觉和高度沉浸其中的体验则是当今计算机图形学之魅力的综合体现。在普适计算时代,计算机图形学更将具有不可替代的重要作用。.
计算机图形学涉及从数学与计算机科学到心理学与美学等多学科领域,知识体系庞大,学科分支繁多,应用范围广泛,这给大多数学习者带来了困难。同时,计算机图形学具有很强的实践性,需要学习者运用编程技能去实现其中的算法和技术,才能真正领悟计算机图形学的基本原理,从理论、技术和应用等不同层次上理解计算机图形学方法,进而品味计算机图形学所带来的乐趣。..
本书将计算机图形学的基本原理和编程实践有机地结合起来,一方面,清晰地理清计算机图形学的知识脉络,以循序渐进的方式扼要地介绍2D和3D计算机图形学的基本概念和基本原理,涵盖3D计算机图形学相关的高级技术及其最新发展;另一方面,通过精心挑选的Java 2D和Java 3D图形编程实例对计算机图形学中的知识点作了详细解释,可以帮助读者更好地学习、理解和掌握计算机图形学和Java 2D和Java 3D编程应用。
本书的翻译由南京大学计算机科学与技术系孙正兴http://cs.nju.edu.cn/szx/)领导项目组全体研究人员承担。张岩负责第1章和第2章初译,蒋维负责第6章和附录B初译,远博负责第5章和第12章初译,徐文晖负责第3章初译、张尧烨负责第4章初译,周志刚负责第11章初译,姚伟负责第8章初译,李毅负责第10章初译,刘凯负责第9章初译,王斌负责第7章和附录A初译,宋沫飞参加了部分章节的校对;孙正兴、张岩、蒋维和远博对全书进行了校正,孙正兴对全书进行了统稿和审核。解放军理工大学谭明金老师对本书的翻译工作提供了极大的支持和帮助,在此表示衷心感谢!...
译者
2007年12月
计算机图形学涉及从数学与计算机科学到心理学与美学等多学科领域,知识体系庞大,学科分支繁多,应用范围广泛,这给大多数学习者带来了困难。同时,计算机图形学具有很强的实践性,需要学习者运用编程技能去实现其中的算法和技术,才能真正领悟计算机图形学的基本原理,从理论、技术和应用等不同层次上理解计算机图形学方法,进而品味计算机图形学所带来的乐趣。..
本书将计算机图形学的基本原理和编程实践有机地结合起来,一方面,清晰地理清计算机图形学的知识脉络,以循序渐进的方式扼要地介绍2D和3D计算机图形学的基本概念和基本原理,涵盖3D计算机图形学相关的高级技术及其最新发展;另一方面,通过精心挑选的Java 2D和Java 3D图形编程实例对计算机图形学中的知识点作了详细解释,可以帮助读者更好地学习、理解和掌握计算机图形学和Java 2D和Java 3D编程应用。
本书的翻译由南京大学计算机科学与技术系孙正兴http://cs.nju.edu.cn/szx/)领导项目组全体研究人员承担。张岩负责第1章和第2章初译,蒋维负责第6章和附录B初译,远博负责第5章和第12章初译,徐文晖负责第3章初译、张尧烨负责第4章初译,周志刚负责第11章初译,姚伟负责第8章初译,李毅负责第10章初译,刘凯负责第9章初译,王斌负责第7章和附录A初译,宋沫飞参加了部分章节的校对;孙正兴、张岩、蒋维和远博对全书进行了校正,孙正兴对全书进行了统稿和审核。解放军理工大学谭明金老师对本书的翻译工作提供了极大的支持和帮助,在此表示衷心感谢!...
译者
2007年12月
前言回到顶部↑
2001年3月3日,千禧之年的首个奥斯卡奖项授予了罗伯·库克(Rob Cook)、洛伦·卡彭特(Loren Carpenter)和埃德·卡特穆尔(Ed Catmull)等三位计算机科学家,以表彰“他们在动景绘制领域所取得的像Pixar的RenderMan绘制器那样重大进展。”这个令人难以置信的事件象征着一度只是作为深奥的研究性课题的计算机图形学与应用,开始走入数字社区,成为时尚生活的基本元素。计算机硬件、图形应用与网络技术的快速发展,使计算机图形学在主流计算技术中变得不可或缺。.
用数字计算机建模与绘制虚拟形体是计算机图形学的主要目标。这个处理过程涉及从数学与计算机科学到心理学与美学等范围广泛的学科门类。针对计算机图形学中从宇宙天体的大模型到基本图元像素化的小细节的建模与渲染问题,已经开发了大量深奥而尖端的方法、算法与范例。要自如地应对该学科的整个内容,就得全面深入地覆盖许多相关领域的知识。正是因为自身的复杂性与深奥的数学知识,使得传统的计算机图形学课程被排除在计算机科学的标准本科课程计划之外。
不过,我们相信,新技术的发展以及设计良好且便捷易用的图形编程包的推出,将使开设基本图形学课程变得切实可行。这样的发展形式与编程语言的进化情形存在相似之处。在仅有机器指令之类的低级语言可用的时代,编程一度是非常单调乏味的工作。高级语言的发展将程序员从低级的技术细节中解放出来。较抽象级的程序处理更容易且更符合逻辑。随着硬件与编译器技术的进步,因为抽象所引起的性能损失显得微不足道。今天,大部分程序员再不需要用机器语言或汇编语言编程。计算机图形学编程所走过的道路与此类似。在计算机图形学的许多方面,可移植的高级系统正在迅速取代单调乏味的低级编程方法。同时,迅速发展的硬件技术也在弥补两者在性能上表现出的差距。
本书关注的主要焦点集中在计算机图形学的基本概念与Java 2D和Java 3D图形编程应用上。我们不讨论低级实现的技术细节,而是强调使用现有图形包开发实用程序的技能。这样做,使我们得以给出一本介绍性的图形学教科书,适合计算机科学与工程本科生和大多数计算机从业人员使用。
Java 2D和Java 3D就是基于这种考虑而推出的理想的图形包。作为高级综合图形包,它们给出了合乎需求的抽象层次,并且与平台无关,所提供的编程能力也是最新的。
Java 2D和Java 3D是Java平台的组成部分。Java虽然是一门相当新的程序设计语言,但是,因为具有诸如平台无关、简单及支持面向对象程序设计之类的独有特征,使得它迅速流行起来。Java 2D和Java 3D提供强大、自然及面向对象的图形建模和渲染接口。..
本书的读者对象是想学习计算机图形学基本概念与技能,并且开始使用Java 2D和Java 3D编程的学生和计算机从业人员。不过,它不是关于Java 2D或Java 3D的另外一本指南,而是旨在向读者介绍计算机图形学基础知识。功能强大的Java包正是实现该目标的便捷工具。
使用本书时,需要具备基本的Java编程知识,包括GUI编程(AWT与Swing)。附录B演示了用AWT与Swing组件编程的不同之处。学过几何与线性代数等基本数学课程对于使用本书很有帮助,但不是必需的。附录A简单回顾了一些相关的数学概念。
配套网站
网址为www.cs.armstrong.edu/liang/graphics的配套网站包含如下资源:
·复习题答案
·编号为偶数的编程习题的解答
·书中例子的源代码
·资源链接
·勘误表
教师资源网站
可从www.prenhall.com/liang/graphics或者www.cs.armstrong.edu/liang/graphics访问教师资源网站,其中包含下列资源:
·PowerPoint幻灯片,带有交互按钮,用以查看突显语法的全彩源代码,并且不离开幻灯片就可以运行程序。
·样本考题。
·所有习题的解答。学生可以在本书配套网站中获得编号为偶数的习题的解答。
用数字计算机建模与绘制虚拟形体是计算机图形学的主要目标。这个处理过程涉及从数学与计算机科学到心理学与美学等范围广泛的学科门类。针对计算机图形学中从宇宙天体的大模型到基本图元像素化的小细节的建模与渲染问题,已经开发了大量深奥而尖端的方法、算法与范例。要自如地应对该学科的整个内容,就得全面深入地覆盖许多相关领域的知识。正是因为自身的复杂性与深奥的数学知识,使得传统的计算机图形学课程被排除在计算机科学的标准本科课程计划之外。
不过,我们相信,新技术的发展以及设计良好且便捷易用的图形编程包的推出,将使开设基本图形学课程变得切实可行。这样的发展形式与编程语言的进化情形存在相似之处。在仅有机器指令之类的低级语言可用的时代,编程一度是非常单调乏味的工作。高级语言的发展将程序员从低级的技术细节中解放出来。较抽象级的程序处理更容易且更符合逻辑。随着硬件与编译器技术的进步,因为抽象所引起的性能损失显得微不足道。今天,大部分程序员再不需要用机器语言或汇编语言编程。计算机图形学编程所走过的道路与此类似。在计算机图形学的许多方面,可移植的高级系统正在迅速取代单调乏味的低级编程方法。同时,迅速发展的硬件技术也在弥补两者在性能上表现出的差距。
本书关注的主要焦点集中在计算机图形学的基本概念与Java 2D和Java 3D图形编程应用上。我们不讨论低级实现的技术细节,而是强调使用现有图形包开发实用程序的技能。这样做,使我们得以给出一本介绍性的图形学教科书,适合计算机科学与工程本科生和大多数计算机从业人员使用。
Java 2D和Java 3D就是基于这种考虑而推出的理想的图形包。作为高级综合图形包,它们给出了合乎需求的抽象层次,并且与平台无关,所提供的编程能力也是最新的。
Java 2D和Java 3D是Java平台的组成部分。Java虽然是一门相当新的程序设计语言,但是,因为具有诸如平台无关、简单及支持面向对象程序设计之类的独有特征,使得它迅速流行起来。Java 2D和Java 3D提供强大、自然及面向对象的图形建模和渲染接口。..
本书的读者对象是想学习计算机图形学基本概念与技能,并且开始使用Java 2D和Java 3D编程的学生和计算机从业人员。不过,它不是关于Java 2D或Java 3D的另外一本指南,而是旨在向读者介绍计算机图形学基础知识。功能强大的Java包正是实现该目标的便捷工具。
使用本书时,需要具备基本的Java编程知识,包括GUI编程(AWT与Swing)。附录B演示了用AWT与Swing组件编程的不同之处。学过几何与线性代数等基本数学课程对于使用本书很有帮助,但不是必需的。附录A简单回顾了一些相关的数学概念。
配套网站
网址为www.cs.armstrong.edu/liang/graphics的配套网站包含如下资源:
·复习题答案
·编号为偶数的编程习题的解答
·书中例子的源代码
·资源链接
·勘误表
教师资源网站
可从www.prenhall.com/liang/graphics或者www.cs.armstrong.edu/liang/graphics访问教师资源网站,其中包含下列资源:
·PowerPoint幻灯片,带有交互按钮,用以查看突显语法的全彩源代码,并且不离开幻灯片就可以运行程序。
·样本考题。
·所有习题的解答。学生可以在本书配套网站中获得编号为偶数的习题的解答。
书摘回到顶部↑
1.2.1 硬件层
计算机图形程序依赖于输出设备的图形输出能力。最常用的计算机显示设备包括阴极射线管(cathode ray.tube,CRT)显示器和液晶显示器(1iquid crystal display,LCD),它们都是2D光栅设备,其显亲面由离散点的矩形阵列组成。这类显示设备通常由自带处理器和存储器的专门显卡(图形卡)驱动。
低层的图形应用通常直接针对图形硬件进行编程。例如,在运行MS—DOS的典型个人计算机环境下,大多数图形应用直接访问显示存储器。虽然BIOs和D0s环境对图形功能提供了某种基本的支持,但是,对于图形密集型的程序来说,速度还是显得太慢了。这类程序通常采用汇编语言写成,并且操作硬件寄存器和视频缓冲区的方法是与机器高度相关的。
程序清单l.1给出了一个低层图形编程的例子,它是一个汇编语言程序。该程序采用Microsoft Macro Assembler(MMA)进行汇编,能够在任意一台带有VGA显卡的IBM PC兼容机上运行。这个程序通过直接写视频缓冲区的内存位置来画圆。圆心在原点的理想圆的方程为:
f+Y2=R2
计算机显示器只能显示离散的像素点。因此,需要将逼近圆曲线的像素集合计算出来从而显示圆。不过,实际上只需要计算八分之一圆即可,其他部分可以通过对称关系得到。如图l—3所示,算法生成了一系列逼近圆曲线的像素点。现在,考虑右上角的圆弧部分。从顶端的像素(工:0,Y:R)开始,算法尝试获得当前像素右侧的下一个像素的位置。它有两个可能的移动方向:“东”,或“东南”。在这两个候选像素之间,更接近曲线的那个将被选中。这两种情况也可以通过测试中点(z+1,y-0.5)来进行选择。如果中点位于圆弧的内侧,那么选取“东”方向的像素,反之,选取“东南”方向的像素。中点测试可以通过圆的方程来完成。通过使用一些差分变量,实际的测试过程可进一步简化为只需进行整数加法运算。
……
计算机图形程序依赖于输出设备的图形输出能力。最常用的计算机显示设备包括阴极射线管(cathode ray.tube,CRT)显示器和液晶显示器(1iquid crystal display,LCD),它们都是2D光栅设备,其显亲面由离散点的矩形阵列组成。这类显示设备通常由自带处理器和存储器的专门显卡(图形卡)驱动。
低层的图形应用通常直接针对图形硬件进行编程。例如,在运行MS—DOS的典型个人计算机环境下,大多数图形应用直接访问显示存储器。虽然BIOs和D0s环境对图形功能提供了某种基本的支持,但是,对于图形密集型的程序来说,速度还是显得太慢了。这类程序通常采用汇编语言写成,并且操作硬件寄存器和视频缓冲区的方法是与机器高度相关的。
程序清单l.1给出了一个低层图形编程的例子,它是一个汇编语言程序。该程序采用Microsoft Macro Assembler(MMA)进行汇编,能够在任意一台带有VGA显卡的IBM PC兼容机上运行。这个程序通过直接写视频缓冲区的内存位置来画圆。圆心在原点的理想圆的方程为:
f+Y2=R2
计算机显示器只能显示离散的像素点。因此,需要将逼近圆曲线的像素集合计算出来从而显示圆。不过,实际上只需要计算八分之一圆即可,其他部分可以通过对称关系得到。如图l—3所示,算法生成了一系列逼近圆曲线的像素点。现在,考虑右上角的圆弧部分。从顶端的像素(工:0,Y:R)开始,算法尝试获得当前像素右侧的下一个像素的位置。它有两个可能的移动方向:“东”,或“东南”。在这两个候选像素之间,更接近曲线的那个将被选中。这两种情况也可以通过测试中点(z+1,y-0.5)来进行选择。如果中点位于圆弧的内侧,那么选取“东”方向的像素,反之,选取“东南”方向的像素。中点测试可以通过圆的方程来完成。通过使用一些差分变量,实际的测试过程可进一步简化为只需进行整数加法运算。
……







点击看大图


加载中...

