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