Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSCE 552 Spring 2011 Math By Jijun Tang. Languages C/C++ Java Script: Flash, Python, LISP, etc. C# XNA for PC and Xbox.

Similar presentations


Presentation on theme: "CSCE 552 Spring 2011 Math By Jijun Tang. Languages C/C++ Java Script: Flash, Python, LISP, etc. C# XNA for PC and Xbox."— Presentation transcript:

1 CSCE 552 Spring 2011 Math By Jijun Tang

2 Languages C/C++ Java Script: Flash, Python, LISP, etc. C# XNA for PC and Xbox

3 Data Structures: Array Elements are adjacent in memory (great cache consistency)  Requires continuous memory space They never grow or get reallocated  Use dynamic incremental array concept  GCC has a remalloc function In C++ there's no check for going out of bounds  Use vector if possible  Keep in mind of checking boundaries Inserting and deleting elements in the middle is expensive

4 Lists

5 Hash Table

6 Stack/Queue/Priority Queue

7 Bits

8 Inheritance Models “is-a” relationship Extends behavior of existing classes by making minor changes Do not overuse, if possible, use component systerm UML diagram representing inheritance

9 Component Systems Component system organization

10 Object Factory Creates objects by name Pluggable factory allows for new object types to be registered at runtime Extremely useful in game development for passing messages, creating new objects, loading games, or instantiating new content after game ships

11 Singleton Implements a single instance of a class with global point of creation and access For example, GUI Don't overuse it!!!

12 Adapter Convert the interface of a class into another interface clients expect. Adapter lets classes work together that couldn't otherwise because of incompatible interfaces Real interface

13 Observer Allows objects to be notified of specific events with minimal coupling to the source of the event Two parts  subject and observer

14 Ad-hoc

15 Modular

16 DAG

17 Layered

18 Overview: Initialization/Shutdown The initialization step prepares everything that is necessary to start a part of the game The shutdown step undoes everything the initialization step did, but in reverse order

19 Initialization/Shutdown Resource Acquisition Is Initialization  A useful rule to minimalize mismatch errors in the initialization and shutdown steps  Means that creating an object acquires and initializes all the necessary resources, and destroying it destroys and shuts down all those resources Optimizations  Fast shutdown  Warm reboot

20 Overview: Main Game Loop Games are driven by a game loop that performs a series of tasks every frame Some games have separate loops for the front and the game itself Other games have a unified main loop Must finish a loop within 0.017 second

21 Tasks of Main Game Loop Handling time Gathering player input Networking Simulation Collision detection and response Object updates Rendering Other miscellaneous tasks

22

23 Sample Game Loop

24 Main Game Loop Structure  Hard-coded loops  Multiple game loops: for each major game state  Consider steps as tasks to be iterated through Coupling  Can decouple the rendering step from simulation and update steps  Results in higher frame rate, smoother animation, and greater responsiveness  Implementation is tricky and can be error-prone

25 Execution Order of Main Loop Most of the time it doesn't matter In some situations, execution order is important Can help keep player interaction seamless Can maximize parallelism Exact ordering depends on hardware

26 Example (Open Source Rail Simulator) Simulator = new Simulator(settings, args[0]); if (args.Length == 1) Simulator.SetActivity(args[0]); else Simulator.SetExplore(args[0], args[1], args[2], args[3], args[4]); Simulator.Start(); Viewer = new Viewer3D(Simulator); Viewer.Initialize(); Viewer.Run(); //Frame Updates Here Simulator.Stop(); //Check if exit condition met

27 Math

28 Applied Trigonometry Trigonometric functions  Defined using right triangle  x y h

29 Applied Trigonometry Angles measured in radians Full circle contains 2  radians

30 Applied Trigonometry Sine and cosine used to decompose a point into horizontal and vertical components  r cos  r sin  r x y

31 Trigonometry

32 Trigonometric identities

33 Inverse trigonometric functions Return angle for which sin, cos, or tan function produces a particular value If sin  = z, then  = sin -1 z If cos  = z, then  = cos -1 z If tan  = z, then  = tan -1 z

34 arcs

35 Applied Trigonometry Law of sines Law of cosines Reduces to Pythagorean theorem when  = 90 degrees   b a c

36 Vectors and Scalars Scalars represent quantities that can be described fully using one value  Mass  Time  Distance Vectors describe a magnitude and direction together using multiple values

37 Examples of vectors Difference between two points  Magnitude is the distance between the points  Direction points from one point to the other Velocity of a projectile  Magnitude is the speed of the projectile  Direction is the direction in which it ’ s traveling A force is applied along a direction

38 Visualize Vectors The length represents the magnitude The arrowhead indicates the direction Multiplying a vector by a scalar changes the arrow ’ s length V 2V2V –V–V

