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

## Value members

### Concrete methods

Returns a `Pos`

whose two coordinates are obtained by multiplying this one’s `x`

and `y`

by the given factor.
For instance, (2,-3) multiplied by 10 is (20,-30). The expressions `myPos * n`

and `myPos.multiply(n)`

are equivalent.

Returns a `Pos`

whose two coordinates are obtained by multiplying this one’s `x`

and `y`

by the given factor.
For instance, (2,-3) multiplied by 10 is (20,-30). The expressions `myPos * n`

and `myPos.multiply(n)`

are equivalent.

Adds the `x`

and `y`

of the given `Pos`

to the `x`

and `y`

of this `Pos`

, respectively. Returns the resulting `Pos`

.
The expressions `pos1 + pos2`

, `pos1.add(pos2)`

, and `pos1.offset(pos2)`

are equivalent.

Adds the `x`

and `y`

of the given `Pos`

to the `x`

and `y`

of this `Pos`

, respectively. Returns the resulting `Pos`

.
The expressions `pos1 + pos2`

, `pos1.add(pos2)`

, and `pos1.offset(pos2)`

are equivalent.

Subtracts the `x`

and `y`

of the given `Pos`

from the `x`

and `y`

of this `Pos`

, respectively. Returns the resulting `Pos`

.
The expressions `pos1 - pos2`

and `pos1.subtract(pos2)`

are equivalent.

Subtracts the `x`

and `y`

of the given `Pos`

from the `x`

and `y`

of this `Pos`

, respectively. Returns the resulting `Pos`

.
The expressions `pos1 - pos2`

and `pos1.subtract(pos2)`

are equivalent.

Returns a `Pos`

whose two coordinates are obtained by dividing this one’s `x`

and `y`

by the given number.
For instance, (20,-30) divided by 10 is (2,-3). The expressions `myPos / n`

and `myPos.divide(n)`

are equivalent.

Returns a `Pos`

whose two coordinates are obtained by dividing this one’s `x`

and `y`

by the given number.
For instance, (20,-30) divided by 10 is (2,-3). The expressions `myPos / n`

and `myPos.divide(n)`

are equivalent.

Adds the two given values to the `x`

and `y`

of this `Pos`

, respectively. Returns the resulting `Pos`

.
The expressions `myPosadd(dx, dy)`

and `myPosoffset(dx, dy)`

are equivalent.

Adds the two given values to the `x`

and `y`

of this `Pos`

, respectively. Returns the resulting `Pos`

.
The expressions `myPosadd(dx, dy)`

and `myPosoffset(dx, dy)`

are equivalent.

Adds the `x`

and `y`

of the given `Pos`

to the `x`

and `y`

of this `Pos`

, respectively. Returns the resulting `Pos`

.
The expressions `pos1.add(pos2)`

, `pos1.offset(pos2)`

, and `pos1 + pos2`

are equivalent.

Adds the `x`

and `y`

of the given `Pos`

to the `x`

and `y`

of this `Pos`

, respectively. Returns the resulting `Pos`

.
The expressions `pos1.add(pos2)`

, `pos1.offset(pos2)`

, and `pos1 + pos2`

are equivalent.

Returns a `Pos`

whose `x`

coordinate is greater than this `Pos`

’s by the given amount.

Returns a `Pos`

whose `x`

coordinate is greater than this `Pos`

’s by the given amount.

Returns a `Pos`

whose `y`

coordinate is greater than this `Pos`

’s by the given amount.

Returns a `Pos`

whose `y`

coordinate is greater than this `Pos`

’s by the given amount.

Returns a `Pos`

that is as close to this `Pos`

as possible but whose `x`

and `y`

are between the given lower and upper bounds (inclusive).

Returns a `Pos`

that is as close to this `Pos`

as possible but whose `x`

and `y`

are between the given lower and upper bounds (inclusive).

- Value parameters:
- xMax
the greatest possible value of

`x`

in the resulting`Pos`

; must not be below`xMin`

- xMin
the least possible value of

`x`

in the resulting`Pos`

; must not exceed`xMax`

- yMax
the greatest possible value of

`y`

in the resulting`Pos`

; must not be below`yMin`

- yMin
the least possible value of

`y`

in the resulting`Pos`

