All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.ru.casperix.math.interpolation.Interpolate.kt Maven / Gradle / Ivy

package ru.casperix.math.interpolation

import ru.casperix.math.angle.float32.DegreeFloat
import ru.casperix.math.angle.float32.RadianFloat
import ru.casperix.math.angle.float64.DegreeDouble
import ru.casperix.math.angle.float64.RadianDouble
import ru.casperix.math.interpolation.float32.InterpolateFloatFunction
import ru.casperix.math.interpolation.float32.InterpolationFloat
import ru.casperix.math.interpolation.float32.linearInterpolatef
import ru.casperix.math.interpolation.float64.InterpolateDoubleFunction
import ru.casperix.math.interpolation.float64.InterpolationDouble
import ru.casperix.math.interpolation.float64.linearInterpolate
import ru.casperix.math.quaternion.float32.QuaternionFloat
import ru.casperix.math.quaternion.float64.QuaternionDouble
import ru.casperix.math.vector.float32.Vector2f
import ru.casperix.math.vector.float32.Vector3f
import ru.casperix.math.vector.float32.Vector4f
import ru.casperix.math.vector.float64.Vector2d
import ru.casperix.math.vector.float64.Vector3d
import ru.casperix.math.vector.float64.Vector4d


fun interpolateOf(
    startAngle: ru.casperix.math.angle.float32.DegreeFloat,
    finishAngle: ru.casperix.math.angle.float32.DegreeFloat,
    position: Float,
    interpolator: InterpolateFloatFunction = linearInterpolatef
): ru.casperix.math.angle.float32.DegreeFloat {
    return InterpolationFloat.angle(startAngle.toRadian(), finishAngle.toRadian(), position, interpolator).toDegree()
}

fun interpolateOf(
    startAngle: DegreeDouble,
    finishAngle: DegreeDouble,
    position: Double,
    interpolator: InterpolateDoubleFunction = linearInterpolate
): DegreeDouble {
    return InterpolationDouble.angle(startAngle.toRadian(), finishAngle.toRadian(), position, interpolator).toDegree()
}


fun interpolateOf(
    startAngle: RadianFloat,
    finishAngle: RadianFloat,
    position: Float,
    interpolator: InterpolateFloatFunction = linearInterpolatef
): RadianFloat {
    return InterpolationFloat.angle(startAngle, finishAngle, position, interpolator)
}

fun interpolateOf(
    startAngle: RadianDouble,
    finishAngle: RadianDouble,
    position: Double,
    interpolator: InterpolateDoubleFunction = linearInterpolate
): RadianDouble {
    return InterpolationDouble.angle(startAngle, finishAngle, position, interpolator)
}


fun interpolateOf(first: Float, second: Float, t: Float, interpolator: InterpolateFloatFunction = linearInterpolatef): Float {
    return InterpolationFloat.single(first, second, t, interpolator)
}

fun interpolateOf(first: Double, second: Double, t: Double, interpolator: InterpolateDoubleFunction = linearInterpolate): Double {
    return InterpolationDouble.single(first, second, t, interpolator)
}

fun interpolateOf(first: Vector2f, second: Vector2f, t: Float, interpolator: InterpolateFloatFunction = linearInterpolatef): Vector2f {
    return InterpolationFloat.vector2(first, second, t, interpolator)
}

fun interpolateOf(first: Vector2d, second: Vector2d, t: Double, interpolator: InterpolateDoubleFunction = linearInterpolate): Vector2d {
    return InterpolationDouble.vector2(first, second, t, interpolator)
}

fun interpolateOf(first: Vector3f, second: Vector3f, t: Float, interpolator: InterpolateFloatFunction = linearInterpolatef): Vector3f {
    return InterpolationFloat.vector3(first, second, t, interpolator)
}

fun interpolateOf(first: Vector3d, second: Vector3d, t: Double, interpolator: InterpolateDoubleFunction = linearInterpolate): Vector3d {
    return InterpolationDouble.vector3(first, second, t, interpolator)
}

fun interpolateOf(first: Vector4f, second: Vector4f, t: Float, interpolator: InterpolateFloatFunction = linearInterpolatef): Vector4f {
    return InterpolationFloat.vector4(first, second, t, interpolator)
}

fun interpolateOf(first: Vector4d, second: Vector4d, t: Double, interpolator: InterpolateDoubleFunction = linearInterpolate): Vector4d {
    return InterpolationDouble.vector4(first, second, t, interpolator)
}

fun interpolateOf(q1: QuaternionFloat, q2: QuaternionFloat, factor: Float): QuaternionFloat {
    return InterpolationFloat.quaternion(q1, q2, factor)
}

fun interpolateOf(q1: QuaternionDouble, q2: QuaternionDouble, factor: Double): QuaternionDouble {
    return InterpolationDouble.quaternion(q1, q2, factor)
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy