Game Physics Engine Development 1st Edition by Ian Millington – Ebook PDF Instant Download/Delivery. 9780123694713 ,012369471X
Full download Game Physics Engine Development 1st Edition after payment
Product details:
ISBN 10: 012369471X
ISBN 13: 9780123694713
Author: Ian Millington
Simulating physics helps cutting-edge games distinguish themselves by making virtual objects behave as we expect them to in the real world. Physics engines are the software programs that run these simulations. Building an engine is difficult, however. There are a large number of new developers (and hobbyists) coming into this market who need help through this complex process. Current introductory books are inadequate; they don’t bring enough real-world programming experience to the task. There is a need for an introductory book on game physics with solid coding guidance but which limits the math content. Ian Millington brings his extensive professional programming experience to this problem. He has developed games since 1987, has studied AI and mathematics at the PhD level, and founded Mindlathe Ltd., a company that designed and built commercial physics engines. Game Physics Engine Development carefully describes each step in the creation of a robust, usable physics engine. It introduces the mathematical concepts in a clear and simple manner, keeping to high school level topics and building a physics code library as it goes. Each new concept is explained in diagrams and code to make sure that even the most novice of game programmers understands. This book will serve as a introduction to more mathematically advanced books on game physics, such as Dave Eberly’s Game Physics.
Game Physics Engine Development 1st Edition Table of contents:
1 Introduction
1.1 What is Game Physics?
1.2 What is a Physics Engine?
1.2.1 Advantages of a Physics Engine
1.2.2 Weaknesses of a Physics Engine
1.3 Approaches to Physics Engines
1.3.1 Types of Objects
1.3.2 Contact Resolution
1.3.3 Impulses and Forces
1.3.4 What We’re Building
1.4 The Mathematics of Physics Engines
1.4.1 The Math You Need to Know
Figure 1.1 Trigonometry and coordinate geometry.
1.4.2 The Math We’ll Review
1.4.3 The Math I’ll Introduce
1.5 The Source Code in the Book
1.6 How the Book is Structured
1.6.1 Exercises and Projects
PART I Particle Physics
2 The Mathematics of Particles
2.1 Vectors
Figure 2.1 3D coordinates.
Excerpt from file include/cyclone/core.h
Excerpt from file include/cyclone/precision.h
2.1.1 The Handedness of Space
Figure 2.2 Left- and right-handed axes.
2.1.2 Vectors and Directions
Figure 2.3 A vector as a movement in space.
Excerpt from file include/cyclone/core.h
2.1.3 Scalar and Vector Multiplication
Excerpt from file include/cyclone/core.h
Figure 2.4 The geometry of scalar-vector multiplication.
Figure 2.5 The geometry of vector addition.
2.1.4 Vector Addition and Subtraction
Excerpt from file include/cyclone/core.h
Excerpt from file include/cyclone/core.h
Excerpt from file include/cyclone/core.h
2.1.5 Multiplying Vectors
2.1.6 The Component Product
Excerpt from file include/cyclone/core.h
2.1.7 The Scalar Product
Excerpt from file include/cyclone/core.h
The Trigonometry of the Scalar Product
The Geometry of the Scalar Product
Figure 2.6 Geometric interpretation of the scalar product.
2.1.8 The Vector Product
Excerpt from file include/cyclone/core.h
The Trigonometry of the Vector Product
Commutativity of the Vector Product
The Geometry of the Vector Product
Figure 2.7 Geometric interpretation of the vector product.
2.1.9 The Orthonormal Basis
2.2 Calculus
2.2.1 Differential Calculus
Velocity
Figure 2.8 Same average velocity, different instantaneous velocity.
Acceleration
Vector Differential Calculus
Velocity, Direction, and Speed
2.2.2 Integral Calculus
Vector Integral Calculus
2.3 Summary
2.4 Exercises
3 The Laws of Motion
3.1 The Particle
Excerpt from file include/cyclone/particle.h
3.2 The First Two Laws
The First Law
Excerpt from file include/cyclone/particle.h
The Second Law
3.2.1 The Force Equations
3.2.2 Adding Mass to Particles
Excerpt from file include/cyclone/particle.h
3.2.3 Momentum and Velocity
3.2.4 The Force of Gravity
The Value of g
3.3 The Integrator
3.3.1 The Update Equations
Position Update
Velocity Update
3.3.2 The Complete Integrator
Excerpt from file include/cyclone/particle.h
Excerpt from file include/cyclone/precision.h
Excerpt from file src/particle.cpp
3.4 Summary
3.5 Exercises
4 The Particle Physics Engine
4.1 Ballistics
4.1.1 Setting Projectile Properties
Figure 4.1 Screenshot of the ballistic demo.
4.1.2 Implementation
Excerpt from file src/demos/ballistic/ballistic.cpp
Excerpt from file src/demos/ballistic/ballistic.cpp
Figure 4.2 Screenshot of the bigballistic demo.
Figure 4.3 Screenshot of the fireworks demo.
4.2 Fireworks
4.2.1 The Fireworks Data
Excerpt from file src/demos/fireworks/fireworks.cpp
4.2.2 Firework Rules
Excerpt from file src/demos/fireworks/fireworks.cpp
Excerpt from file src/demos/fireworks/fireworks.cpp
4.2.3 The Implementation
Excerpt from file src/demos/fireworks/fireworks.cpp
Excerpt from file src/demos/fireworks/fireworks.cpp
Excerpt from file src/demos/fireworks/fireworks.cpp
4.3 Summary
4.4 Projects
Mini-Project 4.1
Mini-Project 4.2
Mini-Project 4.3
Mini-Project 4.4
Project 4.1
Project 4.2
PART II Mass Aggregate Physics
5 Adding General Forces
5.1 D’Alembert’s Principle
Excerpt from file include/cyclone/particle.h
Excerpt from file src/particle.cpp
Excerpt from file include/cyclone/particle.h
Excerpt from file src/particle.cpp
5.2 Force Generators
5.2.1 Interfaces and Polymorphism
5.2.2 Implementation
Excerpt from file include/cyclone/pfgen.h
Excerpt from file include/cyclone/pfgen.h
Excerpt from file src/pfgen.cpp
5.2.3 A Gravity Force Generator
Excerpt from file include/cyclone/pfgen.h
Excerpt from file src/pfgen.cpp
5.2.4 A Drag Force Generator
Excerpt from file include/cyclone/pfgen.h
Excerpt from file src/pfgen.cpp
5.3 Built-In Gravity and Damping
5.4 Summary
5.5 Exercises
Exercise 5.1
Exercise 5.2
Exercise 5.3
Exercise 5.4
6 Springs and Spring-Like Things
6.1 Hook’s Law
Spring Compression
The Limit of Elasticity
Spring-Like Things
Figure 6.1 The game’s camera attached to a spring.
6.2 Spring-Like Force Generators
6.2.1 A Basic Spring Force Generator
Excerpt from file include/cyclone/pfgen.h
Excerpt from file include/cyclone/precision.h
Excerpt from file src/pfgen.cpp
6.2.2 An Anchored Spring Generator
Excerpt from file include/cyclone/pfgen.h
Figure 6.2 A rope bridge held up by springs.
Excerpt from file src/pfgen.cpp
6.2.3 An Elastic Bungee Generator
Excerpt from file include/cyclone/pfgen.h
Excerpt from file src/pfgen.cpp
6.2.4 A Buoyancy Force Generator
Figure 6.3 A buoyant block submerged and partially submerged.
Excerpt from file include/cyclone/pfgen.h
Excerpt from file src/pfgen.cpp
6.3 Stiff Springs
6.3.1 The Stiff Springs Problem
Figure 6.4 A non-stiff spring over time.
Figure 6.5 A stiff spring over time.
6.3.2 Faking Stiff Springs
Harmonic Motion
Damped Harmonic Motion
Implementation
Excerpt from file include/cyclone/pfgen.h
Excerpt from file include/cyclone/precision.h
Excerpt from file src/pfgen.cpp
Zero Rest Lengths
Velocity Mismatches
Figure 6.6 The rest length and the equilibrium position.
Interacting with Other Forces
6.4 Summary
6.5 Exercises
7 Hard Constraints
7.1 Simple Collision Resolution
7.1.1 The Closing Velocity
7.1.2 The Coefficient of Restitution
7.1.3 The Collision Direction and the Contact Normal
Figure 7.1 Contact normal is different from the vector between objects in contact.
7.1.4 Impulses
7.2 Collision Processing
Excerpt from file include/cyclone/pcontacts.h
Excerpt from file include/cyclone/pcontacts.h
Excerpt from file src/pcontacts.cpp
7.2.1 Collision Detection
Figure 7.2 Interpenetrating objects.
7.2.2 Resolving Interpenetration
Excerpt from file include/cyclone/pcontacts.h
Figure 7.3 Interpenetration and reality.
Excerpt from file include/cyclone/pcontacts.h
Excerpt from file src/pcontacts.cpp
7.2.3 Resting Contacts
Figure 7.4 Vibration on resting contact.
Velocity and the Contact Normal
Excerpt from file src/pcontacts.cpp
Other Approaches to Resting Contact
7.3 The Contact Resolver Algorithm
7.3.1 Resolution Order
Figure 7.5 Resolving one contact may resolve another automatically.
Excerpt from file include/cyclone/pcontacts.h
Excerpt from file src/pcontacts.cpp
7.3.2 Time-Division Engines
7.4 Collision-Like Things
7.4.1 Cables
Excerpt from file include/cyclone/plinks.h
Excerpt from file src/plinks.cpp
7.4.2 Rods
Excerpt from file include/cyclone/plinks.h
Excerpt from file src/plinks.cpp
7.5 Summary
7.6 Exercises
Exercise 7.1
Exercise 7.2
Exercise 7.3
Exercise 7.4
Exercise 7.5
Exercise 7.6
8 The Mass Aggregate Physics Engine
8.1 Overview of the Engine
Excerpt from file include/cyclone/pworld.h
Excerpt from file include/cyclone/pworld.h
Excerpt from file include/cyclone/pcontacts.h
Excerpt from file include/cyclone/pworld.h
Excerpt from file src/pworld.cpp
8.2 Using the Physics Engine
8.2.1 Rope Bridges and Cables
Figure 8.1 Screenshot of the bridge demo.
Figure 8.2 Screenshot of the platform demo.
8.2.2 Friction
8.2.3 Blob Games
8.3 Summary
8.4 Projects
Mini-Project 8.1
Mini-Project 8.2
Mini-Project 8.3
Project 8.1
Project 8.2
PART III Rigid-Body Physics
9 The Mathematics of Rotations
9.1 Rotating Objects in 2D
9.1.1 The Mathematics of Angles
Figure 9.1 Angle that an object is facing.
9.1.2 Angular Speed
Figure 9.2 The circle of orientation vectors.
9.1.3 The Origin and the Center of Mass
The Origin of an Object
Figure 9.3 The relative position of a car component.
Rotations
Figure 9.4 The car is rotated.
The Composition of Rotations and Translations
Rigid Bodies
Center of Mass
9.2 Orientation in 3D
9.2.1 Euler Angles
Figure 9.5 Aircraft rotation axes.
9.2.2 Axis-Angle
9.2.3 Rotation Matrices
9.2.4 Quaternions
9.3 Angular Velocity and Acceleration
9.3.1 Velocity of a Point
9.3.2 Angular Acceleration
9.4 Implementing the Mathematics
9.4.1 The Matrix Classes
Excerpt from file include/cyclone/core.h
Excerpt from file include/cyclone/core.h
9.4.2 Matrix Multiplication
Excerpt from file include/cyclone/core.h
Matrices as Transformations
Three-by-Four Matrices
Excerpt from file include/cyclone/core.h
Multiplying Two Matrices
Excerpt from file include/cyclone/core.h
Excerpt from file include/cyclone/core.h
9.4.3 Matrix Inverse and Transpose
Excerpt from file include/cyclone/core.h
Excerpt from file include/cyclone/core.h
Excerpt from file src/core.cpp
The Matrix Transpose
Excerpt from file include/cyclone/core.h
9.4.4 Converting a Quaternion to a Matrix
Excerpt from file include/cyclone/core.h
Excerpt from file include/cyclone/core.h
9.4.5 Transforming Vectors
Excerpt from file include/cyclone/core.h
Excerpt from file include/cyclone/core.h
9.4.6 Changing the Basis of a Matrix
Figure 9.6 A matrix basis is changed.
9.4.7 The Quaternion Class
Excerpt from file include/cyclone/core.h
9.4.8 Normalizing Quaternions
Excerpt from file include/cyclone/core.h
9.4.9 Combining Quaternions
Excerpt from file include/cyclone/core.h
9.4.10 Rotating
Excerpt from file include/cyclone/core.h
9.4.11 Updating by the Angular Velocity
Excerpt from file include/cyclone/core.h
9.5 Summary
9.6 Exercises
Exercise 9.1
Exercise 9.2
Exercise 9.3
Exercise 9.4
Exercise 9.5
Exercise 9.6
Exercise 9.7
10 Laws of Motion for Rigid Bodies
10.1 The Rigid Body
Excerpt from file include/cyclone/body.h
Excerpt from file include/cyclone/body.h
Excerpt from file src/body.cpp
10.2 Newton-2 for Rotation
10.2.1 Torque
Figure 10.1 A force generating no torque.
10.2.2 The Moment of Inertia
The Inverse Inertia Tensor
Excerpt from file include/cyclone/body.h
Excerpt from file scr/body.cpp
10.2.3 Inertia Tensor in World Coordinates
Figure 10.2 The moment of inertia is local to an object.
Excerpt from file src/body.cpp
10.3 D’Alembert for Rotation
Excerpt from file include/cyclone/body.h
Excerpt from file src/body.cpp
Excerpt from file include/cyclone/body.h
Excerpt from file src/body.cpp
Excerpt from file include/cyclone/body.h
Excerpt from file src/body.cpp
10.3.1 Force Generators
Excerpt from file include/cyclone/fgen.h
Excerpt from file src/fgen.cpp
Excerpt from file include/cyclone/fgen.h
Excerpt from file src/fgen.cpp
Torque Generators
10.4 The Rigid-Body Integration
Excerpt from file include/cyclone/body.h
Excerpt from file src/body.cpp
10.5 Summary
10.6 Exercises
Exercise 10.1
Exercise 10.2
Exercise 10.3
Exercise 10.4
Exercise 10.5
11 The Rigid-Body Physics Engine
11.1 Overview of the Engine
Excerpt from file include/cyclone/world.h
Excerpt from file include/cyclone/world.h
Excerpt from file src/world.cpp
Excerpt from file include/cyclone/world.h
Excerpt from file src/world.cpp
11.2 Using the Physics Engine
11.2.1 A Flight Simulator
The Aerodynamic Tensor
The Aerodynamic Surface
Excerpt from file include/cyclone/fgen.h
Excerpt from file src/fgen.cpp
Excerpt from file include/cyclone/fgen.h
Excerpt from file src/fgen.cpp
Excerpt from file include/cyclone/core.h
Excerpt from file src/core.cpp
Putting It Together
Figure 11.1 Screenshot of the flightsim demo.
11.2.2 A Sailing Simulator
Buoyancy
Figure 11.2 Different centers of buoyancy.
Excerpt from file include/cyclone/fgen.h
The Sail, Rudder, and Hydrofoils
Excerpt from file include/cyclone/fgen.h
Figure 11.3 Screenshot of the sailboat demo.
The Sailing Example
11.3 Summary
11.4 Projects
Mini-Project 11.1
Mini-Project 11.2
Mini-Project 11.3
Project 11.1
Project 11.2
PART IV Collision Detection
12 Collision Detection
12.1 The Collision Detection Pipeline
Figure 12.1 The collision detection pipeline.
12.2 Broad-Phase Collision Detection
Figure 12.2 A three-stage collision detection pipeline.
12.2.1 Requirements
12.3 Bounding Volume Hierarchies
Figure 12.3 A spherical bounding volume.
12.3.1 Hierarchies
Figure 12.4 A spherical bounding volume hierarchy.
Excerpt from file include/cyclone/collide_broad.h
Excerpt from file include/cyclone/collide_broad.h
Excerpt from file src/collide_broad.cpp
12.3.2 Building the Hierarchy
Figure 12.5 Bottom-up hierarchy building in action.
Figure 12.6 Top-down hierarchy building in action.
Figure 12.7 Insertion hierarchy building in action.
Excerpt from file include/cyclone/collide_broad.h
Excerpt from file include/cyclone/collide_broad.h
Figure 12.8 Working out a parent bounding sphere.
Excerpt from file include/cyclone/collide_broad.h
Figure 12.9 Removing an object from a hierarchy.
12.3.3 Subobject Hierarchies
Figure 12.10 A subobject bounding volume hierarchy.
12.4 Spatial Partitioning
12.4.1 Binary Space Partitioning
Figure 12.11 A BSP for level geometry.
12.4.2 Oct-Trees and Quad-Trees
Figure 12.12 Identifying an object’s location in a quad-tree.
12.4.3 Grids
Figure 12.13 A quad-tree forms a grid.
Figure 12.14 An object may occupy up to four same-sized grid cells.
12.4.4 Multiresolution Maps
12.5 Summary
12.6 Exercises
Exercise 12.1
Exercise 12.2
Exercise 12.3
Exercise 12.4
Exercise 12.5
Exercise 12.6
13 Generating Contacts
13.1 Collision Geometry
Figure 13.1 An object approximated by an assembly of primitives.
13.1.1 Primitive Assemblies
13.2 Contact Generation
Figure 13.2 Collision detection and contact generation.
13.2.1 Contact Types
Figure 13.3 3D cases of contact.
Figure 13.4 Ignoring a vertex–vertex contact.
13.2.2 Contact Data
Figure 13.5 The relationship among the collision point, collision normal, and penetration depth.
Excerpt from file include/cyclone/contacts.h
13.2.3 VertexFace Contacts
Figure 13.6 The vertex–face contact data.
13.2.4 EdgeEdge Contacts
13.2.5 EdgeFace Contacts
Figure 13.7 The edge–edge contact data.
Figure 13.8 The edge–face contact data.
13.2.6 FaceFace Contacts
Figure 13.9 The face–face contact data.
13.2.7 Testing Before Generating Contacts
13.3 Simple Collision Algorithms
Excerpt from file include/cyclone/collide_narrow.h
13.3.1 Colliding Two Spheres
Excerpt from file src/collide_narrow.cpp
13.3.2 Colliding a Sphere and a Plane
Excerpt from file src/collide_narrow.cpp
Excerpt from file src/collide_narrow.cpp
Figure 13.10 The difference in contact normal for a plane and a half-space.
13.3.3 Colliding a Box and a Plane
Figure 13.11 Contacts between a box and a plane.
Excerpt from file src/collide_narrow.cpp
Figure 13.12 The half-sizes of a box.
Excerpt from file src/collide_narrow.cpp
13.3.4 Colliding a Box and a Sphere
Figure 13.13 Contacts between a box and a sphere.
Excerpt from file src/collide_narrow.cpp
Excerpt from file src/collide_narrow.cpp
Excerpt from file src/collide_narrow.cpp
Excerpt from file src/collide_narrow.cpp
13.4 Separating Axis Tests
Figure 13.14 A separating axis test.
13.4.1 Generating Contact Data with SATs
Figure 13.15 A separating axis test showing maximum interpenetration.
13.4.2 Colliding Two Boxes
Contact Based on Face Axis
Contact Based on Edge–Edge
13.4.3 Colliding Convex Polyhedra
13.5 Coherence
Figure 13.16 Sequence of contacts over two frames.
13.6 Summary
13.7 Exercises
PART V Contact Physics
14 Collision Resolution
14.1 Impulse and Impulsive Torque
14.1.1 Impulsive Torque
Figure 14.1 The rotational and linear components of a collision.
14.1.2 Rotating Collisions
Figure 14.2 Three objects with different bounce characteristics.
14.1.3 Handling Rotating Collisions
14.2 Collision Impulses
14.2.1 Change to Contact Coordinates
Figure 14.3 The three sets of coordinates: world, local, and contact.
The Contact Coordinate Axes
The Basis Matrix
Excerpt from file include/cyclone/contacts.h
Excerpt from file src/contacts.cpp
Excerpt from file include/cyclone/core.h
Inverse Transformation
14.2.2 Velocity Change by Impulse
The Linear Component
The Angular Component
Putting It Together
Excerpt from file src/contacts.cpp
14.2.3 Impulse Change by Velocity
14.2.4 Calculating the Desired Velocity Change
Calculating the Closing Velocity
Calculating the Desired Velocity Change
14.2.5 Calculating the Impulse
Excerpt from file src/contacts.cpp
Excerpt from file src/contacts.cpp
14.2.6 Applying the Impulse
14.3 Resolving Interpenetration
14.3.1 Choosing a Resolution Method
Linear Projection
Figure 14.4 Linear projection causes realism problems.
Velocity-Based Resolution
Figure 14.5 Velocity-based resolution introduces apparent friction.
Nonlinear Projection
Relaxation
Figure 14.6 Nonlinear projection is more believable.
Figure 14.7 Nonlinear projection does not add friction.
14.3.2 Implementing Nonlinear Projection
Calculating the Components
Excerpt from file src/contacts.cpp
Applying the Movement
14.3.3 Avoiding Overrotation
Figure 14.8 Angular motion cannot resolve the interpenetration.
Figure 14.9 Angular resolution causes other problems.
14.4 The Collision Resolution Process
Figure 14.10 Data flow through the physics engine.
14.4.1 The Collision Resolution Pipeline
Excerpt from file include/cyclone/contacts.h
Excerpt from file src/contacts.cpp
Excerpt from file include/cyclone/contacts.h
14.4.2 Preparing Contact Data
Excerpt from file include/cyclone/contacts.h
Excerpt from file include/cyclone/contacts.h
Excerpt from file src/contacts.cpp
Excerpt from file include/cyclone/contacts.h
Excerpt from file src/contacts.cpp
Swapping Bodies
Excerpt from file include/cyclone/contacts.h
Excerpt from file src/contacts.cpp
Calculating Relative Velocity
Excerpt from file include/cyclone/contacts.h
Excerpt from file src/contacts.cpp
14.4.3 Resolving Penetration
Figure 14.11 Resolution order is significant.
Figure 14.12 Repeating the same pair of resolutions.
Iterative Algorithm Implemented
Figure 14.13 Resolving penetration can cause unexpected contact changes.
Updating Penetration Depths
Excerpt from file include/cyclone/contacts.h
Excerpt from file src/contacts.cpp
14.4.4 Resolving Velocity
Updating Velocities
14.4.5 Alternative Update Algorithms
Performance
14.5 Summary
14.6 Exercises
Exercise 14.1
Exercise 14.2
Exercise 14.3
Exercise 14.4
Exercise 14.5
15 Resting Contacts and Friction
15.1 Resting Forces
Figure 15.1 A reaction force at a resting contact.
15.1.1 Force Calculations
Figure 15.2 The long-distance dependence of reaction forces.
15.2 Microcollisions
Figure 15.3 Microcollisions replace reaction forces.
15.2.1 Removing Accelerated Velocity
Excerpt from file include/cyclone/body.h
Excerpt from file src/body.cpp
15.2.2 Lowering the Restitution
15.2.3 The New Velocity Calculation
15.3 Types of Friction
15.3.1 Static and Dynamic Friction
Dynamic Friction
Figure 15.4 A microscopic view of dynamic and static friction.
Rolling Friction
15.3.2 Isotropic and Anisotropic Friction
Figure 15.5 Anisotropic friction.
15.4 Implementing Friction
15.4.1 Friction as Impulses
15.4.2 Modifying the Velocity Resolution Algorithm
Velocity from Angular Motion
Excerpt from file include/cyclone/core.h
Excerpt from file src/contacts.cpp
Velocity from Linear Motion
15.4.3 Putting It All Together
Excerpt from file include/cyclone/contacts.h
Excerpt from file src/contacts.cpp
15.5 Friction and Sequential Contact Resolution
Figure 15.6 The problem with sequential contact resolution.
15.6 Summary
15.7 Exercises
Exercise 15.1
Exercise 15.2
Exercise 15.3
16 Stability and Optimization
16.1 Stability
16.1.1 Quaternion Drift
16.1.2 Interpenetration on Slopes
Figure 16.1 Objects drift down angled planes.
Excerpt from file src/contacts.cpp
16.1.3 Integration Stability
Newton-Euler 2
Runga-Kutta 4
16.1.4 The Benefit of Pessimistic Collision Detection
Figure 16.2 Collisions can be missed if they are not initially in contact.
16.1.5 Changing Mathematical Accuracy
Excerpt from include/cyclone/precision.h
16.2 Optimizations
16.2.1 Sleep
Adding Sleep State
Excerpt from file include/cyclone/body.h
Excerpt from file include/cyclone/body.h
Excerpt from file src/body.cpp
Putting Objects to Sleep
Waking Objects Up
Excerpt from file include/cyclone/contacts.h
Excerpt from file src/contacts.cpp
Figure 16.3 A chain of collisions is awakened.
16.2.2 Margins of Error for Penetration and Velocity
Figure 16.4 Iterative resolution makes microscopic changes.
16.2.3 Contact Grouping
Figure 16.5 Sets of independent contacts.
16.2.4 Code Optimizations
Caching Contact Data
Vectorizing Mathematics
Twizzling Rigid-Body Data
Grouping Data for Areas of the Level
16.3 Summary
17 Putting It All Together
17.1 Overview of the Engine
Figure 17.1 Data flow through the physics engine.
17.2 Using the Physics Engine
17.2.1 Ragdolls
Figure 17.2 Screenshot of the ragdoll demo.
Figure 17.3 Closeup of a ragdoll joint.
Excerpt from file include/cyclone/joints.h
Excerpt from file src/demos/ragdoll/ragdoll.cpp
More Complex Joints
17.2.2 Fracture Physics
Figure 17.4 Precreated fractures can look very strange for large objects.
Figure 17.5 Screenshot of the fracture demo.
Figure 17.6 The fractures of a concrete block.
Excerpt from file src/demos/fracture/fracture.cpp
Excerpt from file src/demos/fracture/fracture.cpp
17.2.3 Explosive Physics
Implosion
Excerpt from file include/cyclone/fgen.h
Concussion Wave
Figure 17.7 The force cross-section across a compression wave.
Excerpt from file include/cyclone/fgen.h
Convection Chimney
Excerpt from file include/cyclone/fgen.h
Figure 17.8 Screenshot of the explosion demo.
17.3 Limitations of the Engine
17.3.1 Stacks
17.3.2 Reaction Force Friction
17.3.3 Joint Assemblies
17.3.4 Stiff Springs
17.4 Summary
17.5 Projects
Mini-Project 17.1
Mini-Project 17.2
Mini-Project 17.3
Project 17.1
Project 17.2
PART VI Further Topics in Physics
18 Physics in Two Dimensions
18.1 2D or 3D?
18.2 Vector Mathematics
18.3 Particle and Mass Aggregate Physics
18.4 The Mathematics of Rotation
18.4.1 Representing Rotation
18.4.2 Matrices
18.5 Rigid-Body Dynamics
18.6 Collision Detection
Figure 18.1 The three types of contact in 2D.
18.6.1 VertexEdge Contacts
18.6.2 EdgeEdge Contacts
18.6.3 Contact Generation
18.7 Collision Response
18.8 Summary
18.9 Projects
Mini-Project 18.1
Mini-Project 18.2
Mini-Project 18.3
Project 18.1
Project 18.2
19 Other Programming Languages
19.1 ActionScript 3
19.2 C
19.3 Java
19.4 C#
19.5 Other Scripting Languages
20 Other Types of Physics
20.1 Simultaneous Contact Resolution
20.1.1 The Jacobian
20.1.2 The Linear-Complementarity Problem
How It Is Used
20.2 Reduced Coordinate Approaches
20.3 Summary
Back Matter
Appendix A Useful Inertia Tensors
A.1 Discrete Masses
A.2 Continuous Masses
A.3 Common Shapes
A.3.1 Cuboid
A.3.2 Sphere
A.3.3 Cylinder
A.3.4 Cone
A.3.5 Hemisphere
A.4 Moments of Inertia in 2D
A.4.1 Common 2D Shapes
Appendix B Useful Friction Coefficients
Appendix C Mathematics Summary
C.1 Vectors
C.2 Quaternions
C.3 Matrices
C.4 Integration
C.5 Physics
C.6 Other Formulas
Glossary
People also search for Game Physics Engine Development 1st Edition:
video game physics engine development
game physics engine development github
game physics engine development ebook
foundations of game engine development volume 4 physics