# CurveLocation

CurveLocation objects describe a location on `Curve` objects, as defined by the curve-time `time`, a value between `0` (beginning of the curve) and `1` (end of the curve). If the curve is part of a `Path` item, its `index` inside the `path.curves` array is also provided.

The class is in use in many places, such as `path.getLocationAt(offset)`, `path.getLocationOf(point)`, `pathItem.getNearestLocation(point)`, `pathItem.getIntersections(path)`, etc.

## Constructors

`CurveLocation(curve, time[, point])`

Creates a new CurveLocation object.

#### Parameters:

- `curve:` `Curve`
- `time:` `Number`
- `point:` `Point` — optional

#### Returns:

- ``CurveLocation``

## Properties

`segment`

The segment of the curve which is closer to the described location.

Read only.

#### Type:

- `Segment`

`curve`

The curve that this location belongs to.

Read only.

#### Type:

- `Curve`

`path`

The path that this locations is situated on.

Read only.

#### Type:

- `Item`

`index`

The index of the `curve` within the `path.curves` list, if it is part of a `Path` item.

Read only.

#### Type:

- `Index`

`time`

The curve-time parameter, as used by various bezier curve calculations. It is value between `0` (beginning of the curve) and `1` (end of the curve).

Read only.

#### Type:

- `Number`

`point`

The point which is defined by the `curve` and `time`.

Read only.

#### Type:

- `Point`

`offset`

The length of the path from its beginning up to the location described by this object. If the curve is not part of a path, then the length within the curve is returned instead.

Read only.

#### Type:

- `Number`

`curveOffset`

The length of the curve from its beginning up to the location described by this object.

Read only.

#### Type:

- `Number`

`intersection`

The curve location on the intersecting curve, if this location is the result of a call to `pathItem.getIntersections(path)` / `curve.getIntersections(curve)`.

Read only.

#### Type:

- `CurveLocation`

`tangent`

The tangential vector to the `curve` at the given location.

Read only.

#### Type:

- `Point`

`normal`

The normal vector to the `curve` at the given location.

Read only.

#### Type:

- `Point`

`curvature`

The curvature of the `curve` at the given location.

Read only.

#### Type:

- `Number`

`distance`

The distance from the queried point to the returned location.

Read only.

#### Type:

- `Number`

#### See also:

- ``curve.getNearestLocation(point)``
- ``Path#getNearestLocation(point)``

## Methods

`equals(location)`

Checks whether tow CurveLocation objects are describing the same location on a path, by applying the same tolerances as elsewhere when dealing with curve-time parameters.

#### Parameters:

- `location:` `CurveLocation`

#### Returns:

- ``Boolean`` — `true` if the locations are equal, `false` otherwise

`toString()`

#### Returns:

- ``String`` — a string representation of the curve location

### Tests

`isTouching()`

Checks if the location is an intersection with another curve and is merely touching the other curve, as opposed to crossing it.

#### Returns:

- ``Boolean`` — `true` if the location is an intersection that is merely touching another curve, `false` otherwise

#### See also:

- ``isCrossing`()`

`isCrossing()`

Checks if the location is an intersection with another curve and is crossing the other curve, as opposed to just touching it.

#### Returns:

- ``Boolean`` — `true` if the location is an intersection that is crossing another curve, `false` otherwise

#### See also:

- ``isTouching`()`

`hasOverlap()`

Checks if the location is an intersection with another curve and is part of an overlap between the two involved paths.

#### Returns:

- ``Boolean`` — `true` if the location is an intersection that is part of an overlap between the two involved paths, `false` otherwise

#### See also:

- ``isCrossing`()`
- ``isTouching`()`