# Segment

Class representing a segment

## Constructor

#### new Segment(ps, pe)

Source:
  - classes/segment.js, line 20

##### Parameters:

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

### Classes

Segment

### Members

#### box

Bounding box

Source:
  - classes/segment.js, line 119

#### end

End point

Source:
  - classes/segment.js, line 85

#### length

Length of a segment

Source:
  - classes/segment.js, line 102

#### pe :Point

End Point

Source:
  - classes/segment.js, line 30

##### Type:

- `Point`

#### ps :Point

Start point

Source:
  - classes/segment.js, line 25

##### Type:

- `Point`

#### slope

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

Source:
  - classes/segment.js, line 110

#### start

Start point

Source:
  - classes/segment.js, line 77

#### vertices

Returns array of start and end point

Source:
  - classes/segment.js, line 94

### Methods

#### clone() → {Segment}

Return new cloned instance of segment

Source:
  - classes/segment.js, line 69

##### Returns:

Type:
  `Segment`

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

Returns true if segment contains point

Source:
  - classes/segment.js, line 142

##### 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 187

##### 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 133

##### 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 151

##### 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 327

##### Returns:

Type:
  `boolean`

#### middle() → {Point}

Return middle point of the segment

Source:
  - classes/segment.js, line 275

##### Returns:

Type:
  `Point`

#### reverse() → {Segment}

Returns new segment with swapped start and end points

Source:
  - classes/segment.js, line 247

##### Returns:

Type:
  `Segment`

#### rotate(angle, center) → {Segment}

Return new segment rotated by given angle around given point If point omitted, rotate around origin (0,0) Positive value of angle defines rotation counter clockwise, negative - clockwise

Source:
  - classes/segment.js, line 308

##### Parameters:

Name | Type | Default | Description
--- | --- | --- | ---
`angle` | `number` | 0 | rotation angle in radians
`center` | `Point` |  | center point, default is (0,0)

##### 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 336

##### 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 258

##### 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 357

##### 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 238

##### Returns:

Type:
  `Vector`

#### tangentInStart() → {Vector}

Returns unit vector in the direction from start to end

Source:
  - classes/segment.js, line 229

##### Returns:

Type:
  `Vector`

#### toJSON() → {Object}

This method returns an object that defines how data will be serialized when called JSON.stringify() method

Source:
  - classes/segment.js, line 346

##### Returns:

Type:
  `Object`

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

Return new segment transformed using affine transformation matrix

Source:
  - classes/segment.js, line 319

##### Parameters:

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

##### Returns:

Type:
  `Segment`

- transformed segment

#### translate(vec) → {Segment}

Returns new segment translated by vector vec

Source:
  - classes/segment.js, line 296

##### Parameters:

Name | Type | Description
--- | --- | ---
`vec` | `Vector` |

##### Returns:

Type:
  `Segment`