300 likes | 311 Views
Learn the fundamentals of trigonometry and how it applies to games. Understand concepts like sine, cosine, tangent, circles, and useful trigonometric laws.
E N D
CO1301: Games Concepts Lecture 8 Basic Trigonometry Dr Nick Mitchell (Room CM 226) email: npmitchell@uclan.ac.uk Material originally prepared by Gareth Bellaby Hipparchos the “father” of trigonometry (image from Wikipedia)
References • Rabin, Introduction to Game Development, Chapter 4.1 • Van Verth & Bishop, Essential Mathematics for Games, Appendix A and Chapter 1 • Eric Lengyel, Mathematics for 3D Game Programming & Computer Graphics • Frank Luna, Introduction to 3D Game Programming with Direct 9.0c: A Shader Approach, Chapter 1
Lecture Structure • Introduction • Trigonometric functions: • sine, cosine, tangent • Circles • Useful trigonometric laws
Why study Trigonometry? • Why is trigonometry relevant to your course? • Games involve lots of geometrical calculations: • Rotation of models; • Line of sight calculations; • Collision detection; • Lighting. • For example, the intensity of directed light changes according to the angle at which it strikes a surface. • You require a working knowledge of geometry.
Mathematical Functions • A mathematical function defines a relationship between one variable and another. • A function takes an input (argument) and relates it to an output (value) according to some rule or formula. • For instance, the sine function maps an angle (as input) onto a number (as output). • The set of possible input values is the functions domain. • The set of possible output values is the functions range. • For any given input, there is exactly one output: • The 32 cannot be 9 today and 8 tomorrow! • Mathematical Laws • I'll introduce some laws. I'm not going to prove or derive them. I will ask you to accept them as being true.
Greek letters • It is a convention to use Greek letters to represent angles and some other mathematical terms: α alpha βbeta γgamma θtheta λlambda πpi Δ(capital) Delta
Trigonometry • Trigonometry arises out of an observation about right angled triangles... • Take a right angled triangle and consider one of its angles (but NOT the right angle itself). • We'll call this angle α. • The opposite side to α is y. • The shorter side adjacent to (next to) α is x. • The longest side of the triangle (the hypotenuse) is h. o a
Trigonometry • There is a relationship between the angle and the lengths of the sides. This relationship is expressed through one of the trigonometric functions, e.g. sine (abbreviated to sin). sin(α) = o / h o a
Trigonometry You need to be aware of three trigonometric functions: sine, cosine and tangent. o a
Radians • You will often come across angles measured in radians (rad), instead of degrees (deg)... • A radian is the angle formedby measuring one radiuslength along the circumferenceof a circle. • There are 2p radians in acomplete circle ( = 360°) • deg = rad * 180° / p • rad = deg * p / 180°
Trigonometric Functions • Sine, cosine and tangent are mathematical functions. • There are other trigonometric functions, but they are rarely used in computer programming. • Angles can be greater than 2p or less than -2p. Simply continue the rotation around the circle. • You can draw a graph of the functions. The x-axis is the angle and the y-axis is (for example) sin(x). If you graph out the sine function then you create a sine wave.
Sine Wave and Cosine Wave Image taken from Wikipedia
Tangent Wave Image taken from Wikipedia
C++ #include <cmath> using namespace std; • C++ has functions for sine, cosine and tangent within its libraries. • Use the maths or complex libraries: • The standard C++ functions use radians, not degrees. float rad; float result; result = sin(rad); result = cos(rad); result = tan(rad);
PI • Written using the Greek letter p. • Otherwise use the English transliteration "Pi". • p is a mathematical constant. • 3.14159 (approximately). • p is the ratio of the circumference of a circle to its diameter. • This value holds true for any circle, no matter what its size. It is therefore a constant.
Circles • The constant p is derived from circles so useful to look at these. • Circles are a basic shape. • Circumference is the length around the circle. • Diameter is the width of a circle at its largest extent, i.e. the diameter must go through the centre of the circle. • Radius is a line from the centre of the circle to the edge (in any direction).
Circles • A tangentis a line drawn perpendicular to (at right angles to) the end point of a radius. • You may know these from drawing splines (curves) in 3ds Max. • You'll see them when you generate splines in graphics and AI. • A chordis line connecting two points on a circle.
Circles • A segment is that part of a circle made by chord, i.e. a line connecting two points on a circle. • A sector is part of a circle in which the two edges are radii. sector
Circle • Using Cartesian coordinates. • Centre of the circle is at (a, b). • The length of the radius is r. • The length of the diameter is d.
Points on a Circle • Imagine a line from the centre of the circle to (x,y) • a is the angle between this line and the x-axis.
Trigonometric Relationships • This relationship is for right-angled triangles only: Where
Trigonometric Relationships • These relationships are for right-angled triangles only:
Properties of triangles • This property holds for all triangles and not just right-angled ones. • The angles in a triangle can be related to the sides of a triangle.
Properties of triangles • These hold for all triangles
Inverses • Another bit of terminology and convention you need to be familiar with. • An inverse function is a function which is in the opposite direction. An inverse trigonometric function reverses the original trigonometric function, so that • If x = sin(y) then y = arcsin(x) • The inverse trigonometric functions are all prefixed with the term "arc": arcsine, arccosine and arctangent. • In C++: asin() acos() atan()
Inverses • The notation sin-1, cos-1 and tan-1 is common. • We know that trigonometric functions can produce the same result with different input values, e.g. sin(75o) and sin(105o) are both 0.97. • Therefore an inverse trigonometric function typically has a restricted range so only one value can be generated.
Inverses Function Domain Range