; must not exceed`yMax`

- See also:

Returns a `Pos`

that is as close to this `Pos`

as possible but whose `x`

is between the given lower and upper bounds (inclusive).

Returns a `Pos`

that is as close to this `Pos`

as possible but whose `x`

is between the given lower and upper bounds (inclusive).

- Value parameters:
- max
the greatest possible value of

`x`

in the resulting`Pos`

; must not be below`min`

- min
the least possible value of

`x`

in the resulting`Pos`

; must not exceed`max`

- See also:

Returns a `Pos`

that is as close to this `Pos`

as possible but whose `y`

is between the given lower and upper bounds (inclusive).

Returns a `Pos`

that is as close to this `Pos`

as possible but whose `y`

is between the given lower and upper bounds (inclusive).

- Value parameters:
- max
the greatest possible value of

`y`

in the resulting`Pos`

; must not be below`min`

- min
the least possible value of

`y`

in the resulting`Pos`

; must not exceed`max`

- See also:

Returns the distance between this `Pos`

and the given `Pos`

“as the crow flies”.

Returns the distance between this `Pos`

and the given `Pos`

“as the crow flies”.

Returns a `Pos`

whose two coordinates are obtained by dividing this one’s `x`

and `y`

by the given number.
For instance, (20,-30) divided by 10 is (2,-3). The expressions `myPos.divide(n)`

and `myPos / n`

are equivalent.

Returns a `Pos`

whose two coordinates are obtained by dividing this one’s `x`

and `y`

by the given number.
For instance, (20,-30) divided by 10 is (2,-3). The expressions `myPos.divide(n)`

and `myPos / n`

are equivalent.

Returns a `Pos`

whose two coordinates are obtained by multiplying this one’s `x`

and `y`

by the given factor.
For instance, (2,-3) multiplied by 10 is (20,-30). The expressions `myPos.multiply(n)`

and `myPos * n`

are equivalent.

Returns a `Pos`

whose two coordinates are obtained by multiplying this one’s `x`

and `y`

by the given factor.
For instance, (2,-3) multiplied by 10 is (20,-30). The expressions `myPos.multiply(n)`

and `myPos * n`

are equivalent.

Returns the `Pos`

that an object moving at the given velocity reaches in one unit of time.
That is, adds the `dx`

and `dy`

components of the given velocity to this `Pos`

and returns the result.

Returns the `Pos`

that an object moving at the given velocity reaches in one unit of time.
That is, adds the `dx`

and `dy`

components of the given velocity to this `Pos`

and returns the result.

Returns a `Pos`

that is as close to this `Pos`

as possible but has a `x`

coordinate equal to or greater than the given limit.

Returns a `Pos`

that is as close to this `Pos`

as possible but has a `x`

coordinate equal to or greater than the given limit.

- See also:

Returns a `Pos`

that is as close to this `Pos`

as possible but has a `y`

coordinate less than or equal to the given limit.

Returns a `Pos`

that is as close to this `Pos`

as possible but has a `y`

coordinate less than or equal to the given limit.

- See also:

Returns a `Pos`

that is as close to this `Pos`

as possible but has a `y`

coordinate equal to or greater than the given limit.

Returns a `Pos`

that is as close to this `Pos`

as possible but has a `y`

coordinate equal to or greater than the given limit.

- See also:

Returns a `Pos`

that is as close to this `Pos`

as possible but has a `y`

coordinate less than or equal to the given limit.

`Pos`

that is as close to this `Pos`

as possible but has a `y`

coordinate less than or equal to the given limit.

- See also:

Returns the `Pos`

that is `dx`

and `dy`

removed from this `Pos`

.
The expressions `myPosoffset(dx, dy)`

and `myPosadd(dx, dy)`

are equivalent.

Returns the `Pos`

that is `dx`

and `dy`

removed from this `Pos`

.
The expressions `myPosoffset(dx, dy)`

and `myPosadd(dx, dy)`

are equivalent.

Returns the `Pos`

that is removed from this `Pos`

by the amount indicated by the given `Pos`

.
The expressions `pos1.offset(pos2)`

, `pos1.add(pos2)`

, and `pos1 + pos2`

are equivalent.

Returns the `Pos`

that is removed from this `Pos`

