Direction

sealed case class Direction

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) and Direction.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
trait Product
trait Equals
class Object
trait Matchable
class Any

Value members

Concrete methods

def +(another: Direction): Direction

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)

def clockwise(degrees: Double): Direction

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.

Determines whether this direction and the given one point towards the same quarter of the unit circle. That is, determines whether the two directions’ dx have same sign as the other and whether their dys also have the same signs. Zero values count as both positive and negative for this purpose.

Determines whether this direction and the given one point towards the same quarter of the unit circle. That is, determines whether the two directions’ dx have same sign as the other and whether their dys also have the same signs. Zero values count as both positive and negative for this purpose.

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.)

Returns this direction as radians. (Zero radians points rightwards, positive angles are counterclockwise from there, negative ones clockwise.)

Returns this direction as radians. (Zero radians points rightwards, positive angles are counterclockwise from there, negative ones clockwise.)

override def toString: String

Returns a String description of the Direction. The exact format varies for different direction objects.

Returns a String description of the Direction. The exact format varies for different direction objects.

See also:
Definition Classes

Inherited methods

Inherited from:
Product