交互式计算机图形学:自顶向下方法与OpenGL应用

交互式计算机图形学:自顶向下方法与OpenGL应用
作 者: 美Edward Angel
出版社: 高等教育出版社
丛编项:
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: 图形学
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  Edward Angel is currently a professor of Commputer Sicience,Electrical and Computer Engineering and Media Arts at the university of new mexico.He was recently named the Director of the Art tech Center at UNM in the College of Fine Arts.Professor Angel received his Ph.D.in electrical engineering from the university of Southern California in 1968 and has since held visiting positions in Sweden,India,and England.his present research interests focus on computer graphics and scientific visualization.

内容简介

本书向读者讲授如何用OpenGL从初级阶段快速制作优质的交互式计算机图形实例,OpenGL是业界广泛采用的三维图形API,本书藉此向读者提供了在计算机图形学领域更广阔空间内发展的坚实基础。书中内容覆盖了计算机图形学基础课程所需的所有论题,如光景交互作用、图形明暗处理、图形建模、曲线与曲面、偏差预防、纹理映射和图形组合,还探讨了计算机硬件方面的问题。本版为配合计算机图形学领域最新进展,增加了更具广度和深度的内容,包括图像处理、多重透视、并行透视等,并运用选择模式、仿真模拟、面向对象图形学与实景图像、射线跟踪等方法讲解了图形交互的内容。随书所附光盘包括OpenGL指令集参考、OpenGL手册、书中源码代码和附加的实用案例。本书适用于高等院校本科高年级和研究生的计算机图形学、交互式计算机系统等课程。作者EdwardAngel是美国新墨西哥州立大学电气与计算机工程及媒体艺术学院计算机科学系教授,现任该校艺术学院艺术技术中心主任。Angel教授于1968年在南加州大学获电气工程博士学位,先后在瑞典、印度和英国作访问学者。研究领域主要集中在计算机图形学和计算机视觉方面。内容:⒈计算机图形学系统与模型⒉计算机图形学程序设计⒊图形数据输入与人机交互⒋几何对象与变换⒌图形表示⒍图形明暗处理⒎离散方法在图形学中的应用技巧⒏图形制作案例⒐分层与面向对象建模⒑曲线与曲面⒒程序化方法⒓计算机视觉⒔图形制作高级案例附录A程序样例附录B图形表示空间介绍附录C矩阵

图书目录

preface

chapter 1 graphics systems and models

1.1 applications of computer graphics

1.1.1 display of information

1.1.2 design

1.1.3 simulation and animation

1.1.4 user interfaces

1.2 a graphics system

1.2.1 pixels and the frame buffer

1.2.2 output devices

1.2.3 input devices

1.3 images: physical and synthetic

1.3.1 objects and viewers

1.3.2 light and images

1.3.3 ray tracing

1.4 the human visual system

1.5 the pinhole camera

1.6 the synthetic-camera model

1.7 the programmer's interface

1.7.1 application programmer's interfaces

1.7.2 the pen-plotter model

1.7.3 three-dimensional apis

1.7.4 a sequence of images

1.7.5 the modeling-rendering paradigm

1.8 graphics architectures

1.8.1 display processors

1.8.2 pipeline architectures

1.8.3 transformations

1.8.4 clipping

1.8.5 projection

1.8.6 rasterization

1.8.7 performance characteristics

1.9 summary and notes

1.10 suggested readings

exercises

chapter 2 graphics programming

2.1 the sierpinski gasket

2.2 programming two-dimensional applications

2.2.1 coordinate systems

2.3 the opengl api

2.3.1 graphics functions

2.3.2 the graphics pipeline and state machines

2.3.3 the opengl interface

2.4 primitives and attributes

2.4.1 polygon basics

2.4.2 polygon types in opengl

2.4.3 drawing a sphere

2.4.4 text

2.4.5 curved objects

2.4.6 attributes

2.5 color

2.5.1 rgb color

2.5.2 indexed color

2.5.3 setting of color attributes

2.6 viewing

2.6.1 two-dimensional viewing

2.6.2 the orthographic view

2.6.3 matrix modes

2.7 control functions

2.7.1 interaction with the window system

2.7.2 aspect ratio and viewports

2.7.3 the main, display, and myinit functions

2.7.4 program structure

2.8 the gasket program

