Anda di halaman 1dari 10

Geometric Programming

for Computer-Aided Design


Alberto Paoluzzi
Dip. Informatica e Automazione, Universit`
a Roma Tre, Rome Italy

with contributions from

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

JOHN WILEY & SONS


Chichester

New York

Brisbane

Toronto

Singapore

Contents
Preface
Book roadmap
Acknowledgements

xvii
xviii
xix

xxi

Programming and Geometry

1 Introduction to FL and PLaSM


1.1 Introduction to symbolic design programming
1.1.1 Computational model
1.2 Getting started with PLaSM
1.2.1 Installing the language
1.2.2 Using the language
1.3 Programming at Function Level
1.3.1 Elements of FL syntax
1.3.2 Combining forms and functions
1.4 Basics of PLaSM programming
1.4.1 Expressions
1.4.2 User-dened functions
1.4.3 Built-in functions
1.5 Geometric operators
1.5.1 Pre-dened geometric operators
1.6 Examples
1.6.1 First programs
1.6.2 Further examples
1.6.3 Virtual Manhattan
1.6.4 Virtual skyscraper
1.6.5 Roof of S. Stefano Rotondo
1.7 Annotated references

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

2.1.4 String and character operations


2.1.5 Other examples
2.1.6 Pipeline paradigm
Basic geometric programming
2.2.1 Primitive shapes
2.2.2 Non-primitive shapes (simplicial maps)
Assembling shapes
2.3.1 Primitive alignments
2.3.2 Relative arrangements
Examples
2.4.1 Parametric nut stack
2.4.2 Hierarchical temple

64
67
72
73
73
76
84
84
86
88
88
89

3 Elements of linear algebra


3.1 Vector spaces
3.1.1 Bases and coordinates
3.1.2 PLaSM representation of vectors
3.2 Ane spaces
3.2.1 Operations on vectors and points
3.2.2 Positive, ane and convex combinations
3.2.3 Linear, ane and convex independence
3.2.4 Convex coordinates
3.2.5 Euclidean spaces
3.3 Linear transformations and tensors
3.3.1 Tensor operations
3.3.2 Coordinate representation
3.3.3 PLaSM matrix representation
3.3.4 Determinant and inverse
3.3.5 Orthogonal tensors
3.3.6 PLaSM representation of tensors

95
95
97
97
99
100
100
102
104
106
108
109
112
113
118
119
120

4 Elements of polyhedral geometry


4.1 Basic concepts
4.2 Convex sets
4.2.1 Positive, ane and convex hulls
4.2.2 Support, separation, extreme points
4.2.3 Duality
4.2.4 Boundary structure
4.3 Polyhedral sets
4.3.1 Extremal points
4.3.2 Double description
4.4 Polytopes
4.4.1 Examples of polytopes
4.4.2 Faces of polytopes
4.4.3 Projection
4.5 Simplicial complexes
4.5.1 Denitions

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

7.3.3 Shape compatibility


7.3.4 Shape resemblance
Examples
7.4.1 Quadrilateral array with holes
Annotated references

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

10 Viewing and rendering


10.1 View-model

367
367

xii

CONTENTS

10.2

10.3

10.4

10.5
10.6
10.7

10.8

10.9

III

10.1.1 View parameters


10.1.2 View volume
Taxonomy of projections
10.2.1 Perspective
10.2.2 Parallel
Hidden-surface removal
10.3.1 Introduction
10.3.2 Pre-processing
10.3.3 Scene coherence
10.3.4 Back-to-front and front-to-back
10.3.5 Binary Space Partition
10.3.6 HSR algorithms in image-space
Illumination models
10.4.1 Diuse light
10.4.2 Specular reection
Color models
Shading models
VRML rendering
10.7.1 Illumination
10.7.2 Color
10.7.3 Shading
10.7.4 Textures
10.7.5 PLaSM lighting
10.7.6 PLaSM texturing
Examples
10.8.1 Orthogonal projection on any viewplane
10.8.2 Model of example house
10.8.3 Cell extraction
10.8.4 Exploded views
10.8.5 Standard view models
Annotated references

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

11.4 Rational curves and splines


11.4.1 Rational Bezier curves
11.4.2 NURBS
11.5 Examples
11.5.1 Shape design with a NURB spline
11.5.2 Umbrella modeling (2): curved rods
11.6 Splines implementation
11.6.1 Cubic uniform splines
11.6.2 Non-uniform B-splines
11.6.3 Non-uniform rational B-splines

472
473
474
478
478
480
480
481
486
494

12 Parametric surfaces and solids


12.1 Introduction
12.1.1 Parametric representation
12.2 Notable surface classes
12.2.1 Prole product surfaces
12.2.2 Ruled surfaces
12.2.3 Cylinders and cones
12.3 Tensor product surfaces
12.3.1 Bilinear and biquadratic surfaces
12.3.2 Bicubic surfaces
12.3.3 Fixed-degrees tensor product surfaces
12.3.4 NURB surfaces
12.4 Higher-order tensor products
12.4.1 Multivariate Bezier manifolds
12.5 Transnite methods
12.5.1 Rationale of the approach
12.5.2 Univariate case
12.5.3 Multivariate case
12.5.4 Transnite Bezier
12.5.5 Transnite Hermite
12.5.6 Connection surfaces
12.5.7 Coons surfaces
12.5.8 Thin solids generated by surfaces
12.6 Examples
12.6.1 Umbrella modeling (3): tissue canvas
12.6.2 Helicoidal spiral volume
12.6.3 Roof design for a sports building
12.6.4 Constrained connection volume

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

13 Basic solid modeling


13.1 Representation scheme
13.1.1 Denition and properties
13.1.2 Taxonomy of representation schemes
13.2 Enumerative schemes
13.2.1 Flat enumerative schemes
13.2.2 Hierarchical enumerative schemes

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

14 Dimension-independent PLaSM operators


14.1 Inside Hierarchical Polyhedral Complexes
14.2 Boolean operations
14.2.1 Algorithm
14.2.2 Optimizing by pruning and unpruning
14.2.3 Interface to PLaSM operators
14.2.4 Linear Programming implementation
14.2.5 Boundary-to-interior operator
14.3 Dimension-independent integration
14.3.1 Tensor of inertia
14.4 Generalized product of polyhedra
14.4.1 Denitions
14.4.2 Product of cell-decomposed polyhedra
14.4.3 Intersection of extrusions
14.5 Skeleton extraction
14.5.1 Algorithm
14.6 Extrusion, sweep, oset and Minkowski sum
14.6.1 Background
14.6.2 Unied approach
14.6.3 Algorithms
14.7 Annotated references

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

Appendix A Denition of MyFont

701

Appendix B PLaSM libraries


B.1 Standard
B.2 animation Library
B.3 colors Library
B.4 curves Library
B.5 derivatives Library
B.6 drawtree Library
B.7 flash Library
B.8 general Library
B.9 myfont Library
B.10 operations Library
B.11 primitives Library
B.12 shapes Library
B.13 splines Library
B.14 strings Library
B.15 surfaces Library
B.16 text Library
B.17 transfinite Library
B.18 vectors Library
B.19 viewmodels Library

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

Anda mungkin juga menyukai