# Segment

Class representing a segment

## Constructor

#### new Segment(ps, pe)

Source:
  - classes/segment.js, line 16

##### Parameters:

Name | Type | Description
--- | --- | ---
`ps` | `Point` | start point
`pe` | `Point` | end point

### Classes

Segment

### Members

#### box

Bounding box

Source:
  - classes/segment.js, line 128

#### end

End point

Source:
  - classes/segment.js, line 94

#### length

Length of a segment

Source:
  - classes/segment.js, line 111

#### pe :Point

End Point

Source:
  - classes/segment.js, line 33

##### Type:

- `Point`

#### ps :Point

Start point

Source:
  - classes/segment.js, line 28

##### Type:

- `Point`

#### slope

Slope of the line - angle to axe x in radians from 0 to 2PI

Source:
  - classes/segment.js, line 119

#### start

Start point

Source:
  - classes/segment.js, line 86

#### vertices

Returns array of start and end point

Source:
  - classes/segment.js, line 103

### Methods

#### clone() → {Segment}

Return new cloned instance of segment

Source:
  - classes/segment.js, line 78

##### Returns:

Type:
  `Segment`

#### contains(pt) → {boolean}

Returns true if segment contains point

Source:
  - classes/segment.js, line 151

##### Parameters:

Name | Type | Description
--- | --- | ---
`pt` | `Point` | Query point

##### Returns:

Type:
  `boolean`

#### distanceTo(shape) → {number|Segment}

Calculate distance and shortest segment from segment to shape and return as array [distance, shortest segment]

Source:
  - classes/segment.js, line 200

##### Parameters:

Name | Type | Description
--- | --- | ---
`shape` | `Shape` | Shape of the one of supported types Point, Line, Circle, Segment, Arc, Polygon or Planar Set

##### Returns:

- Type:
    `number`
  distance from segment to shape
- Type:
    `Segment`
  shortest segment between segment and shape (started at segment, ended at shape)

#### equalTo(seg) → {boolean}

Returns true if equals to query segment, false otherwise

Source:
  - classes/segment.js, line 142

##### Parameters:

Name | Type | Description
--- | --- | ---
`seg` | `Seg` | query segment

##### Returns:

Type:
  `boolean`

#### intersect(shape) → {Array.<Point>}

Returns array of intersection points between segment and other shape

Source:
  - classes/segment.js, line 160

##### Parameters:

Name | Type | Description
--- | --- | ---
`shape` | `Shape` | Shape of the one of supported types

##### Returns:

Type:
  `Array.<Point>`

#### isZeroLength() → {boolean}

Returns true if segment start is equal to segment end up to DP_TOL

Source:
  - classes/segment.js, line 333

##### Returns:

Type:
  `boolean`

#### middle() → {Point}

Return middle point of the segment

Source:
  - classes/segment.js, line 288

##### Returns:

Type:
  `Point`

#### pointAtLength(length) → {Point}

Get point at given length

Source:
  - classes/segment.js, line 297

##### Parameters:

Name | Type | Description
--- | --- | ---
`length` | `number` | The length along the segment

##### Returns:

Type:
  `Point`

#### reverse() → {Segment}

Returns new segment with swapped start and end points

Source:
  - classes/segment.js, line 260

##### Returns:

Type:
  `Segment`

#### sortPoints(pts) → {Array.<Point>}

Sort given array of points from segment start to end, assuming all points lay on the segment

Source:
  - classes/segment.js, line 342

##### Parameters:

Name | Type | Description
--- | --- | ---
`pts` | `Array.<Point>` | array of points

##### Returns:

Type:
  `Array.<Point>`

new array sorted

#### split(pt) → {Array.<Segment>}

When point belongs to segment, return array of two segments split by given point, if point is inside segment. Returns clone of this segment if query point is incident to start or end point of the segment. Returns empty array if point does not belong to segment

Source:
  - classes/segment.js, line 271

##### Parameters:

Name | Type | Description
--- | --- | ---
`pt` | `Point` | Query point

##### Returns:

Type:
  `Array.<Segment>`

#### svg(attrs) → {string}

Return string to draw segment in svg

Source:
  - classes/segment.js, line 358

##### Parameters:

Name | Type | Description
--- | --- | ---
`attrs` | `Object` | an object with attributes for svg path element, like "stroke", "strokeWidth" Defaults are stroke:"black", strokeWidth:"1"

##### Returns:

Type:
  `string`

#### tangentInEnd() → {Vector}

Return unit vector in the direction from end to start

Source:
  - classes/segment.js, line 251

##### Returns:

Type:
  `Vector`

#### tangentInStart() → {Vector}

Returns unit vector in the direction from start to end

Source:
  - classes/segment.js, line 242

##### Returns:

Type:
  `Vector`

#### transform(matrix) → {Segment}

Return new segment transformed using affine transformation matrix

Source:
  - classes/segment.js, line 325

##### Parameters:

Name | Type | Description
--- | --- | ---
`matrix` | `Matrix` | affine transformation matrix

##### Returns:

Type:
  `Segment`

- transformed segment