2.9 polygons and recursion

2.10 the three-dimensional gasket

2.10.1 use of three-dimensional points

2.10.2 use of polygons in three dimensions

2.10.3 hidden-surface removal

2.11 summary and notes

2.12 suggested readings

exercises

chapter 3 input and interaction

3.1 interaction

3.2 input devices

3.2.1 physical input devices

3.2.2 logical devices

3.2.3 measure and trigger

3.2.4 input modes

3.3 clients and servers

3.4 display lists

3.4.1 definition and execution of display lists

3.4.2 text and display lists

3.4.3 fonts in glut

3.5 programming event-driven input

3.5.1 using the pointing device

3.5.2 window events

3.5.3 keyboard events

3.5.4 the display and idle callbacks

3.5.5 window management

3.6 menus

3.7 picking

3.7.1 picking and selection mode

3.8 a simple paint program

3.9 animating interactive programs

3.9.1 the rotating square

3.9.2 double buffering

3.9.3 other buffering problems

3.10 design of interactive programs

3.10.1 toolkits, widgets, and the frame buffer

3.11 logic operations

3.11.1 drawing erasable lines

3.11.2 xor and color

3.11.3 cursors and overlay planes

3.12 summary and notes

3.13 suggested readings

exercises

chapter 4 geometric objects and transformations

4.1 scalars, points, and vectors

4.1.1 the geometric view

4.1.2 coordinate-free geometry

4.1.3 the mathematical view: vector and affine spaces

4.1.4 the computer-science view

4.1.5 geometric adts

4.1.6 lines

4.1.7 affine sums

4.1.8 convexity

4.1.9 dot and cross products

4.1.10 planes

4.2 three-dimensional primitives

4.3 coordinate systems and frames

4.3.1 representations and n-tuples

4.3.2 changes of coordinate systems

4.3.3 example of change of representation

4.3.4 homogeneous coordinates

4.3.5 example of change in frames

4.3.6 working with representations

4.3.7 frames and adts

4.3.8 frames in opengl

4.4 modeling a colored cube

4.4.1 modeling of a cube

4.4.2 inward- and outward-pointing faces

4.4.3 data structures for object representation

4.4.4 the color cube

4.4.5 bilinear interpolation

4.4.6 vertex arrays

4.5 affine transformations

4.6 translation, rotation, and scaling

4.6.1 translation

4.6.2 rotation

4.6.3 scaling

4.7 transformations in homogeneous coordinates

4.7.1 translation

4.7.2 scaling

4.7.3 rotation

4.7.4 shear

4.8 concatenation of transformations

4.8.1 rotation about a fixed point

4.8.2 general rotation

4.8.3 the instance transformation

4.8.4 rotation about an arbitrary axis

4.9 opengl transformation matrices

4.9.1 the current transformation matrix

4.9.2 rotation, translation, and scaling

4.9.3 rotation about a fixed point in opengl

4.9.4 order of transformations

4.9.5 spinning of the cube

4.9.6 loading, pushing, and popping matrices

4.10 interfaces to three-dimensional applications

4.10.1 using areas of the screen

4.10.2 a virtual trackball

4.10.3 smooth rotations

4.10.4 incremental rotation

4.11 quaternions

4.11.1 complex numbers and quaternions

4.11.2 quaternions and rotation

4.12 summary and notes

4.13 suggested readings

exercises

chapter 5 viewing

5.1 classical and computer viewing

5.1.1 classical viewing

5.1.2 orthographic projections

5.1.3 axonometric projections

5.1.4 oblique projections

5.1.5 perspective viewing

5.2 viewing with a computer

5.3 positioning of the camera

5.3.1 positioning of the camera frame

5.3.2 two viewing apis

5.3.3 the look-at function

5.3.4 other viewing apis

5.4 simple projections

5.4.1 perspective projections

5.4.2 orthogonal projections

5.5 projections in opengl

5.5.1 perspective in opengl

5.5.2 parallel viewing in opengl

5.6 hidden-surface removal

5.6.1 culling

5.7 walking through a scene

5.8 parallel-projection matrices

5.8.1 projection normalization

5.8.2 orthogonal-projection matrices

5.8.3 oblique projections

5.9 perspective-projection matrices

5.9.1 perspective normalization

5.9.2 opengl perspective transformations

5.10 projections and shadows

