# Segment

Class representing a segment

## Constructor

#### new Segment(ps, pe)

Source:
  - classes/segment.js, line 15

##### Parameters:

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

### Classes

Segment

### Members

#### box

Bounding box

Source:
  - classes/segment.js, line 126

#### end

End point

Source:
  - classes/segment.js, line 92

#### length

Length of a segment

Source:
  - classes/segment.js, line 109

#### pe :Point

End Point

Source:
  - classes/segment.js, line 31

##### Type:

- `Point`

#### ps :Point

Start point

Source:
  - classes/segment.js, line 26

##### Type:

- `Point`

#### slope

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

Source:
  - classes/segment.js, line 117

#### start

Start point

Source:
  - classes/segment.js, line 84

#### vertices

Returns array of start and end point

Source:
  - classes/segment.js, line 101

### Methods

#### clone() → {Segment}

Return new cloned instance of segment

Source:
  - classes/segment.js, line 76

##### Returns:

Type:
  `Segment`

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

Returns true if segment contains point

Source:
  - classes/segment.js, line 149

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

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

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

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

##### Returns:

Type:
  `boolean`

#### middle() → {Point}

Return middle point of the segment

Source:
  - classes/segment.js, line 282

##### Returns:

Type:
  `Point`

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

Get point at given length

Source:
  - classes/segment.js, line 291

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

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

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

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

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

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

##### Returns:

Type:
  `Vector`

#### tangentInStart() → {Vector}

Returns unit vector in the direction from start to end

Source:
  - classes/segment.js, line 236

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

##### Returns:

Type:
  `Object`

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

Return new segment transformed using affine transformation matrix

Source:
  - classes/segment.js, line 342

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

##### Parameters:

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

##### Returns:

Type:
  `Segment`