# Segment

class Segment : ShapeContourProvider

Creates a new Segment, which specifies a linear or a Bézier curve path between two anchor points (and up to two control points for curvature).

## Constructors

Segment
common
fun Segment(start: Vector2, end: Vector2, corner: Boolean = true)

Linear segment constructor.

Segment
common
fun Segment(start: Vector2, c0: Vector2, end: Vector2, corner: Boolean = true)

Segment
common
fun Segment(start: Vector2, c0: Vector2, c1: Vector2, end: Vector2, corner: Boolean = true)

Cubic Bézier segment constructor.

Segment
common
fun Segment(start: Vector2, control: Array<Vector2>, end: Vector2, corner: Boolean = true)

## Functions

common
fun adaptivePositions(distanceTolerance: Double = 0.5): List<Vector2>

Recursively subdivides Segment to approximate Bézier curve.

common
fun adaptivePositionsAndNormals(distanceTolerance: Double = 0.5): Pair<List<Vector2>, List<Vector2>>

Recursively subdivides Segment to approximate Bézier curve.

copy
common
fun copy(start: Vector2 = this.start, control: Array<Vector2> = this.control, end: Vector2 = this.end): Segment

Returns a shallow copy of the Segment.

derivative
common
fun derivative(t: Double): Vector2
direction
common
fun direction(): Vector2

Returns the direction Vector2 of between the Segment anchor points.

fun direction(t: Double): Vector2
div
common
operator fun div(scale: Double): Segment
equals
common
open operator override fun equals(other: Any?): Boolean
equidistantPositions
common
fun equidistantPositions(pointCount: Int): List<Vector2>

Samples specified amount of points on the Segment.

extrema
common
fun extrema(): List<Double>

Returns the t values of the extrema for the current Segment.

extremaPoints
common
fun extremaPoints(): List<Vector2>

Returns the extrema points as Vector2s for current Segment

hashCode
common
open override fun hashCode(): Int
isStraight
common
fun isStraight(epsilon: Double = 0.01): Boolean

Determines if the Segment forms a straight line.

lut
common
fun lut(size: Int = 100): List<Vector2>
minus
common
operator fun minus(right: Segment): Segment
nearest
common
fun nearest(point: Vector2): SegmentPoint

Find point on segment nearest to given point.

normal
common
fun normal(ut: Double, polarity: YPolarity = YPolarity.CW_NEGATIVE_Y): Vector2

Returns a normal Vector2 at given value of t in the range of `0.0` to `1.0`.

offset
common
fun offset(distance: Double, stepSize: Double = 0.01, yPolarity: YPolarity = YPolarity.CW_NEGATIVE_Y): List<Segment>
on
common
fun on(point: Vector2, error: Double = 5.0): Double?
plus
common
operator fun plus(right: Segment): Segment
pose
common
fun pose(t: Double, polarity: YPolarity = YPolarity.CW_NEGATIVE_Y): Matrix44

Calculates the pose Matrix44 (i.e. translation and rotation) that describes an orthonormal basis formed by normal and tangent of the contour at t.

position
common
fun position(ut: Double): Vector2

Returns a point on the segment.

reduced
common
fun reduced(stepSize: Double = 0.01): List<Segment>
scale
common
fun scale(scale: Double, polarity: YPolarity): Segment
fun scale(polarity: YPolarity, scale: (Double) -> Double): Segment
split
common
fun split(t: Double): Array<Segment>

Splits the path into one or two parts, depending on if the cut was successful.

sub
common
fun sub(t0: Double, t1: Double): Segment

Samples a new Segment from the current Segment starting at t0 and ending at t1.

tForLength
common
fun tForLength(length: Double): Double

Estimate t value for a given length

times
common
operator fun times(scale: Double): Segment
toString
common
open override fun toString(): String
transform
common
fun transform(transform: Matrix44): Segment

Applies given linear transformation.

## Properties

bounds
common
val bounds: Rectangle

Returns the bounding box.

clockwise
common
val clockwise: Boolean
contour
common
open override val contour: ShapeContour

the provided contour

control
common
val control: Array<Vector2>

Array of control points which control the curvature of the Segment.

corner
common
val corner: Boolean
cubic
common
val cubic: Segment

Converts the Segment to a cubic Bézier curve.

end
common
val end: Vector2

The end point of the Segment.

length
common
val length: Double

Calculates approximate Euclidean length of the Segment.

linear
common
val linear: Boolean

Indicates whether or not the Segment is linear.

common

Converts the Segment to a quadratic Bézier curve.

reverse
common
val reverse: Segment

Reverses the order of control points of the given path Segment.

simple
common
val simple: Boolean
start
common
val start: Vector2

The start point of the Segment.

type
common
val type: SegmentType

Returns the type of the segment.

intersections