5.11 summary and notes

5.12 suggested readings

exercises

chapter 6 shading

6.1 light and matter

6.2 light sources

6.2.1 color sources

6.2.2 ambient light

6.2.3 point sources

6.2.4 spotlights

6.2.5 distant light sources

6.3 the phong reflection model

6.3.1 ambient reflection

6.3.2 diffuse reflection

6.3.3 specular reflection

6.4 computation of vectors

6.4.1 normal vectors

6.4.2 angle of reflection

6.4.3 use of the halfway vector

6.4.4 transmitted light

6.5 polygonal shading

6.5.1 flat shading

6.5.2 interpolative and gouraud shading

6.5.3 phong shading

6.6 approximation of a sphere by recursive subdivision

6.7 light sources in opengl

6.8 specification of materials in opengl

6.9 shading of the sphere model

6.10 global rendering

6.11 summary and notes

6.12 suggested readings

exercises

chapter 7 discrete techniques

7.1 buffers

7.2 digital images

7.3 writes into buffers

7.3.1 writing modes

7.3.2 writes with xor

7.4 bit and pixel operations in opengl

7.4.1 opengl buffers and the pixel pipeline

7.4.2 bitmaps

7.4.3 raster fonts

7.4.4 pixels and images

7.4.5 lookup tables

7.4.6 buffers for picking

7.5 mapping methods

7.6 texture mapping

7.6.1 two-dimensional texture mapping

7.6.2 texture mapping in opengl

7.6.3 texture objects

7.6.4 multitexturing

7.6.5 texture generation

7.7 environmental maps

7.8 bump maps

7.9 compositing techniques

7.9.1 opacity and blending

7.9.2 image compositing

7.9.3 blending and compositing in opengl

7.9.4 antialiasing

7.9.5 back-to-front and front-to-back rendering

7.9.6 depth cueing and fog

7.10 multirendering and the accumulation buffer

7.10.1 scene antialiasing

7.10.2 bump mapping and embossing

7.10.3 image processing

7.10.4 imaging extensions

7.10.5 other multipass methods

7.11 sampling and aliasing

7.11.1 sampling theory

7.11.2 reconstruction

7.11.3 quantization

7.12 summary and notes

7.13 suggested readings

exercises

chapter 8 implementation of a renderer

8.1 basic implementation strategies

8.2 four major tasks

8.2.1 modeling

8.2.2 geometric processing

8.2.3 rasterization

8.2.4 display

8.3 implementation of transformations

8.4 line-segment clipping

8.4.1 cohen-sutherland clipping

8.4.2 liang-barsky clipping

8.5 polygon clipping

8.6 clipping of other primitives

8.6.1 bounding boxes and volumes

8.6.2 curves, surfaces, and text

8.6.3 clipping in the frame buffer

8.7 clipping in three dimensions

8.8 hidden-surface removal

8.8.1 object-space and image-space approaches

8.8.2 sorting and hidden-surface removal

8.8.3 back-face removal

8.8.4 the z-buffer algorithm

8.8.5 depth sort and the painter's algorithm

8.8.6 the scan-line algorithm

8.9 scan conversion

8.10 bresenham's algorithm

8.11 scan conversion of polygons

8.11.1 inside-outside testing

8.11.2 opengl and concave polygons

8.11.3 scan conversion with the z-buffer

8.11.4 fill and sort

8.11.5 flood fill

8.11.6 scan-line algorithms

8.11.7 singularities

8.12 antialiasing

8.13 display considerations

8.13.1 color systems

8.13.2 the color matrix

8.13.3 gamma correction

8.13.4 dithering and halftoning

8.14 summary and notes

8.15 references

exercises

chapter 9 hierarchical and object-oriented modeling

9.1 symbols and instances

9.2 hierarchical models

9.3 a robot arm

9.4 trees and traversal

9.4.1 a stack-based traversal

9.5 use of tree data structures

9.6 animation

9.7 graphical objects

9.7.1 methods, attributes, and messages

9.7.2 a cube object

9.7.3 implementing the cube object

9.7.4 objects and hierarchy

9.7.5 geometric objects

9.8 scene graphs

9.9 a simple scene graph api

9.9.1 the node class

9.9.2 geometry nodes

9.9.3 camera class

9.9.4 lights and materials

9.9.5 transformations

9.9.6 the robot figure

9.9.7 implementing the viewer

9.9.8 implementing a node

9.10 other tree structures

9.10.1 csg trees

9.10.2 shade trees

9.10.3 bsp trees

9.10.4 quadtrees and octrees

9.11 graphics and the web

9.11.1 networks and protocols

9.11.2 hypermedia and html

9.11.3 databases and vrml

9.11.4 java and applets

9.12 summary and notes

9.13 suggested readings

exercises

chapter 10 curves and surfaces

10.1 representation of curves and surfaces

10.1.1 explicit representation

10.1.2 implicit representations

10.1.3 parametric form

10.1.4 parametric polynomial curves

10.1.5 parametric polynomial surfaces

10.2 design criteria

10.3 parametric cubic polynomial curves

10.4 interpolation

10.4.1 blending functions

10.4.2 the cubic interpolating patch

10.5 hermite curves and surfaces

10.5.1 the hermite form

10.5.2 geometric and parametric continuity

10.6 bezier curves and surfaces

10.6.1 bezier curves

10.6.2 bezier surface patches

10.7 cubic b-splines

10.7.1 the cubic b-spline curve

10.7.2 b-splines and basis

10.7.3 spline surfaces

10.8 general b-splines

10.8.1 recursively defined b-splines

10.8.2 uniform splines

10.8.3 nonuniform b-splines

10.8.4 nurbs

10.9 rendering of curves and surfaces

10.9.1 polynomial evaluation methods

10.9.2 recursive subdivision of bezier polynomials

10.9.3 rendering of other polynomial curves by subdivision

10.9.4 subdivision of bezier surfaces

10.10 the utah teapot

10.11 algebraic surfaces

10.11.1 quadrics

10.11.2 rendering of surfaces by ray casting

10.11.3 subdivision curves and surfaces

10.12 curves and surfaces in opengl

10.12.1 bezier curves

10.12.2 bezier surfaces

10.12.3 displaying the teapot

10.12.4 nurbs functions

10.12.5 quadrics

10.13 summary and notes

10.14 references and notes

exercises

chapter 11 procedural methods

11.1 reasons for using procedural models

11.2 physically based models and particle systems

11.3 newtonian particles

11.3.1 independent particles

11.3.2 spring forces

11.3.3 attractive and repulsive forces

11.4 solving particle systems

11.5 constraints

11.5.1 collisions

11.5.2 particles inside a sphere

11.5.3 soft constraints

11.6 language-based models

11.7 recursive methods and fractals

11.7.1 rulers and length

11.7.2 fractal dimension

11.7.3 midpoint division and brownian motion

11.7.4 fractal mountains

11.8 the mandelbrot set

11.9 summary and notes

11.10 suggested readings

exercises

chapter 12 visualization

12.1 data + geometry

12.2 height fields and contours

12.2.1 meshes

12.2.2 contour plots

12.2.3 marching squares

12.3 visualizing surfaces and scalar fields

12.3.1 volumetric data sets

12.3.2 visualization of implicit functions

12.4 isosurfaces and marching cubes

12.5 mesh simplification

12.6 direct volume rendering

12.6.1 assignment of color and opacity

12.6.2 splatting

12.6.3 volume ray tracing

12.6.4 texture mapping of volumes

12.7 vector-field visualization

12.7.1 hedgehogs

12.7.2 glyphs

12.7.3 color

12.7.4 particle traces and streamlines

12.8 tensor visualization

12.9 summary and notes

12.10 suggested readings

exercises

chapter 13 advanced rendering

13.1 going beyond pipeline rendering

13.2 ray tracing

13.3 building a simple ray tracer

13.3.1 recursive ray tracing

13.3.2 calculating intersections

13.3.3 ray-tracing variations

13.4 the rendering equation

13.5 radiosity

13.5.1 the radiosity equation

13.5.2 solving the radiosity equation

13.5.3 computing form factors

13.5.4 carrying out radiosity

13.6 renderman

13.7 large-scale rendering

13.7.1 sort-middle rendering

13.7.2 sort-last rendering

13.7.3 sort-first rendering

13.8 image-based rendering

13.8.1 a simple example

13.9 summary and notes

13.10 suggested readings

exercises

appendix a sample programs

appendix b spaces

appendix c matrices

references

function index

subject index