Segment3D

@Serializable
class Segment3D(val start: Vector3, val control: List<Vector3>, val end: Vector3) : BezierSegment<Vector3> (source)

Constructors

Link copied to clipboard
constructor(start: Vector3, control: List<Vector3>, end: Vector3)

Properties

Link copied to clipboard
val bounds: Box
Link copied to clipboard
open override val control: List<Vector3>
Link copied to clipboard
open override val cubic: Segment3D

Cubic version of segment

Link copied to clipboard
open override val end: Vector3
Link copied to clipboard
open override val length: Double
Link copied to clipboard
@Transient
open val linear: Boolean

Indicates whether the Segment2D is linear.

Link copied to clipboard
open override val reverse: Segment3D
Link copied to clipboard
open override val start: Vector3
Link copied to clipboard
@Transient
open val type: SegmentType

Returns the type of the segment.

Functions

Link copied to clipboard
open fun adaptivePositions(distanceTolerance: Double = 0.5): List<Vector3>

Recursively subdivides Segment2D to approximate Bézier curve.

Link copied to clipboard
open fun adaptivePositionsWithT(distanceTolerance: Double = 0.5): List<Pair<Vector3, Double>>
Link copied to clipboard
fun copy(start: Vector3 = this.start, control: List<Vector3> = this.control, end: Vector3 = this.end): Segment3D
Link copied to clipboard
open override fun curvature(t: Double): Double
Link copied to clipboard
open override fun derivative(t: Double): Vector3
Link copied to clipboard
open override fun derivative2(t: Double): Vector3
Link copied to clipboard
open fun direction(): Vector3

Returns the direction T of between the Segment2D anchor points.

open fun direction(t: Double): Vector3
Link copied to clipboard
open operator override fun equals(other: Any?): Boolean
Link copied to clipboard
open fun equidistantPositions(pointCount: Int, distanceTolerance: Double = 0.5): List<Vector3>

Samples specified amount of points on the Segment2D.

Link copied to clipboard
open fun equidistantPositionsWithT(pointCount: Int, distanceTolerance: Double = 0.5): List<Pair<Vector3, Double>>
Link copied to clipboard

Computes the parameter values at which the extrema (minimums and maximums) occur for the given segment. This includes analyzing changes in direction for the x and y components of control points or derivatives, depending on the control size.

Link copied to clipboard

Computes the points in 3D space where the extrema (minimums and maximums) occur for the given 3D segment. These extrema correspond to parameter values derived from the segment's control points or derivatives and are transformed into their respective positions in 3D space.

Link copied to clipboard
open override fun hashCode(): Int
Link copied to clipboard
fun lut(size: Int = 100): List<Vector3>
Link copied to clipboard
fun on(point: Vector3, error: Double = 5.0): Double?
Link copied to clipboard
open fun pointAtLength(length: Double, distanceTolerance: Double): Vector3

Calculates the point at a given distance along this Segment2D.

Link copied to clipboard
open override fun position(ut: Double): Vector3

Returns a point on the segment.

Link copied to clipboard

Projects a given point onto the segment, calculating the closest position on the segment and its associated properties such as projection parameter, distance, and position.

Link copied to clipboard
open override fun split(t: Double): Array<Segment3D>

Split the contour

Link copied to clipboard
open fun sub(t0: Double, t1: Double): BezierSegment<Vector3>

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

Link copied to clipboard
open override fun tForLength(length: Double): Double

Estimate t value for a given length

Link copied to clipboard
open override fun toString(): String
Link copied to clipboard
fun transform(transform: Matrix44): Segment3D

Applies a transformation matrix to the segment, transforming its start, end, and control points, and returns a new transformed segment.