by the amount indicated by the given `Pos`

.
The expressions `pos1.offset(pos2)`

, `pos1.add(pos2)`

, and `pos1 + pos2`

are equivalent.

Returns a `Pos`

whose `x`

equals the given value and whose `y`

equals this `Pos`

’s `y`

.

Returns a `Pos`

whose `x`

equals the given value and whose `y`

equals this `Pos`

’s `y`

.

Returns a `Pos`

whose `x`

equals this `Pos`

’s `x`

and whose `y`

equals the given value.

Returns a `Pos`

whose `x`

equals this `Pos`

’s `x`

and whose `y`

equals the given value.

Subtracts the `x`

and `y`

of the given `Pos`

from the `x`

and `y`

of this `Pos`

, respectively. Returns the resulting `Pos`

.
The expressions `pos1.subtract(pos2)`

and `pos1 - pos2`

are equivalent.

Subtracts the `x`

and `y`

of the given `Pos`

from the `x`

and `y`

of this `Pos`

, respectively. Returns the resulting `Pos`

.
The expressions `pos1.subtract(pos2)`

and `pos1 - pos2`

are equivalent.

Returns a `Pos`

whose `x`

coordinate is less than this `Pos`

’s by the given amount.

Returns a `Pos`

whose `x`

coordinate is less than this `Pos`

’s by the given amount.

Returns a `Pos`

whose `y`

coordinate is less than this `Pos`

’s by the given amount.

Returns a `Pos`

whose `y`

coordinate is less than this `Pos`

’s by the given amount.

Returns the `x`

and `y`

coordinates of the `Pos`

as a tuple.

Returns the `x`

and `y`

coordinates of the `Pos`

as a tuple.

Applies the given function to the two coordinates of the `Pos`

and returns the result.

Applies the given function to the two coordinates of the `Pos`

and returns the result.

Returns the `Pos`

that is the opposite of this `Pos`

. For instance, the opposite of (2,-3) is (-2,3).

Returns the `Pos`

that is the opposite of this `Pos`

. For instance, the opposite of (2,-3) is (-2,3).

Returns a `Pos`

those `x`

and `y`

capture the relative distance from this `Pos`

towards the given `Pos`

.
That is, subtracts the `x`

and `y`

of the this `Pos`

from the `x`

and `y`

of given `Pos`

, respectively.
The expressions `pos1.vectorTo(pos2)`

and `pos2 - pos1`

are equivalent.

Returns a `Pos`

those `x`

and `y`

capture the relative distance from this `Pos`

towards the given `Pos`

.
That is, subtracts the `x`

and `y`

of the this `Pos`

from the `x`

and `y`

of given `Pos`

, respectively.
The expressions `pos1.vectorTo(pos2)`

and `pos2 - pos1`

are equivalent.

Returns a `Pos`

whose `x`

is determined by applying the given function to the `x`

of this `Pos`

and whose `y`

equals that of this `Pos`

.

Returns a `Pos`

whose `x`

is determined by applying the given function to the `x`

of this `Pos`

and whose `y`

equals that of this `Pos`

.

- Value parameters:
- computeNew
a function that takes in an x coordinate and returns the x for the resulting

`Pos`

Returns a `Pos`

whose `x`

and `y`

are determined by applying the given function to the `x`

and `y`

of this `Pos`

.

Returns a `Pos`

whose `x`

and `y`

are determined by applying the given function to the `x`

and `y`

of this `Pos`

.

- Value parameters:
- computeNew
a function that takes in an x and a y and returns a pair that contains the coordinates of the resulting

`Pos`

Returns a `Pos`

whose `x`

equals that of this `Pos`

and whose `y`

is determined by applying the given function to the `y`

of this `Pos`

.

Returns a `Pos`

whose `x`

equals that of this `Pos`

and whose `y`

is determined by applying the given function to the `y`

of this `Pos`

.

- Value parameters:
- computeNew
a function that takes in a y coordinate and returns the y for the resulting

`Pos`

Returns the difference between this `Pos`

’s `x`

coordinate and the given one’s.

Returns the difference between this `Pos`

’s `x`

coordinate and the given one’s.

- Returns:
the difference, which is positive if the given

`Pos`

’s`x`

is greater than this one’s and negative if the reverse is true