Each instance of this class represents a direction on a two-dimensional plane. A direction
consists of two components: dx and dy, each of which is a number between -1.0 and +1.0
(inclusive). dx indicates the degree to which the x coordinate changes when moving in that
direction; dy is the same for the y coordinate. The x coordinate increases rightwards and
y downwards.
For example, moving straight rightwards can be thought of a moving in a Direction with a
dx of +1.0 and a dy of 0.0; by comparison, the upward direction would have a dx of 0.0
and a dy of -1.0. . Diagonals have non-zero values for both dx and dy.
The dx and dy of any Direction always sum up to (roughly) 1.0, with the exception of the
special value NoDirection which represents the lack of a direction
and as zero for both components. (In this, a Direction is different than a Velocity,
which is a combination of a direction of movement and a speed.)
You don’t instantiate Direction directly; instead, you create Directions with the methods
on this class’s companion object. Among other things, you can:
- construct a direction from two differences between
coordinates, as in
Direction.fromDeltas(-100, 50); or - create a direction that corresponds to a given angle, as
in
Direction.fromDegrees(60)andDirection.fromRadians(-scala.math.Pi / 4).
Some of the methods of a Direction object also create and return new Directions,
as does the directionOf method on Pos objects. Moreover, this
class’s companion object has a few predefined Direction constants:
Up Down, Left,
Right, and NoDirection.
Direction objects are immutable.
This class has an alias in the top-level package o1, so it’s accessible to students
simply via import o1.*.
- Value parameters:
- dx
the amount of change in the x coordinate when moving in this direction, relative to
dy- dy
the amount of change in the y coordinate when moving in this direction, relative to
dx
- Companion:
- object
Value members
Concrete methods
Returns a direction that is, clockwise, removed from this direction by a number of degrees specified
by the given direction. Calling dir1 + dir2 is equivalent to calling dir1.counterclockwise(dir2.toDegrees)
Returns a direction that is, clockwise, removed from this direction by a number of degrees specified
by the given direction. Calling dir1 + dir2 is equivalent to calling dir1.counterclockwise(dir2.toDegrees)
Returns a direction that is removed from this direction by the given number of degrees clockwise.
For instance, clockwise(90) produces a direction at a right angle to the original.
Returns a direction that is removed from this direction by the given number of degrees clockwise.
For instance, clockwise(90) produces a direction at a right angle to the original.
Returns a direction that is removed from this direction by the given number of degrees counterclockwise.
For instance, counterclockwise(90) produces a direction at a right angle to the original.
Returns a direction that is removed from this direction by the given number of degrees counterclockwise.
For instance, counterclockwise(90) produces a direction at a right angle to the original.
Returns true if this direction is a clearly downward one (with a dy over zero) or at least
non-upward (with a dy of exactly zero). Only returns false if dy is less than zero.
Returns true if this direction is a clearly downward one (with a dy over zero) or at least
non-upward (with a dy of exactly zero). Only returns false if dy is less than zero.
Returns true if this direction is a clearly leftward one (with a dx under zero) or at least
non-rightward (with a dx of exactly zero). Only returns false if dx is over zero.
Returns true if this direction is a clearly leftward one (with a dx under zero) or at least
non-rightward (with a dx of exactly zero). Only returns false if dx is over zero.
Returns true if this direction is a clearly rightward one (with a dx over zero) or at least
non-leftward (with a dx of exactly zero). Only returns false if dx is less than zero.
Returns true if this direction is a clearly rightward one (with a dx over zero) or at least
non-leftward (with a dx of exactly zero). Only returns false if dx is less than zero.
Returns true if this direction is a clearly upward one (with a dy under zero) or at least
non-downward (with a dy of exactly zero). Only returns false if dy is over zero.
Returns true if this direction is a clearly upward one (with a dy under zero) or at least
non-downward (with a dy of exactly zero). Only returns false if dy is over zero.
Returns a direction that has the opposite dx and the opposite dy as this one.
Returns a direction that has the opposite dx and the opposite dy as this one.
Returns a String description of the Direction; e.g., "dx=1.00,dy=0.00".
Uses two decimals for each coordinate.
Returns a String description of the Direction; e.g., "dx=1.00,dy=0.00".
Uses two decimals for each coordinate.
Returns a direction that has the opposite dx as this one and the same dy.
Returns a direction that has the opposite dx as this one and the same dy.
Returns a direction that has the opposite dy as this one and the same dx.
Returns a direction that has the opposite dy as this one and the same dx.
Returns this direction as degrees. (Zero degrees points rightwards, positive angles are counterclockwise from there, negative ones clockwise.)
Returns this direction as degrees. (Zero degrees points rightwards, positive angles are counterclockwise from there, negative ones clockwise.)
