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

commonMain.ru.casperix.math.curve.float32.Circle2f.kt Maven / Gradle / Ivy

package ru.casperix.math.curve.float32

import ru.casperix.math.polar.float32.PolarCoordinateFloat
import ru.casperix.math.angle.float32.RadianFloat
import ru.casperix.math.geometry.fPI2
import ru.casperix.math.vector.float32.Vector2f
import kotlinx.serialization.Serializable

/**
 * arc from startAngle to finishAngle (counter-clock-wise)
 */
@Serializable
data class Circle2f(val center: Vector2f, val range: Float) : ParametricCurve2f {
    override fun divide(t: Float): Pair {
        return Pair(this, this)
    }

    override fun getPosition(t: Float): Vector2f {
        val angle = fPI2 * t
        return center + PolarCoordinateFloat.byRadian(range, angle).toDecart()
    }

    override fun length(): Float {
        return fPI2 * range
    }


    fun getParameterByPoint(point: Vector2f): Float {
        val angle = RadianFloat.byDirection(point - center).value
        return angle / fPI2
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy