Valerio Pascucci
Center for Applied Scientic Computing, L. Livermore National Laboratory, California
Michele Vicentino
WIND Telecomunicazioni Spa, Fraud Management System, Rome
Claudio Baldazzi
Saritel Spa, Internet Platforms for Service Providers, Pomezia, Rome
and
Simone Portuesi
Dip. Informatica e Automazione, Universit`
a Roma Tre, Rome
New York
Brisbane
Toronto
Singapore
Contents
Preface
Book roadmap
Acknowledgements
xvii
xviii
xix
xxi
1
2
3
4
4
6
10
10
11
15
15
16
17
23
23
37
37
41
43
45
46
47
2 Geometric programming
2.1 Basic programming
2.1.1 Some operations on numbers
2.1.2 Set operations
2.1.3 Vector and matrix operations
51
51
52
59
61
viii
CONTENTS
2.2
2.3
2.4
64
67
72
73
73
76
84
84
86
88
88
89
95
95
97
97
99
100
100
102
104
106
108
109
112
113
118
119
120
123
123
125
125
129
130
132
133
133
134
135
135
140
142
144
144
CONTENTS
4.5.2 Linear d-Polyhedra
4.5.3 Fractal d-simplex
4.6 Polyhedral complexes
4.6.1 Schlegel diagrams
4.7 Nef polyhedra
4.7.1 Locally adjoined pyramids
4.7.2 Faces of Nef polyhedra
4.8 Linear programming
4.8.1 Geometry of linear programming
4.8.2 Simplex method
4.8.3 Some polyhedral algorithms
4.9 Examples
4.9.1 Platonic solids
4.10 References
5 Elements of dierential geometry
5.1 Curves
5.1.1 Variable-free notation
5.1.2 Reparametrization
5.1.3 Orientation
5.2 Dierentiation
5.2.1 Real-valued maps of a real variable
5.2.2 Vector-valued maps of a real variable
5.2.3 Real-valued maps of several real variables
5.2.4 Vector-valued maps of several real variables
5.2.5 Generalized implementation
5.3 Fields and dierential operators
5.3.1 Gradient
5.3.2 Divergence and Laplacian
5.3.3 Curl
5.3.4 Gradient, divergence and curl of a 3D eld
5.4 Dierentiable manifolds
5.4.1 Charts and atlases
5.4.2 Dierentiable manifolds
5.4.3 Tangent spaces and maps
5.5 Derivatives of a curve
5.6 Examples
5.7 Intrinsic properties of a surface
5.7.1 First fundamental form
5.7.2 Second fundamental form
5.7.3 Gauss curvature
5.8 Examples
5.8.1 Color map of the Gauss curvature eld
ix
147
148
149
152
153
154
156
156
158
158
161
163
163
168
169
169
170
174
175
176
176
180
183
186
188
189
189
191
192
192
194
195
195
198
198
200
205
208
210
211
212
212
II
CONTENTS
Graphics
215
6 Ane transformations
6.1 Preliminaries
6.1.1 Transformations
6.1.2 Points and vectors
6.1.3 Orientations and rotations
6.1.4 Homogeneous coordinates
6.2 2D Transformations
6.2.1 Translation
6.2.2 Scaling
6.2.3 Reection
6.2.4 Rotation
6.2.5 Shearing
6.2.6 Generic transformation
6.2.7 Tensor properties
6.2.8 Fixed point transformations
6.3 3D Transformations
6.3.1 Elementary transformations
6.3.2 Rotations
6.3.3 Rotations about ane axes
6.3.4 Algebraic properties of rotations
6.4 PLaSM implementation
6.4.1 Pre-dened ane tensors
6.4.2 User-dened ane tensors
6.5 Examples
6.5.1 Modeling applied 3D vectors and reference frames
217
217
217
218
219
219
221
221
224
226
227
232
233
234
236
237
237
240
243
243
246
246
249
250
250
7 Graphic primitives
7.1 Some background
7.1.1 GKS
7.1.2 PHIGS
7.1.3 Open GL
7.1.4 Open INVENTOR
7.1.5 VRML
7.1.6 Java 3D
7.2 Basic primitives
7.2.1 Points
7.2.2 Polyline
7.2.3 Polymarker
7.2.4 Text
7.2.5 Triangle strip
7.2.6 Triangle fan
7.2.7 Quadrilateral mesh
7.3 Quotient set of polylines
7.3.1 Basic denitions
7.3.2 Interpolation of shapes
257
257
257
259
260
261
262
263
265
265
266
269
272
277
279
281
284
285
291
CONTENTS
7.4
7.5
xi
295
298
299
300
302
8 Hierarchical structures
8.1 Hierarchical graphs
8.1.1 Local coordinates and modeling transformation
8.2 Hierarchical structures
8.2.1 Hierarchical structures in PLaSM
8.2.2 Assembly using global coordinates
8.2.3 Assembly with local coordinates
8.3 Traversal
8.4 Implementations
8.4.1 Structure network in PHIGS
8.4.2 Hierarchical scene graph in VRML
8.5 Examples
8.5.1 Living room modeling
8.5.2 Body model
8.5.3 Umbrella modeling (1): structure
8.5.4 Tree diagrams
8.5.5 Array of aligned graphics symbols
303
303
304
305
306
307
308
308
310
310
311
315
315
320
323
325
328
9 Graphic pipelines
9.1 2D pipeline
9.1.1 Coordinate systems
9.1.2 Normalization and device transformations
9.1.3 Window-viewport mapping
9.2 3D pipeline
9.2.1 View model
9.2.2 Coordinate systems
9.2.3 Transformations of coordinates
9.2.4 View orientation
9.2.5 View mapping
9.2.6 Perspective transformation
9.2.7 Workstation transformation
9.3 Other implementations
9.3.1 Scalable vector graphics (SVG)
9.3.2 Open Inventor camera model
9.3.3 Java 3D viewing model
9.4 Examples
9.4.1 PHIGS! pipeline display
9.4.2 VRML camera implementation
333
333
333
335
336
339
340
341
342
344
345
350
351
353
355
357
357
359
359
361
367
367
xii
CONTENTS
10.2
10.3
10.4
10.5
10.6
10.7
10.8
10.9
III
Modeling
11 Parametric curves
11.1 Curve representations
11.2 Polynomial parametric curves
11.2.1 Linear curves
11.2.2 Quadratic curves
11.2.3 Cubic curves
11.2.4 Higher-order Bezier curves
11.3 Polynomial splines
11.3.1 Cubic cardinal splines
11.3.2 Cubic uniform B-splines
11.3.3 Non-uniform polynomial B-splines
11.3.4 Multiresolution Bezier and B-splines
369
370
371
371
374
382
382
383
386
392
392
396
398
400
401
404
412
416
417
420
421
423
424
426
433
433
433
435
437
437
438
439
441
441
444
446
448
449
455
459
459
461
465
470
CONTENTS
xiii
472
473
474
478
478
480
480
481
486
494
497
497
498
499
499
503
505
508
511
514
521
523
523
523
527
527
529
529
531
533
533
536
539
540
541
543
547
548
555
555
556
559
560
560
562
xiv
CONTENTS
13.3 Decompositive schemes
13.3.1 Simplicial schemes
13.3.2 Convex-cell partitioning and covering
13.4 Constructive Solid Geometry
13.5 Boundary schemes
13.5.1 Adjacency and incidence relations
13.5.2 Euler equation
13.5.3 Edge-based schemes
13.5.4 Facet-based schemes
13.5.5 Mass and inertia properties
13.6 Examples
13.6.1 Umbrella modeling (4): solid parts
563
564
564
569
570
572
573
574
577
586
592
592
595
595
600
601
610
611
612
614
617
620
622
623
627
630
633
635
638
639
640
641
648
15 Motion modeling
15.1 Degrees of freedom
15.2 Conguration space
15.3 Animation with PLaSM
15.3.1 Some denitions
15.3.2 Generating flash animations
15.3.3 Generating VRML animations
15.4 Motion coordination
15.4.1 Non-linear animation
15.4.2 Network programming
15.4.3 Modeling and animation cycle
15.5 Extended Conguration Space
649
649
653
655
656
656
660
667
667
669
672
680
CONTENTS
15.5.1 Introduction
15.5.2 Rationale of the method
15.5.3 ECS algorithm
15.5.4 Encoding degrees of freedom
15.5.5 Computation of FP
15.6 Examples
15.6.1 Umbrella modeling (5): animation
15.6.2 Non-holonomic planar motion
15.6.3 Anthropomorphic robot with 29 degrees of freedom
15.6.4 Solving a 2D labyrinth
xv
680
680
681
682
686
689
689
690
693
696
701
705
705
719
720
723
724
725
726
726
729
730
732
735
737
739
739
740
741
741
744
Appendix C
REFERENCES
747
747
Index
759