# MutableTriangle

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/MutableTriangle.kt+class:androidx.ink.geometry.MutableTriangle) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/ink#1.0.0)

*** ** * ** ***

<br />

```
public final class MutableTriangle extends Triangle
```

<br />

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

*** ** * ** ***

Represents a mutable triangle, defined by its three corners `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle#p0()`, `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle#p1()` and `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle#p2()` in order. See `https://developer.android.com/reference/androidx/ink/geometry/ImmutableTriangle` for the immutable version.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle#MutableTriangle()()` Constructs a degenerate `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle` with `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle#p0()`, `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle#p1()`, and `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle#p2()` set to (0, 0). |
| `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle#MutableTriangle(androidx.ink.geometry.MutableVec,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 p0, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/MutableVec p1, @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/MutableVec p2 )` Create the `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle` from three existing `https://developer.android.com/reference/androidx/ink/geometry/MutableVec` instances. |

| ### Public methods |
|---|---|
| `boolean` | `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle#equals(kotlin.Any)(https://developer.android.com/reference/java/lang/Object.html other)` Equality for `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle` is defined using the order in which `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle#p0()`, `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle#p1()` and `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle#p2()` are defined. |
| `@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/MutableTriangle#getP0()()` One of the three points that define the `https://developer.android.com/reference/androidx/ink/geometry/Triangle`. |
| `@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/MutableTriangle#getP1()()` One of the three points that define the `https://developer.android.com/reference/androidx/ink/geometry/Triangle`. |
| `@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/MutableTriangle#getP2()()` One of the three points that define the `https://developer.android.com/reference/androidx/ink/geometry/Triangle`. |
| `int` | `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle#hashCode()()` |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle` | `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle#populateFrom(androidx.ink.geometry.Triangle)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/Triangle input)` Fills this `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle` with the values from `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle#populateFrom(androidx.ink.geometry.Triangle)`. |
| `void` | `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle#setP0(androidx.ink.geometry.MutableVec)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/MutableVec value)` One of the three points that define the `https://developer.android.com/reference/androidx/ink/geometry/Triangle`. |
| `void` | `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle#setP1(androidx.ink.geometry.MutableVec)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/MutableVec value)` One of the three points that define the `https://developer.android.com/reference/androidx/ink/geometry/Triangle`. |
| `void` | `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle#setP2(androidx.ink.geometry.MutableVec)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/MutableVec value)` One of the three points that define the `https://developer.android.com/reference/androidx/ink/geometry/Triangle`. |
| `@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/ImmutableTriangle` | `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle#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/MutableTriangle#toString()()` |

### Inherited methods

From [androidx.ink.geometry.Triangle](https://developer.android.com/reference/androidx/ink/geometry/Triangle) `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/Triangle#computeBoundingBox()()`

Returns the minimum bounding box containing the `https://developer.android.com/reference/androidx/ink/geometry/Triangle`.
`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/Triangle#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/Triangle#computeBoundingBox(androidx.ink.geometry.MutableBox)` with the minimum bounding box containing the `https://developer.android.com/reference/androidx/ink/geometry/Triangle` and returns `https://developer.android.com/reference/androidx/ink/geometry/Triangle#computeBoundingBox(androidx.ink.geometry.MutableBox)`.
`final @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/Triangle#computeEdge(kotlin.Int)(@https://developer.android.com/reference/androidx/annotation/IntRange(from = 0, to = 2) int index)`

Returns the segment of the Triangle between the point at `https://developer.android.com/reference/androidx/ink/geometry/Triangle#computeEdge(kotlin.Int)` and the point at `https://developer.android.com/reference/androidx/ink/geometry/Triangle#computeEdge(kotlin.Int)` + 1 modulo 3.
`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/Triangle#computeEdge(kotlin.Int,androidx.ink.geometry.MutableSegment)(

@https://developer.android.com/reference/androidx/annotation/IntRange(from = 0, to = 2) int index,

@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/MutableSegment outSegment

)`

Fills `https://developer.android.com/reference/androidx/ink/geometry/Triangle#computeEdge(kotlin.Int,androidx.ink.geometry.MutableSegment)` with the segment of the Triangle between the point at `https://developer.android.com/reference/androidx/ink/geometry/Triangle#computeEdge(kotlin.Int,androidx.ink.geometry.MutableSegment)` and the point at `https://developer.android.com/reference/androidx/ink/geometry/Triangle#computeEdge(kotlin.Int,androidx.ink.geometry.MutableSegment)` + 1 modulo 3.
`final float` `https://developer.android.com/reference/androidx/ink/geometry/Triangle#computeSignedArea()()`

Return the signed area of the `https://developer.android.com/reference/androidx/ink/geometry/Triangle`.
`final boolean` `https://developer.android.com/reference/androidx/ink/geometry/Triangle#contains(androidx.ink.geometry.Vec)(@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/geometry/Vec point)`

Returns true if the given point is contained within the Triangle.
`final boolean` `https://developer.android.com/reference/androidx/ink/geometry/Triangle#isAlmostEqual(androidx.ink.geometry.Triangle,kotlin.Float)(

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

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

)`

## Public constructors

### MutableTriangle

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

```
public MutableTriangle()
```

Constructs a degenerate `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle` with `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle#p0()`, `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle#p1()`, and `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle#p2()` set to (0, 0).

### MutableTriangle

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

```
public MutableTriangle(
    @NonNull MutableVec p0,
    @NonNull MutableVec p1,
    @NonNull MutableVec p2
)
```

Create the `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle` from three 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/MutableTriangle`, so modifications made to them directly or through setters on this `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle` 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/MutableTriangle` exclusive ownership of those copies.

## Public methods

### equals

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

Equality for `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle` is defined using the order in which `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle#p0()`, `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle#p1()` and `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle#p2()` are defined. Rotated/flipped triangles with out-of-order vertices are not considered equal.

### getP0

```
public @NonNull MutableVec getP0()
```

One of the three points that define the `https://developer.android.com/reference/androidx/ink/geometry/Triangle`.

### getP1

```
public @NonNull MutableVec getP1()
```

One of the three points that define the `https://developer.android.com/reference/androidx/ink/geometry/Triangle`.

### getP2

```
public @NonNull MutableVec getP2()
```

One of the three points that define the `https://developer.android.com/reference/androidx/ink/geometry/Triangle`.

### hashCode

```
public int hashCode()
```

### populateFrom

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

```
public final @NonNull MutableTriangle populateFrom(@NonNull Triangle input)
```

Fills this `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle` with the values from `https://developer.android.com/reference/androidx/ink/geometry/MutableTriangle#populateFrom(androidx.ink.geometry.Triangle)`.

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/MutableTriangle` | `this` |

### setP0

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

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

One of the three points that define the `https://developer.android.com/reference/androidx/ink/geometry/Triangle`.

### setP1

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

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

One of the three points that define the `https://developer.android.com/reference/androidx/ink/geometry/Triangle`.

### setP2

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

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

One of the three points that define the `https://developer.android.com/reference/androidx/ink/geometry/Triangle`.

### toImmutable

```
public @NonNull ImmutableTriangle toImmutable()
```

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

### toString

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