Professional Documents
Culture Documents
doubTe x,
doubTe y,
Vector2D{).x{0.0),y{0.0))
Vector2D{doubTe a, doubTe b).x{a),y{b))
]]sets x and y to zero
1nT1ne vo1d Zero{),
]]returns true 1f both x and y are zero
1nT1ne booT 1sZero{)const,
A Moth ond Fhysics Frimer 25
Mothemotics
p
P
N
P
cos( )
p
N H
1
cos
p
N H
1
1
1
cos
cos 0.62 1 0.78 0
cos 0.62
0.902 radians
N H
TP
TLFeBOOK
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
]]returns the Tenqth of the vector
1nT1ne doubTe Lenqth{)const,
]]returns the squared Tenqth of the vector {thereby avo1d1nq the sqrt)
1nT1ne doubTe LenqthSq{)const,
1nT1ne vo1d NormaT1ze{),
]]returns the dot product of th1s and v2
1nT1ne doubTe Dot{const Vector2D& v2)const,
]]returns pos1t1ve 1f v2 1s cTockw1se of th1s vector,
]]neqat1ve 1f countercTockw1se {assum1nq the Y ax1s 1s po1nt1nq down,
]]X ax1s to r1qht T1ke a W1ndow app)
1nT1ne 1nt S1qn{const Vector2D& v2)const,
]]returns the vector that 1s perpend1cuTar to th1s one
1nT1ne Vector2D erp{)const,
]]ad]usts x and y so that the Tenqth of the vector does not exceed max
1nT1ne vo1d 1runcate{doubTe max),
]]returns the d1stance between th1s vector and the one passed as a parameter
1nT1ne doubTe D1stance{const Vector2D &v2)const,
]]squared vers1on of above
1nT1ne doubTe D1stanceSq{const Vector2D &v2)const,
]]returns the vector that 1s the reverse of th1s vector
1nT1ne Vector2D 0etkeverse{)const,
]]we need some operators
const Vector2D& operator+{const Vector2D &rhs),
const Vector2D& operator-{const Vector2D &rhs),
const Vector2D& operator*{const doubTe& rhs),
const Vector2D& operator]{const doubTe& rhs,
booT operator{const Vector2D& rhs)const,
booT operator!{const Vector2D& rhs)const,
),
LotuI 5pute und worId 5pute
It`s important you understand the diIIerence between local space and world
space. The world space representation is normally what you see rendered
to your screen. Every object is deIined by a position and orientation rela-
tive to the origin of the world coordinate system (see Figure 1.23). A
soldier is using world space when he describes the position oI a tank with a
grid reIerence, Ior instance.
2 Chopter 1
Mothemotics
TLFeBOOK
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
Local space, however, describes the position and orientation oI objects rel-
ative to a speciIic entity`s local coordinate system. In two dimensions, an
entity`s local coordinate system can be deIined by a Iacing vector and a
side vector (representing the local x- and y-axis, respectively), with the ori-
gin positioned at the center oI the entity (Ior three dimensions an additional
up vector is required). Figure 1.24 shows the axis describing the local coor-
dinate system oI the dart-shaped object.
Using this local coordinate system we can transIorm the world so that all
the objects in it describe their position and orientation relative to it (see
Figure 1.25). This is just like viewing the world through the eyes oI the
entity. Soldiers are using local space when they say stuII like 'Target 50m
A Moth ond Fhysics Frimer 27
Mothemotics
Figure 1.23. 5ome obstocles ond o vehicle shown in world spoce
Figure 1.24. The vehicles locol coordinote system
TLFeBOOK
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
away at 10 o`clock. They are describing the location oI the target relative
to their own position and Iacing direction.
This ability to transIorm objects between local and world space can help
simpliIy many calculations as you`ll see later in the book. (Although you
need to understand the concept, how it`s actually done is beyond the scope
oI this book check out the matrix transIormations chapter oI a computer
graphics book.)
Fhysits
My dictionary deIines the science oI physics as:
The science of matter and energy and of the interactions between the
two.
As a game AI programmer you`ll Irequently be working with the laws oI
physics, and especially ones concerned with motion, which is what will be
covered in this section. You`ll oIten Iind yourselI creating algorithms Ior
predicting where an object or agent will be at some time in the Iuture, Ior
calculating what the best angle is to Iire a weapon, or what heading and
Iorce an agent should kick a ball with to pass it to a receiver. This isn`t AI
per se oI course, but it is all part oI creating the illusion oI intelligence and
is normally part oI the AI programmer`s workload, so you need to know
this stuII.
Let`s take a look at some oI the Iundamental concepts used in physics.
ime
Time is a scalar quantity (completely speciIied by its magnitude and with
no direction) measured in seconds, abbreviated to s. Until recently, a sec-
ond was deIined in terms oI the rotational spin oI the Earth, but as the
28 Chopter 1
Fhysics
Figure 1.25. Ob[ects tronsformed into the vehicles locol spoce
TLFeBOOK
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
Earth`s rotation is slowing down slightly every year, by the late sixties this
became problematic Ior scientists who needed increasingly precise mea-
surements Ior their experiments. Today, thereIore, a second is measured as:
The duration of 9,192,631,770 periods of the radiation corresponding to
the transition between the two hyperfine levels of the ground state of the
cesium 133 atom.
This deIinition provides today`s scientists with the constant time interval
they require Ior their precise experiments.
Time in computer games is measured in one oI two ways: either in sec-
onds (just as in the real world) or by using the time interval between
updates as a kind oI virtual second. The latter measurement can simpliIy
many equations but you have to be careIul because, unless the update rate
is locked, the physics will diIIer between machines oI varying speeds!
ThereIore, iI you choose to use a virtual second, make sure your game`s
physics update Irequency is locked to a reasonable rate usually the rate
oI the slowest machine you`re developing Ior.
NOIE Mot oll thot long ogo the mo[ority of computer gomes used o fixed
frome rote ond every component ~ rendering, physics, A, etc. ~ wos updoted
ot the some frequency. Mony of todoys sophisticoted gomes, however, specify o
unique rote for eoch component. For exomple, the physics might be updoted 30
times o second, the A 10 times o second, ond the rendering code ollowed to go
os fost os the mochine it runs on. Therefore, whenever refer to on updote
rote in the text, if dont specify o context, it will be in the context of the sub[ect
m tolking obout.
0istunte
The standard unit oI distance a scalar quantity is the meter, abbrevi-
ated to m.
Nuss
Mass is a scalar quantity measured in kilograms, abbreviated to kg. Mass is
the measure oI an amount oI something. This can be a conIusing quality to
measure since the mass oI an object is calculated by weighing it, yet mass
is not a unit oI weight; it is a unit oI matter. The weight oI an object is a
measurement oI how much Iorce gravity is exerting on that object. Because
gravity varies Irom place to place (even here on Earth), this means the
weight oI an object can vary in diIIerent places, even though its mass never
changes. So how can mass be measured accurately?
Scientists have overcome this problem by creating a platinum-iridium
cylinder that everyone has agreed to call THE kilogram. This cylinder is
kept in Paris and all measurements are made relative to it. In other words,
you can go to France and have your own duplicate kilogram made, which
weighs exactly the same as THE kilogram. Now you know that wherever
A Moth ond Fhysics Frimer 2
Fhysics
TLFeBOOK
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
you are located, no matter what the gravity, your duplicate will have
exactly the same mass as THE kilogram back in France. Problem solved.
Fosition
You might think the position oI an object is an easy property to measure,
but where exactly do you measure its position Irom? For example, iI you
wanted to speciIy your body`s position in space, Irom where would you
take the measurement? Would it be Irom your Ieet, your stomach, or your
head? This presents a problem because there would be a big discrepancy
between the position oI your head and that oI your Ieet.
Physicists solve this problem by taking the location oI the center of
mass oI the object as its position. The center oI mass is the object`s balance
point. This would be the place where you could attach an imaginary piece
oI string to the object and it would balance in any position. Another good
way oI thinking about the center oI mass is that it is the average location oI
all the mass in a body.
eIotity
Velocity is a vector quantity (a quantity that has magnitude and direction)
that expresses the rate of change of distance over time. The standard unit oI
measurement oI velocity is meters per second, abbreviated to m/s. This can
be expressed mathematically as:
(1.75)
The Greek capital letter , read as delta, is used in mathematics to denote a
change in quantity. ThereIore, t in equation (1.75) represents a change in
time (a time interval) and x a change in distance (a displacement). is
calculated as the after quantity minus the before quantity. ThereIore iI an
object`s position at t 0 is 2 (beIore) and at t 1 is 5 (aIter), x is 5 2
3. This can also result in negative values. For instance iI an object`s posi-
tion at t 0 is 7 (beIore) and at t 1 is 3 (aIter), x is 3 7 4.
NOIE Deltos little brother, the lowercose letter delto, written os , is used to
represent very smoll chonges. You often see used in colculus. 8ecouse looks
similor to the letter d, to prevent confusion, mothemoticions tend to ovoid using
d to represent distonce or displocement in their equotions. nsteod, o less
ombiguous symbol such os x is used.
Using equation (1.75), it`s easy to calculate the average velocity oI an
object. Let`s say you want to work out the average velocity oI a ball as it
rolls between two points. First calculate the displacement between the two
points, then divide by the amount oI time it takes the ball to cover that
30 Chopter 1
Fhysics
x
v
t
TLFeBOOK
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
distance. For instance, iI the distance between the points is 5 m and the
time taken Ior the ball to travel between points is 2 s, then the velocity is:
(1.76)
It`s also easy to calculate how Iar an object has traveled iI we know its
average speed and the length oI time it has been traveling. Let`s say you
are driving your car at 35 mph and you`d like to know how Iar you`ve
moved in the last halI hour. Rearranging equation (1.75) gives:
(1.77)
Popping in the numbers gives:
(1.78)
Relating this to computer games, iI you have a vehicle at position P at time
t traveling at constant velocity V, we can calculate its position at the next
update step (at time t 1) by:
(1.79)
Where V t represents the displacement between update steps (Irom equa-
tion (1.77)).
Let`s make this crystal clear by showing you a code example. Following
is a listing Ior a Veh1cTe class that encapsulates the motion oI a vehicle
traveling with constant velocity.
cTass Veh1cTe
m_vos1t1on + m_vVeToc1ty,
)
Remember though, that iI you choose to eliminate t like this, the unit oI
time you will be using in any calculations is no longer the second but rather
the time interval between update steps.
ktteIerution
Acceleration is a vector quantity that expresses the rate of change of veloc-
ity over time and is measured in meters per second per second, written as
m/s
2
. Acceleration can be expressed mathematically as:
(1.80)
This equation is stating that acceleration is equivalent to the change in
velocity oI an object divided by the time interval during which the change
in velocity occurred.
For example, iI a car starts Irom rest and accelerates at 2 m/s
2
, then
every second, 2 m/s is added to its velocity. See Table 1.1.
Tublo T.T
Time(s} Velocity(m/s}
0 0
T 2
2 4
3
4 8
5 T0
Plotting this data to a velocity versus time graph, we get Figure 1.26. II we
examine a time interval, say the interval between t 1 and t 4, we can
see that the gradient oI the slope, given by , is equivalent to the accel-
eration during that interval.
32 Chopter 1
Fhysics
v
a
t
v
t
TLFeBOOK
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
You learned earlier how the equation y mx c deIines all straight lines in
the 2D Cartesian plane, where m is the gradient and c the intersection on
the y-axis. Because we can inIer Irom Figure 1.26 that constant accelera-
tion is always plotted as a straight line, we can relate that equation to the
acceleration oI the car. We know that the y-axis represents the velocity, v,
and that the x-axis represents time, t. We also know that the gradient m
relates to the acceleration. This gives the equation:
(1.81)
The constant u represents the velocity oI the car at time t 0, which can be
shown as the intersection oI the line on the y-axis. For instance, iI the car in
the example started oII with a velocity oI 3 m/s, then the graph would be
identical but oIIset upward by 3 as shown in Figure 1.27.
A Moth ond Fhysics Frimer 33
Fhysics
Figure 1.2. The velocity of the cor plotted ogoinst time
v at u
Figure 1.27. The some cor but troveling with on initiol velocity of 3 m/s ot time t = 0
TLFeBOOK
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
To test the equation let`s determine what the velocity oI a car starting with
a velocity oI 3 m/s and accelerating at 2 m/s
2
will be aIter 3 seconds.
Plugging in the numbers to equation (1.81) gives:
(1.82)
This is exactly what we can inIer Irom the graph. See Figure 1.28.
Another interesting thing about a velocity-time graph is that the area under
the graph between two times is equivalent to the distance traveled by the
object during that time. Let`s look at a simple example Iirst. Figure 1.29
shows the time versus velocity graph Ior a vehicle that spends 2 seconds at
4 m/s then stops.
34 Chopter 1
Fhysics
Figure 1.28
2 3 3
9 m/s
v
v
Figure 1.2
TLFeBOOK
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
The area under the graph (the region shaded in gray) is given by height
width, which is equivalent to velocity time, which as you can see gives
the result oI 8 meters. This is the same result Irom using the equation
x v t.
Figure 1.30 shows the example Irom earlier where a vehicle accelerates
Irom rest with a constant acceleration oI 2 m/s
2
. Let`s say we`d like to cal-
culate the distance traveled between the times t 1 and t 3.
We know that the distance traveled between t 1 and t 3 is the area
beneath the graph between those times. As is clearly shown in the Iigure,
this is the sum oI the areas oI rectangle A and triangle B.
The area oI A is given by the time displacement, t, multiplied by the
starting velocity, u, written as:
(1.83)
The area oI B, a triangle, is halI the area oI the rectangle described by the
sides oI the triangle. The sides oI the triangle are given by the time dis-
placement, t, and the diIIerence between the Iinish velocity and the start
velocity, v u. This can be written as:
(1.84)
ThereIore, the total area under the graph between times t 1 and t 3,
which is equivalent to the distance traveled, is the sum oI these two terms,
given as:
(1.85)
A Moth ond Fhysics Frimer 35
Fhysics
Figure 1.30
( ) Area A t u
1
( ) ( )
2
Area B v u t
1
( )
2
x u t v u t
TLFeBOOK
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
We know that v u is equivalent to the change in velocity v, and that,
Irom equation (1.80)
(1.86)
This value Ior v u can be substituted into equation (1.85) to give us an
equation that relates distance to time and acceleration.
(1.87)
Putting the numbers into this equation gives:
(1.88)
We can do another useIul thing with this equation: We can Iactor time out
to give us an equation relating velocity to distance traveled. Here`s how.
From equation (1.81) we know that:
(1.89)
We can substitute this value Ior t in equation (1.87) to give:
(1.90)
This nasty-looking equation can be simpliIied greatly. (II you are new to
algebra I suggest trying to simpliIy it yourselI. II you Iind yourselI getting
stuck, the Iull simpliIication is given at the end oI the chapter.)
(1.91)
This equation is extremely useIul. For example, we can use it to determine
how Iast a ball dropped Irom the top oI the Empire State Building will be
traveling when it hits the ground (assuming no air resistance due to wind or
velocity). The acceleration oI a Ialling object is due to the Iorce exerted
upon it by the Earth`s gravitational Iield and is equivalent to approximately
9.8 m/s
2
. The starting velocity oI the ball is 0 and the height oI the Empire
State Building is 381 m. Putting these values into the equation gives:
(1.92)
3 Chopter 1
Fhysics
v u v a t
2
1
2
x u t a t
2
1
2 2 2 2
2
4 4
8 m
x
x
x
v u
t
a
2
1
2
v u v u
x u a
a a
2 2
2 v u a x
2 2
0 2 9.8 381
7467.6
86.41m/s
v
v
v
TLFeBOOK
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
The preceding equations hold true Ior all objects moving with a constant
acceleration but oI course it`s also possible Ior objects to travel with vary-
ing acceleration. For example, an aircraIt when taking oII Irom a runway
has a high acceleration at the beginning oI its run (which you can Ieel as a
Iorce pushing you into the back oI your seat), which decreases as the limits
oI its engine`s power are reached. This type oI acceleration would look
something like that shown in Figure 1.31.
As another example, Figure 1.32 shows the velocity versus time graph Ior a
car that accelerates to 30 km/h, brakes sharply to avoid a stray dog, and
then accelerates back to 30 km/h.
A Moth ond Fhysics Frimer 37
Fhysics
Figure 1.31. An oircroft occeleroting up the runwoy
Figure 1.32
TLFeBOOK
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
When you have varying accelerations like these it`s only possible to deter-
mine the acceleration at a speciIic time. This is achieved by calculating the
gradient oI the tangent to the curve at that point.
forte
According to Isaac Newton:
An impressed force is an action exerted upon a body in order to change
its state, either of rest, or of uniform motion in a right line.
ThereIore, Iorce is that quality that can alter an object`s speed or line oI
motion. Force has nothing to do with motion itselI though. For example, a
Ilying arrow does not need a constant Iorce applied to it to keep it Ilying
(as was thought by Aristotle). Force is only present where changes in
motion occur, such as when the arrow is stopped by an object or when a
drag racer accelerates along the strip. The unit oI Iorce is the Newton,
abbreviated to N, and is deIined as:
The force required to make a one-kilogram mass move from rest to a
speed of one meter per second in one second.
There are two diIIerent types oI Iorce: contact and non-contact Iorces. Con-
tact Iorces occur between objects that are touching each other, such as the
Irictional Iorce present between the snow and skis oI a downhill skier.
Non-contact Iorces are those that occur between objects not touching each
other, such as the gravitational Iorce oI the Earth upon your body or the
magnetic Iorce oI the Earth upon a compass needle.
It`s important to note that many Iorces can act upon a single object
simultaneously. II the sum oI those Iorces equals zero, the object remains
in motion with the same velocity in the same direction. In other words, iI
an object is stationary or moving in a straight line with a constant velocity,
the sum oI all the Iorces acting upon it must be zero. II, however, the sum
oI the Iorces is not equal to zero, the object will accelerate in the direction
oI the resultant Iorce. This can be conIusing, especially in relation to static
objects. For instance, how can there be any Iorces acting upon an apple sit-
ting on a table? AIter all, it`s not moving! The answer is that there are two
Iorces acting upon the apple: the Iorce oI gravity trying to pull the apple
toward the Earth and an equal and opposite Iorce Irom the table pushing it
away Irom the Earth. This is why the apple remains motionless. Figure
1.33 shows examples oI varying amounts oI Iorces acting upon everyday
objects.
38 Chopter 1
Fhysics
TLFeBOOK
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
We know that iI the sum oI the Iorces acting upon an object is non-zero, an
acceleration will be imparted in the direction oI the Iorce; but how much
acceleration? The answer is that the amount oI acceleration, a, is propor-
tional to the object`s mass, m, and to the total Iorce applied, F. This
relationship is given by the equation:
(1.93)
More commonly though, you will see this equation written as:
(1.94)
Using this equation, iI we know how Iast an object is accelerating and its
mass, we can calculate the total Iorce acting upon it. For instance, iI the
boat in Figure 1.33 has a mass oI 2000 kg, and it is accelerating at a rate oI
1.5 m/s
2
, the total Iorce acting upon it is:
Also using the equations Ior Iorce, acceleration, velocity, and position, iI
we know how much Iorce is acting on an object, we can determine the
acceleration due to that Iorce and update the object`s position and velocity
accordingly. For example, let`s say you have a spaceship class with attrib-
utes Ior its mass, current velocity, and current position. Something like this:
A Moth ond Fhysics Frimer 3
Fhysics
Figure 1.33. From left to right ond top to bottom. o folling
opple, on opple resting on o toble, o boll rolling down on
inclined toble, ond o yocht soiling on woter
F
a
m
F ma
2000 1.5 3000 N
total
F
TLFeBOOK
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
cTass SpaceSh1p
pr1vate.
vector m_os1t1on,
vector m_VeToc1ty,
fToat m_fMass,
pubT1c.
.
),
Given the time interval since the last update and a Iorce to be applied, we
can create a method that updates the ship`s position and velocity. Here`s
how:
vo1d SpaceSh1p..Update{fToat 11meLTapsedS1nceLastUpdate, fToat lorceOnSh1p)
TLFeBOOK
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
This page intentionally left blank.
TLFeBOOK
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m
N
u
k
o
p
e
n
!
P
D
F
-XChan
g
e
w
w
w
.
e
a
s
y
compu
ti n
g
.
c
o
m