# Class: Line

## Phaser. Line

Phaser - Line

#### new Line(x1, y1, x2, y2) → {Phaser.Line}

  Creates a new Line object with a start and an end point.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `x1` | number | <optional> | 0 | The x coordinate of the start of the line.
  `y1` | number | <optional> | 0 | The y coordinate of the start of the line.
  `x2` | number | <optional> | 0 | The x coordinate of the end of the line.
  `y2` | number | <optional> | 0 | The y coordinate of the end of the line.

  Source:
    - geom/Line.js, line 18

  ##### Returns:

  This line object

  Type
    Phaser.Line

### Members

#### <readonly> angle

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `angle` | number | Gets the angle of the line.

  Source:
    - geom/Line.js, line 202

#### <readonly> bottom

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `bottom` | number | Gets the bottom-most point of this line.

  Source:
    - geom/Line.js, line 306

#### end

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `end` | Phaser.Point | The end point of the line.

  Source:
    - geom/Line.js, line 33

#### <readonly> height

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `height` | number | Gets the height of this bounds of this line.

  Source:
    - geom/Line.js, line 332

#### <readonly> left

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `left` | number | Gets the left-most point of this line.

  Source:
    - geom/Line.js, line 267

#### <readonly> length

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `length` | number | Gets the length of the line segment.

  Source:
    - geom/Line.js, line 189

#### <readonly> perpSlope

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `perpSlope` | number | Gets the perpendicular slope of the line (x/y).

  Source:
    - geom/Line.js, line 228

#### <readonly> right

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `right` | number | Gets the right-most point of this line.

  Source:
    - geom/Line.js, line 280

#### <readonly> slope

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `slope` | number | Gets the slope of the line (y/x).

  Source:
    - geom/Line.js, line 215

#### start

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `start` | Phaser.Point | The start point of the line.

  Source:
    - geom/Line.js, line 28

#### <readonly> top

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `top` | number | Gets the top-most point of this line.

  Source:
    - geom/Line.js, line 293

#### <readonly> width

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `width` | number | Gets the width of this bounds of this line.

  Source:
    - geom/Line.js, line 319

#### <readonly> x

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `x` | number | Gets the x coordinate of the top left of the bounds around this line.

  Source:
    - geom/Line.js, line 241

#### <readonly> y

  ##### Properties:

  Name | Type | Description
  --- | --- | ---
  `y` | number | Gets the y coordinate of the top left of the bounds around this line.

  Source:
    - geom/Line.js, line 254

### Methods

#### <static> intersects(a, b, asSegment, result) → {Phaser.Point}

  Checks for intersection between two lines. If asSegment is true it will check for segment intersection. If asSegment is false it will check for line intersection. Returns the intersection segment of AB and EF as a Point, or null if there is no intersection. Adapted from code by Keith Hair

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `a` | Phaser.Line |  |  | The first Line to be checked.
  `b` | Phaser.Line |  |  | The second Line to be checked.
  `asSegment` | boolean | <optional> | true | If true it will check for segment intersection, otherwise full line intersection.
  `result` | Phaser.Point | <optional> |  | A Point object to store the result in, if not given a new one will be created.

  Source:
    - geom/Line.js, line 395

  ##### Returns:

  The intersection segment of the two lines as a Point, or null if there is no intersection.

  Type
    Phaser.Point

#### <static> intersectsPoints(a, b, e, f, asSegment, result) → {Phaser.Point}

  Checks for intersection between two lines as defined by the given start and end points. If asSegment is true it will check for line segment intersection. If asSegment is false it will check for line intersection. Returns the intersection segment of AB and EF as a Point, or null if there is no intersection. Adapted from code by Keith Hair

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `a` | Phaser.Point |  |  | The start of the first Line to be checked.
  `b` | Phaser.Point |  |  | The end of the first line to be checked.
  `e` | Phaser.Point |  |  | The start of the second Line to be checked.
  `f` | Phaser.Point |  |  | The end of the second line to be checked.
  `asSegment` | boolean | <optional> | true | If true it will check for segment intersection, otherwise full line intersection.
  `result` | Phaser.Point | <optional> |  | A Point object to store the result in, if not given a new one will be created.

  Source:
    - geom/Line.js, line 345

  ##### Returns:

  The intersection segment of the two lines as a Point, or null if there is no intersection.

  Type
    Phaser.Point

#### coordinatesOnLine(stepRate, results) → {array}

  Using Bresenham's line algorithm this will return an array of all coordinates on this line. The start and end points are rounded before this runs as the algorithm works on integers.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `stepRate` | number | <optional> | 1 | How many steps will we return? 1 = every coordinate on the line, 2 = every other coordinate, etc.
  `results` | array | <optional> |  | The array to store the results in. If not provided a new one will be generated.

  Source:
    - geom/Line.js, line 129

  ##### Returns:

  An array of coordinates.

  Type
    array

#### fromSprite(startSprite, endSprite, useCenter) → {Phaser.Line}

  Sets the line to match the x/y coordinates of the two given sprites. Can optionally be calculated from their center coordinates.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `startSprite` | Phaser.Sprite |  |  | The coordinates of this Sprite will be set to the Line.start point.
  `endSprite` | Phaser.Sprite |  |  | The coordinates of this Sprite will be set to the Line.start point.
  `useCenter` | boolean | <optional> | false | If true it will use startSprite.center.x, if false startSprite.x. Note that Sprites don't have a center property by default, so only enable if you've over-ridden your Sprite with a custom class.

  Source:
    - geom/Line.js, line 57

  ##### Returns:

  This line object

  Type
    Phaser.Line

#### intersects(line, asSegment, result) → {Phaser.Point}

  Checks for intersection between this line and another Line. If asSegment is true it will check for segment intersection. If asSegment is false it will check for line intersection. Returns the intersection segment of AB and EF as a Point, or null if there is no intersection.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `line` | Phaser.Line |  |  | The line to check against this one.
  `asSegment` | boolean | <optional> | true | If true it will check for segment intersection, otherwise full line intersection.
  `result` | Phaser.Point | <optional> |  | A Point object to store the result in, if not given a new one will be created.

  Source:
    - geom/Line.js, line 81

  ##### Returns:

  The intersection segment of the two lines as a Point, or null if there is no intersection.

  Type
    Phaser.Point

#### pointOnLine(x, y) → {boolean}

  Tests if the given coordinates fall on this line. See pointOnSegment to test against just the line segment.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `x` | number | The line to check against this one.
  `y` | number | The line to check against this one.

  Source:
    - geom/Line.js, line 98

  ##### Returns:

  True if the point is on the line, false if not.

  Type
    boolean

#### pointOnSegment(x, y) → {boolean}

  Tests if the given coordinates fall on this line and within the segment. See pointOnLine to test against just the line.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `x` | number | The line to check against this one.
  `y` | number | The line to check against this one.

  Source:
    - geom/Line.js, line 111

  ##### Returns:

  True if the point is on the line and segment, false if not.

  Type
    boolean

#### setTo(x1, y1, x2, y2) → {Phaser.Line}

  Sets the components of the Line to the specified values.

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `x1` | number | <optional> | 0 | The x coordinate of the start of the line.
  `y1` | number | <optional> | 0 | The y coordinate of the start of the line.
  `x2` | number | <optional> | 0 | The x coordinate of the end of the line.
  `y2` | number | <optional> | 0 | The y coordinate of the end of the line.

  Source:
    - geom/Line.js, line 39

  ##### Returns:

  This line object

  Type
    Phaser.Line