Basic Trigonometry

Download Report

Transcript Basic Trigonometry

CO1301: Games Concepts
Lecture 8
Basic Trigonometry
Dr Nick Mitchell (Room CM 226)
email: [email protected]
Hipparchos
the “father” of trigonometry
(image from Wikipedia)
Material originally prepared by Gareth Bellaby
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
o
(next to) α is x.
• The
longest side of the
triangle (the hypotenuse) is h.
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
Values of sine
degrees
sin (degrees)
degrees
sin (degrees)
0
0
180
0
15
0.26
195
-0.26
30
0.5
210
-0.5
45
0.71
225
-0.71
60
0.87
240
-0.87
75
0.97
255
-0.97
90
1
270
-1
105
0.97
285
-0.97
120
0.87
300
-0.87
135
0.71
315
-0.71
150
0.5
330
-0.5
165
0.26
345
-0.26
Trigonometry
You need to be aware of three trigonometric functions:
sine, cosine and tangent.
Function Symbol Definition
Name
sine
sin
sin(α) = o / h
o
cosine
cos
cos(α) = a / h
tangent
tan
tan(α) = o / a
= sin(α) / cos(α)
a
Radians
 You will often come across angles measured in radians (rad),
instead of degrees (deg)...
 A radian is the angle formed
by measuring one radius
length along the circumference
of a circle.
 There are 2p radians in a
complete circle ( = 360°)
= rad * 180° / p
 rad = deg * p / 180°
 deg
Trigonometry
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++
 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.
#include <cmath>
using namespace std;
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 tangent is 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 chord is 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.
circumference  2pr
circumference  2d
d  2r
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.
x  r cos(a )
y  r sin( a )
Identities
sin - a   sin a
cos- a   cos a
tan - a    tan a
Trigonometric Relationships
This relationship is for right-angled triangles only:
sin   cos   1
2
2
Where
sin    sin  sin  
2
Trigonometric Relationships
p

These relationships
sin   cos   
are for right-angled
2

triangles only:
p
cos   sin 
2
 sin 
tan   
 cos

 




Properties of triangles
This property holds for all
triangles and not just rightangled ones.
The angles in a triangle can
be related to the sides of a
triangle.
law of sines :
sin a sin  sin 


a
b
c
Properties of triangles
These hold for all triangles
law of cosines :
c  a  b  2ab cos 
2
2
2
law of tangents :
1

tan
a b
2a -

a  b tan  12 a   
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
sin
1
cos
tan
1
1
Domain
-1,1
-1,1
real
numbers
Range
 p 2 , p 2
0, p 
 p 2 , p 2