39 Vectors Add and Subtraction Two vectors V and W are added by placing the beginning of W at the end of V Subtraction reverses the second vector V W V + W V W V V – W –W–W

40 High-Dimension Vectors An n-dimensional vector V is represented by n components In three dimensions, the components are named x, y, and z Individual components are expressed using the name as a subscript:

41 Add/Subtract Componentwise

42 Vector Magnitude The magnitude of an n-dimensional vector V is given by In three dimensions, this is

43 Vector Normalization A vector having a magnitude of 1 is called a unit vector Any vector V can be resized to unit length by dividing it by its magnitude: This process is called normalization

44 Matrices A matrix is a rectangular array of numbers arranged as rows and columns A matrix having n rows and m columns is an n  m matrix  At the right, M is a 2  3 matrix  If n = m, the matrix is a square matrix

45 Matrix Representation The entry of a matrix M in the i-th row and j-th column is denoted M ij For example,

46 Matrix Transpose The transpose of a matrix M is denoted M T and has its rows and columns exchanged:

47 Vectors and Matrices An n-dimensional vector V can be thought of as an n  1 column matrix: Or a 1  n row matrix:

48 Vectors and Matrices Product of two matrices A and B  Number of columns of A must equal number of rows of B  Entries of the product are given by  If A is a n  m matrix, and B is an m  p matrix, then AB is an n  p matrix

49 Vectors and Matrices Example matrix product

50 Vectors and Matrices Matrices are used to transform vectors from one coordinate system to another In three dimensions, the product of a matrix and a column vector looks like:

51 Identity Matrix I n For any n  n matrix M, the product with the identity matrix is M itself  I n M = M  MI n = M

52 Invertible An n  n matrix M is invertible if there exists another matrix G such that The inverse of M is denoted M -1

53 Properties of Inverse Not every matrix has an inverse A noninvertible matrix is called singular Whether a matrix is invertible can be determined by calculating a scalar quantity called the determinant

54 Determinant The determinant of a square matrix M is denoted det M or |M| A matrix is invertible if its determinant is not zero For a 2  2 matrix,

55 Determinant The determinant of a 3  3 matrix is

56 Inverse Explicit formulas exist for matrix inverses  These are good for small matrices, but other methods are generally used for larger matrices  In computer graphics, we are usually dealing with 2  2, 3  3, and a special form of 4  4 matrices

57 Inverse of 2x2 and 3x3 The inverse of a 2  2 matrix M is The inverse of a 3  3 matrix M is

58 4x4 A special type of 4  4 matrix used in computer graphics looks like  R is a 3  3 rotation matrix, and T is a translation vector

59 Inverse of 4x4

60 General Matrix Inverse (AB) -1 = B -1 A -1 A general nxn matrix can be inverted using methods such as  Gauss-Jordan elimination  Gaussian elimination  LU decomposition

61 Gauss-Jordan Elimination Gaussian Elimination

62 The Dot Product The dot product is a product between two vectors that produces a scalar The dot product between two n-dimensional vectors V and W is given by In three dimensions,

63 Dot Product Usage The dot product can be used to project one vector onto another  V W

64 Dot Product Properties The dot product satisfies the formula   is the angle between the two vectors  Dot product is always 0 between perpendicular vectors  If V and W are unit vectors, the dot product is 1 for parallel vectors pointing in the same direction, -1 for opposite

65 Self Dot Product The dot product of a vector with itself produces the squared magnitude Often, the notation V 2 is used as shorthand for V  V

66 The Cross Product The cross product is a product between two vectors the produces a vector The cross product only applies in three dimensions  The cross product is perpendicular to both vectors being multiplied together  The cross product between two parallel vectors is the zero vector (0, 0, 0)

67 Illustration The cross product satisfies the trigonometric relationship This is the area of the parallelogram formed by V and W  V W ||V|| sin 

68 Area and Cross Product The area A of a triangle with vertices P 1, P 2, and P 3 is thus given by

69 Rules Cross products obey the right hand rule  If first vector points along right thumb, and second vector points along right fingers,  Then cross product points out of right palm Reversing order of vectors negates the cross product:  Cross product is anticommutative

70 Rules in Figure

71 Formular The cross product between V and W is A helpful tool for remembering this formula is the pseudodeterminant (x, y, z) are unit vectors

72 Alternative The cross product can also be expressed as the matrix-vector product The perpendicularity property means


Download ppt "CSCE 552 Spring 2011 Math By Jijun Tang. Languages C/C++ Java Script: Flash, Python, LISP, etc. C# XNA for PC and Xbox."

Similar presentations


Ads by Google