Geometric Tools for Computer Graphics (The Morgan Kaufmann Series in Computer Graphics)
David H. Eberly
Format: PDF / Kindle (mobi) / ePub
Do you spend too much time creating the building blocks of your graphics applications or finding and correcting errors? Geometric Tools for Computer Graphics is an extensive, conveniently organized collection of proven solutions to fundamental problems that you'd rather not solve over and over again, including building primitives, distance calculation, approximation, containment, decomposition, intersection determination, separation, and more.
If you have a mathematics degree, this book will save you time and trouble. If you don't, it will help you achieve things you may feel are out of your reach. Inside, each problem is clearly stated and diagrammed, and the fully detailed solutions are presented in easy-to-understand pseudocode. You also get the mathematics and geometry background needed to make optimal use of the solutions, as well as an abundance of reference material contained in a series of appendices.
- Filled with robust, thoroughly tested solutions that will save you time and help you avoid costly errors.
- Covers problems relevant for both 2D and 3D graphics programming.
- Presents each problem and solution in stand-alone form allowing you the option of reading only those entries that matter to you.
- Provides the math and geometry background you need to understand the solutions and put them to work.
- Clearly diagrams each problem and presents solutions in easy-to-understand pseudocode.
- Resources associated with the book are available at the companion Web site www.mkp.com/gtcg.
* Filled with robust, thoroughly tested solutions that will save you time and help you avoid costly errors.
* Covers problems relevant for both 2D and 3D graphics programming.
* Presents each problem and solution in stand-alone form allowing you the option of reading only those entries that matter to you.
* Provides the math and geometry background you need to understand the solutions and put them to work.
* Clearly diagrams each problem and presents solutions in easy-to-understand pseudocode.
* Resources associated with the book are available at the companion Web site www.mkp.com/gtcg.
= 51 a1,1c2 − a2,1c1 a1,1a2,2 − a2,1a1,2 provided a1,1a2,2 − a2,1a1,2 = 0. Substituting this value for x2 back in the first equation yields a1,1x1 + a1,2x2 = c1 a1,1x1 + x2 a1,1c2 − a2,1c1 a1,1a2,2 − a2,1a1,2 = c1 a1,2a1,1c2 − a1,2a2,1c1 a1,1x1 = c1 − = x1 = a1,1a2,2 − a1,2a2,1 a1,1a2,2c1 − a1,2a1,1c2 a1,1a2,2 − a1,2a2,1 c1a2,2 − c2a1,2 a1,1a2,2 − a1,2a2,1 provided a1,1a2,2 − a2,1a1,2 = 0. The numerators and denominators of both x1 and x2 can be expressed as determinants: x1 = c1 a1,2.
3.10, we can see that the sum is the same irrespective of the grouping of the terms. iii. Distributivity of addition over multiplication: (α + β)u = α u + β v. See Figure 3.11. iv. Distributivity of multiplication over addition: α(u + v) = α u + α v. From Figure 3.12, we can see that the sum is the same irrespective of the grouping of the terms. 68 Chapter 3 Vector Algebra u –u Figure 3.8 Vector negation. v u u w v Figure 3.9 Commutativity of vector addition. w u+v+w v+w v u u+v.
By definition a unit vector, so we have v = v |cos θ| which proves the vectors have the same length. To show equivalent direction, we have to consider two cases: i. cos θ is positive (as in Figure 3.29). ii. cos θ is negative (as in Figure 3.30). In the former dir v cos θ uˆ = dir uˆ ⇐⇒ cos θ > 0 dir v cos θ uˆ = − dir uˆ ⇐⇒ cos θ < 0 3.3 Affine Spaces 89 v v v u Figure 3.30 cos θ negative. So for cos θ < 0 and cos θ > 0, we have dir v cos θ uˆ = dir v (3.4) Note that if cos θ = 0.
··· ··· an an v2 . 1 ] .. vn O v1,1 v2,1 1 ] ... v n,1 O1 (4.4) v1,2 v2,2 .. . vn,2 O2 ··· ··· .. . ··· ··· v1,n v2,n .. . vn,n On 112 Chapter 4 Matrices, Vector Algebra, and Transformations So, we can represent a point as a row matrix whose first n elements are the coefficients of the affine coordinates and whose last element is 1. If the affine frame is clear from context, we will use the shorthand notation P = [ a1 a2 · · · an 1 ]. Be.
“perp”) operator earlier, without much in the way of explanation. If we have a vector v, then v ⊥ is a vector perpendicular to it (see Figure 4.3). Of course, in 2D there are actually two perpendicular vectors (of the same length), one at 90◦ clockwise and one at 90◦ counterclockwise. However, since we have adopted a right-handed convention, it makes sense to choose the perpendicular vector 90◦ counterclockwise, as shown in the figure. Perpendicular vectors arise frequently in 2D geometry.