# MutableSegment

Artifact: [androidx.ink:ink-geometry](https://developer.android.com/jetpack/androidx/releases/ink) [View Source](https://cs.android.com/search?q=file:androidx/ink/geometry/MutableSegment.kt+class:androidx.ink.geometry.MutableSegment) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/ink#1.0.0)

*** ** * ** ***

<br />

```
public final class MutableSegment extends Segment
```

<br />

|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) |||
| ↳ | [androidx.ink.geometry.Segment](https://developer.android.com/reference/androidx/ink/geometry/Segment) ||
|   | ↳ | [androidx.ink.geometry.MutableSegment](https://developer.android.com/reference/androidx/ink/geometry/MutableSegment) |

*** ** * ** ***

Represents a mutable directed line segment between two points. See `https://developer.android.com/reference/androidx/ink/geometry/ImmutableSegment` for the immutable alternative.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/ink/geometry/MutableSegment#MutableSegment()()` Constructs a degenerate `https://developer.android.com/reference/androidx/ink/geometry/MutableSegment` with both `https://developer.android.com/reference/androidx/ink/geometry/MutableSegment#start()` and `https://developer.android.com/reference/androidx/ink/geometry/MutableSegment#end()` set to (0f, 0f) |
| `https://developer.android.com/reference/androidx/ink/geometry/MutableSegment#MutableSegment(androidx.ink.geometry.MutableVec,androidx.ink.geometry.MutableVec)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/MutableVec start, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/MutableVec end)` Create the `https://developer.android.com/reference/androidx/ink/geometry/MutableSegment` from two existing `https://developer.android.com/reference/androidx/ink/geometry/MutableVec` instances. |

| ### Public methods |
|---|---|
| `boolean` | `https://developer.android.com/reference/androidx/ink/geometry/MutableSegment#equals(kotlin.Any)(https://developer.android.com/reference/java/lang/Object.html other)` |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/MutableVec` | `https://developer.android.com/reference/androidx/ink/geometry/MutableSegment#getEnd()()` |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/MutableVec` | `https://developer.android.com/reference/androidx/ink/geometry/MutableSegment#getStart()()` |
| `int` | `https://developer.android.com/reference/androidx/ink/geometry/MutableSegment#hashCode()()` |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/MutableSegment` | `https://developer.android.com/reference/androidx/ink/geometry/MutableSegment#populateFrom(androidx.ink.geometry.Segment)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/Segment input)` Fills this `https://developer.android.com/reference/androidx/ink/geometry/MutableSegment` with the same values contained in `https://developer.android.com/reference/androidx/ink/geometry/MutableSegment#populateFrom(androidx.ink.geometry.Segment)`. |
| `void` | `https://developer.android.com/reference/androidx/ink/geometry/MutableSegment#setEnd(androidx.ink.geometry.MutableVec)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/MutableVec value)` |
| `void` | `https://developer.android.com/reference/androidx/ink/geometry/MutableSegment#setStart(androidx.ink.geometry.MutableVec)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/MutableVec value)` |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/ImmutableSegment` | `https://developer.android.com/reference/androidx/ink/geometry/MutableSegment#toImmutable()()` Returns an immutable copy of this object. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/lang/String.html` | `https://developer.android.com/reference/androidx/ink/geometry/MutableSegment#toString()()` |

### Inherited methods

From [androidx.ink.geometry.Segment](https://developer.android.com/reference/androidx/ink/geometry/Segment) `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/ImmutableBox` `https://developer.android.com/reference/androidx/ink/geometry/Segment#computeBoundingBox()()`

Returns the minimum bounding box containing the `https://developer.android.com/reference/androidx/ink/geometry/Segment`.
`final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/MutableBox` `https://developer.android.com/reference/androidx/ink/geometry/Segment#computeBoundingBox(androidx.ink.geometry.MutableBox)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/MutableBox outBox)`

Populates `https://developer.android.com/reference/androidx/ink/geometry/Segment#computeBoundingBox(androidx.ink.geometry.MutableBox)` with the minimum bounding box containing the `https://developer.android.com/reference/androidx/ink/geometry/Segment`.
`final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/ImmutableVec` `https://developer.android.com/reference/androidx/ink/geometry/Segment#computeDisplacement()()`

Returns an ImmutableVec with the displacement from start to end.
`final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/MutableVec` `https://developer.android.com/reference/androidx/ink/geometry/Segment#computeDisplacement(androidx.ink.geometry.MutableVec)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/MutableVec outVec)`

Populates `https://developer.android.com/reference/androidx/ink/geometry/Segment#computeDisplacement(androidx.ink.geometry.MutableVec)` with the displacement from start to end.
`final @https://developer.android.com/reference/androidx/annotation/FloatRange(from = 0.0) float` `https://developer.android.com/reference/androidx/ink/geometry/Segment#computeLength()()`

The length of the `https://developer.android.com/reference/androidx/ink/geometry/Segment`.
`final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/ImmutableVec` `https://developer.android.com/reference/androidx/ink/geometry/Segment#computeLerpPoint(kotlin.Float)(float ratio)`

Returns the point on the segment at the given ratio of the segment's length, measured from the start point.
`final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/MutableVec` `https://developer.android.com/reference/androidx/ink/geometry/Segment#computeLerpPoint(kotlin.Float,androidx.ink.geometry.MutableVec)(float ratio, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/MutableVec outVec)`

Fills `https://developer.android.com/reference/androidx/ink/geometry/Segment#computeLerpPoint(kotlin.Float,androidx.ink.geometry.MutableVec)` with the point on the segment at the given ratio of the segment's length, measured from the start point.
`final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/ImmutableVec` `https://developer.android.com/reference/androidx/ink/geometry/Segment#computeMidpoint()()`

Returns an `https://developer.android.com/reference/androidx/ink/geometry/ImmutableVec` that lies halfway along the segment.
`final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/MutableVec` `https://developer.android.com/reference/androidx/ink/geometry/Segment#computeMidpoint(androidx.ink.geometry.MutableVec)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/MutableVec outVec)`

Populates `https://developer.android.com/reference/androidx/ink/geometry/Segment#computeMidpoint(androidx.ink.geometry.MutableVec)` with the point halfway along the segment.
`final boolean` `https://developer.android.com/reference/androidx/ink/geometry/Segment#isAlmostEqual(androidx.ink.geometry.Segment,kotlin.Float)(

@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/Segment other,

@https://developer.android.com/reference/androidx/annotation/FloatRange(from = 0.0) float tolerance

)`

Compares this `https://developer.android.com/reference/androidx/ink/geometry/Segment` with `https://developer.android.com/reference/androidx/ink/geometry/Segment#isAlmostEqual(androidx.ink.geometry.Segment,kotlin.Float)`, and returns true if both `https://developer.android.com/reference/androidx/ink/geometry/Segment#start()` points are considered almost equal with the given `https://developer.android.com/reference/androidx/ink/geometry/Segment#isAlmostEqual(androidx.ink.geometry.Segment,kotlin.Float)`, and likewise for both `https://developer.android.com/reference/androidx/ink/geometry/Segment#end()` points.
`final float` `https://developer.android.com/reference/androidx/ink/geometry/Segment#project(androidx.ink.geometry.Vec)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/Vec pointToProject)`

Returns the multiple of the segment's length at which the infinite extrapolation of this segment is closest to `https://developer.android.com/reference/androidx/ink/geometry/Segment#project(androidx.ink.geometry.Vec)`.

## Public constructors

### MutableSegment

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/ink#1.0.0)

```
public MutableSegment()
```

Constructs a degenerate `https://developer.android.com/reference/androidx/ink/geometry/MutableSegment` with both `https://developer.android.com/reference/androidx/ink/geometry/MutableSegment#start()` and `https://developer.android.com/reference/androidx/ink/geometry/MutableSegment#end()` set to (0f, 0f)

### MutableSegment

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/ink#1.0.0)

```
public MutableSegment(@NonNull MutableVec start, @NonNull MutableVec end)
```

Create the `https://developer.android.com/reference/androidx/ink/geometry/MutableSegment` from two existing `https://developer.android.com/reference/androidx/ink/geometry/MutableVec` instances. Note that these instances will become the internal state of this `https://developer.android.com/reference/androidx/ink/geometry/MutableSegment`, so modifications made to them directly or through setters on this `https://developer.android.com/reference/androidx/ink/geometry/MutableSegment` will modify the input `https://developer.android.com/reference/androidx/ink/geometry/MutableVec` instances too. This is to allow performance-critical code to avoid any unnecessary allocations. This can be tricky to manage, especially in multithreaded code, so when calling code is unable to guarantee ownership of the nested mutable data at a particular time, it may be safest to construct this with copies of the data to give this `https://developer.android.com/reference/androidx/ink/geometry/MutableSegment` exclusive ownership of those copies.

## Public methods

### equals

```
public boolean equals(Object other)
```

### getEnd

```
public @NonNull MutableVec getEnd()
```

### getStart

```
public @NonNull MutableVec getStart()
```

### hashCode

```
public int hashCode()
```

### populateFrom

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/ink#1.0.0)

```
public final @NonNull MutableSegment populateFrom(@NonNull Segment input)
```

Fills this `https://developer.android.com/reference/androidx/ink/geometry/MutableSegment` with the same values contained in `https://developer.android.com/reference/androidx/ink/geometry/MutableSegment#populateFrom(androidx.ink.geometry.Segment)`.

Returns the modified instance to allow chaining calls.

| Returns |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/MutableSegment` | `this` |

### setEnd

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/ink#1.0.0)

```
public void setEnd(@NonNull MutableVec value)
```

### setStart

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/ink#1.0.0)

```
public void setStart(@NonNull MutableVec value)
```

### toImmutable

```
public @NonNull ImmutableSegment toImmutable()
```

Returns an immutable copy of this object. This will return itself if called on an immutable instance.

### toString

```
public @NonNull String toString()
```