o1.world
Type members
Classlikes
A Bounds
represents the dimensions of a rectangular area in two-dimensional space.
A Bounds
represents the dimensions of a rectangular area in two-dimensional space.
Bounds
objects are immutable. They assume a space in which x coordinates increase rightwards
and y coordinates downwards.
This class has an alias in the top-level package o1, so it’s accessible to students simply
via import o1.*
.
- Value parameters:
- height
the height of the
Bounds
(the distance from its top edge to its bottom edge)- left
the x coordinate of the left edge of the
Bounds
- top
the y coordinate of the top edge of the
Bounds
- width
the width of the
Bounds
(the distance from its left edge to its right edge)
- Companion:
- object
A companion object for class Bounds
. Provides a factory method.
A companion object for class Bounds
. Provides a factory method.
- Companion:
- class
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.
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 Direction
s 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 Direction
s,
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
This companion object of class Direction
provides some constants of type Direction
and methods for creating new Direction
instances.
This companion object of class Direction
provides some constants of type Direction
and methods for creating new Direction
instances.
The object has an alias in the top-level package o1, so it’s accessible to students
simply via import o1.*
.
- Companion:
- class
Each instance of this class represents a location on a two-dimensional plane. A Pos
object is
essentially a pair of two coordinates, x
and y
. Pos
objects are immutable.
Each instance of this class represents a location on a two-dimensional plane. A Pos
object is
essentially a pair of two coordinates, x
and y
. Pos
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:
- x
the x coordinate of the
Pos
- y
the y coordinate of the
Pos
- Companion:
- object
Each instance of this class represents movement in the context of a two-dimensional plane.
A velocity is a combination of a Direction of movement with a speed (a non-negative
Double
).
Each instance of this class represents movement in the context of a two-dimensional plane.
A velocity is a combination of a Direction of movement with a speed (a non-negative
Double
).
Another way to think about a Velocity
is to divide it in two components: dx
and dy
.
dx
indicates the amount (and direction) of movement along the x axis; dy
is the same
for the y axis. The x coordinate increases rightwards and y downwards. For instance,
a velocity with a dx
of 10 and a dy
of zero indicates rightward movement, and a velocity
with a dx
of -100 and a dy
of -100 indicates faster movement leftwards and upwards.
There are many ways to create a Velocity
using the methods on the companion object.
Among other things, you can:
- construct a velocity from a direction and a (positive
or zero) speed, as in
Velocity(Direction.Left, 50)
; - construct a direction from
dx
anddy
, as inVelocity(-100, 50)
; or - determine the velocity needed to go from one
Pos to another in a single unit of time, as
in
Velocity.between(pos1, pos2)
.
Many of the methods on Velocity
objects also create and return new velocities.
Velocity
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:
- direction
the direction of movement
- speed
the speed of movement; this cannot be negative
- Companion:
- object
This companion object of class Velocity
exists primarily to provide convenience
methods for creating new instances of Velocity
.
This companion object of class Velocity
exists primarily to provide convenience
methods for creating new instances of Velocity
.
The object has an alias in the top-level package o1, so it’s accessible to students
simply via import o1.*
.
- Companion:
- class