Spec-Zone.ru › Kotlin 2

atan2

kotlin-stdlib/kotlin.math/atan2

Требования к платформе и версии: Общая (1.2), Wasm-JS (1.8), Wasm-WASI (1.8)

expect fun atan2(y: Double, x: Double): Double

Возвращает угол theta полярных координат (r, theta), соответствующих прямоугольным координатам (x, y), вычисляя арктангенс значения y / x; возвращаемое значение — угол в диапазоне от -PI до PI радиан.

Другими словами, эта функция возвращает угол в радианах между положительным направлением оси x и лучом из начала координат ((0, 0)) к точке (x, y), ограниченный интервалом (-π, π].

Компонент r (расстояние) полярных координат (r, theta) можно вычислить как hypot(x, y).

Особые случаи:

  • atan2(0.0, 0.0) — это 0.0

  • atan2(0.0, x) — это 0.0 для x > 0 и PI для x < 0

  • atan2(-0.0, x) — это -0.0 для x > 0 и -PI для x < 0

  • atan2(y, +Inf) — это 0.0 для 0 < y < +Inf и -0.0 для -Inf < y < 0

  • atan2(y, -Inf) — это PI для 0 < y < +Inf и -PI для -Inf < y < 0

  • atan2(y, 0.0) — это PI/2 для y > 0 и -PI/2 для y < 0

  • atan2(+Inf, x) — это PI/2 для конечного x

  • atan2(-Inf, x) — это -PI/2 для конечного x

  • atan2(NaN, x) и atan2(y, NaN) — это NaN

См. также

hypot

функция.

Примеры

import kotlin.math.*
import kotlin.test.*

fun main() { 
   //sampleStart 
   val epsilon = 1e-10
fun Double.toDegrees(): Double = this * 180.0 / PI

println(atan2(y = 0.0, x = 0.0)) // 0.0

// Results may not be exact, so we're only checking that they are within epsilon from the expected value
println("(atan2(y = 1.0, x = 0.0) - PI / 2).absoluteValue < epsilon is ${(atan2(y = 1.0, x = 0.0) - PI / 2).absoluteValue < epsilon}") // true
println(atan2(y = 1.0, x = 0.0).toDegrees()) // 90.0

println("(atan2(y = 0.0, x = -1.0) - PI).absoluteValue < epsilon is ${(atan2(y = 0.0, x = -1.0) - PI).absoluteValue < epsilon}") // true
println(atan2(y = 0.0, x = -1.0).toDegrees()) // 180.0

println("(atan2(y = -1.0, x = 0.0) - (-PI / 2)).absoluteValue < epsilon is ${(atan2(y = -1.0, x = 0.0) - (-PI / 2)).absoluteValue < epsilon}") // true
println(atan2(y = -1.0, x = 0.0).toDegrees()) // -90.0

// special cases (some of them)
println(atan2(y = Double.NaN, x = 0.5)) // NaN
println(atan2(y = 0.5, x = Double.NaN)) // NaN
println(atan2(y = -0.0, x = 100500.0)) // -0.0
println(atan2(y = 0.0, x = Double.POSITIVE_INFINITY)) // 0.0
println(atan2(y = Double.POSITIVE_INFINITY, x = 100500.0).toDegrees()) // 90.0 
   //sampleEnd
}

expect fun atan2(y: Float, x: Float): Float

Возвращает угол theta полярных координат (r, theta), соответствующих прямоугольным координатам (x, y), вычисляя арктангенс значения y / x; возвращаемое значение — угол в диапазоне от -PI до PI радиан.

Другими словами, эта функция возвращает угол в радианах между положительным направлением оси x и лучом из начала координат ((0, 0)) к точке (x, y), ограниченный интервалом (-π, π].

Компонент r (расстояние) полярных координат (r, theta) можно вычислить как hypot(x, y).

Особые случаи:

  • atan2(0.0, 0.0) — это 0.0

  • atan2(0.0, x) — это 0.0 для x > 0 и PI для x < 0

  • atan2(-0.0, x) — это -0.0 для x > 0 и -PI для x < 0

  • atan2(y, +Inf) — это 0.0 для 0 < y < +Inf и -0.0 для -Inf < y < 0

  • atan2(y, -Inf) — это PI для 0 < y < +Inf и -PI для -Inf < y < 0

  • atan2(y, 0.0) — это PI/2 для y > 0 и -PI/2 для y < 0

  • atan2(+Inf, x) — это PI/2 для конечного x

  • atan2(-Inf, x) — это -PI/2 для конечного x

  • atan2(NaN, x) и atan2(y, NaN) — это NaN

См. также

hypot

функция.

Примеры

import kotlin.math.*
import kotlin.test.*

fun main() { 
   //sampleStart 
   val epsilon = 1e-6f
fun Float.toDegrees(): Float = this * 180.0f / PI.toFloat()

println(atan2(y = 0.0f, x = 0.0f)) // 0.0

// Results may not be exact, so we're only checking that they are within epsilon from the expected value
println("(atan2(y = 1.0f, x = 0.0f) - PI.toFloat() / 2).absoluteValue < epsilon is ${(atan2(y = 1.0f, x = 0.0f) - PI.toFloat() / 2).absoluteValue < epsilon}") // true
println(atan2(y = 1.0f, x = 0.0f).toDegrees()) // 90.0

println("(atan2(y = 0.0f, x = -1.0f) - PI.toFloat()).absoluteValue < epsilon is ${(atan2(y = 0.0f, x = -1.0f) - PI.toFloat()).absoluteValue < epsilon}") // true
println(atan2(y = 0.0f, x = -1.0f).toDegrees()) // 180.0

println("(atan2(y = -1.0f, x = 0.0f) - (-PI.toFloat() / 2)).absoluteValue < epsilon is ${(atan2(y = -1.0f, x = 0.0f) - (-PI.toFloat() / 2)).absoluteValue < epsilon}") // true
println(atan2(y = -1.0f, x = 0.0f).toDegrees()) // -90.0

// special cases (some of them)
println(atan2(y = Float.NaN, x = 0.5f)) // NaN
println(atan2(y = 0.5f, x = Float.NaN)) // NaN
println(atan2(y = -0.0f, x = 100500.0f)) // -0.0
println(atan2(y = 0.0f, x = Float.POSITIVE_INFINITY)) // 0.0
println(atan2(y = Float.POSITIVE_INFINITY, x = 100500.0f).toDegrees()) // 90.0 
   //sampleEnd
}

Требования к платформе и версии: JS (1.2), JVM (1.2)

actual inline fun atan2(y: Double, x: Double): Double

Возвращает угол theta полярных координат (r, theta), соответствующих прямоугольным координатам (x, y), вычисляя арктангенс значения y / x; возвращаемое значение — угол в диапазоне от -PI до PI радиан.

Другими словами, эта функция возвращает угол в радианах между положительным направлением оси x и лучом из начала координат ((0, 0)) к точке (x, y), ограниченный интервалом (-π, π].

Компонент r (расстояние) полярных координат (r, theta) можно вычислить как hypot(x, y).

Особые случаи:

  • atan2(0.0, 0.0) — это 0.0

  • atan2(0.0, x) — это 0.0 для x > 0 и PI для x < 0

  • atan2(-0.0, x) — это -0.0 для x > 0 и -PI для x < 0

  • atan2(y, +Inf) — это 0.0 для 0 < y < +Inf и -0.0 для -Inf < y < 0

  • atan2(y, -Inf) — это PI для 0 < y < +Inf и -PI для -Inf < y < 0

  • atan2(y, 0.0) — это PI/2 для y > 0 и -PI/2 для y < 0

  • atan2(+Inf, x) — это PI/2 для конечного x

  • atan2(-Inf, x) — это -PI/2 для конечного x

  • atan2(NaN, x) и atan2(y, NaN) — это NaN

См. также

hypot

функция.

Примеры

import kotlin.math.*
import kotlin.test.*

fun main() { 
   //sampleStart 
   val epsilon = 1e-10
fun Double.toDegrees(): Double = this * 180.0 / PI

println(atan2(y = 0.0, x = 0.0)) // 0.0

// Results may not be exact, so we're only checking that they are within epsilon from the expected value
println("(atan2(y = 1.0, x = 0.0) - PI / 2).absoluteValue < epsilon is ${(atan2(y = 1.0, x = 0.0) - PI / 2).absoluteValue < epsilon}") // true
println(atan2(y = 1.0, x = 0.0).toDegrees()) // 90.0

println("(atan2(y = 0.0, x = -1.0) - PI).absoluteValue < epsilon is ${(atan2(y = 0.0, x = -1.0) - PI).absoluteValue < epsilon}") // true
println(atan2(y = 0.0, x = -1.0).toDegrees()) // 180.0

println("(atan2(y = -1.0, x = 0.0) - (-PI / 2)).absoluteValue < epsilon is ${(atan2(y = -1.0, x = 0.0) - (-PI / 2)).absoluteValue < epsilon}") // true
println(atan2(y = -1.0, x = 0.0).toDegrees()) // -90.0

// special cases (some of them)
println(atan2(y = Double.NaN, x = 0.5)) // NaN
println(atan2(y = 0.5, x = Double.NaN)) // NaN
println(atan2(y = -0.0, x = 100500.0)) // -0.0
println(atan2(y = 0.0, x = Double.POSITIVE_INFINITY)) // 0.0
println(atan2(y = Double.POSITIVE_INFINITY, x = 100500.0).toDegrees()) // 90.0 
   //sampleEnd
}

actual inline fun atan2(y: Float, x: Float): Float

Возвращает угол theta полярных координат (r, theta), соответствующих прямоугольным координатам (x, y), вычисляя арктангенс значения y / x; возвращаемое значение — угол в диапазоне от -PI до PI радиан.

Другими словами, эта функция возвращает угол в радианах между положительным направлением оси x и лучом из начала координат ((0, 0)) к точке (x, y), ограниченный интервалом (-π, π].

Компонент r (расстояние) полярных координат (r, theta) можно вычислить как hypot(x, y).

Особые случаи:

  • atan2(0.0, 0.0) — это 0.0

  • atan2(0.0, x) — это 0.0 для x > 0 и PI для x < 0

  • atan2(-0.0, x) — это -0.0 для x > 0 и -PI для x < 0

  • atan2(y, +Inf) — это 0.0 для 0 < y < +Inf и -0.0 для -Inf < y < 0

  • atan2(y, -Inf) — это PI для 0 < y < +Inf и -PI для -Inf < y < 0

  • atan2(y, 0.0) — это PI/2 для y > 0 и -PI/2 для y < 0

  • atan2(+Inf, x) — это PI/2 для конечного x

  • atan2(-Inf, x) — это -PI/2 для конечного x

  • atan2(NaN, x) и atan2(y, NaN) — это NaN

См. также

hypot

функция.

Примеры

import kotlin.math.*
import kotlin.test.*

fun main() { 
   //sampleStart 
   val epsilon = 1e-6f
fun Float.toDegrees(): Float = this * 180.0f / PI.toFloat()

println(atan2(y = 0.0f, x = 0.0f)) // 0.0

// Results may not be exact, so we're only checking that they are within epsilon from the expected value
println("(atan2(y = 1.0f, x = 0.0f) - PI.toFloat() / 2).absoluteValue < epsilon is ${(atan2(y = 1.0f, x = 0.0f) - PI.toFloat() / 2).absoluteValue < epsilon}") // true
println(atan2(y = 1.0f, x = 0.0f).toDegrees()) // 90.0

println("(atan2(y = 0.0f, x = -1.0f) - PI.toFloat()).absoluteValue < epsilon is ${(atan2(y = 0.0f, x = -1.0f) - PI.toFloat()).absoluteValue < epsilon}") // true
println(atan2(y = 0.0f, x = -1.0f).toDegrees()) // 180.0

println("(atan2(y = -1.0f, x = 0.0f) - (-PI.toFloat() / 2)).absoluteValue < epsilon is ${(atan2(y = -1.0f, x = 0.0f) - (-PI.toFloat() / 2)).absoluteValue < epsilon}") // true
println(atan2(y = -1.0f, x = 0.0f).toDegrees()) // -90.0

// special cases (some of them)
println(atan2(y = Float.NaN, x = 0.5f)) // NaN
println(atan2(y = 0.5f, x = Float.NaN)) // NaN
println(atan2(y = -0.0f, x = 100500.0f)) // -0.0
println(atan2(y = 0.0f, x = Float.POSITIVE_INFINITY)) // 0.0
println(atan2(y = Float.POSITIVE_INFINITY, x = 100500.0f).toDegrees()) // 90.0 
   //sampleEnd
}

Требования к платформе и версии: Native (1.3)

actual external fun atan2(y: Double, x: Double): Double

Возвращает угол theta полярных координат (r, theta), соответствующих прямоугольным координатам (x, y), вычисляя арктангенс значения y / x; возвращаемое значение — угол в диапазоне от -PI до PI радиан.

Другими словами, эта функция возвращает угол в радианах между положительным направлением оси x и лучом из начала координат ((0, 0)) к точке (x, y), ограниченный интервалом (-π, π].

Компонент r (расстояние) полярных координат (r, theta) можно вычислить как hypot(x, y).

Особые случаи:

  • atan2(0.0, 0.0) — это 0.0

  • atan2(0.0, x) — это 0.0 для x > 0 и PI для x < 0

  • atan2(-0.0, x) — это -0.0 для x > 0 и -PI для x < 0

  • atan2(y, +Inf) — это 0.0 для 0 < y < +Inf и -0.0 для -Inf < y < 0

  • atan2(y, -Inf) — это PI для 0 < y < +Inf и -PI для -Inf < y < 0

  • atan2(y, 0.0) — это PI/2 для y > 0 и -PI/2 для y < 0

  • atan2(+Inf, x) — это PI/2 для конечного x

  • atan2(-Inf, x) — это -PI/2 для конечного x

  • atan2(NaN, x) и atan2(y, NaN) — это NaN

См. также

hypot

функция.

Примеры

import kotlin.math.*
import kotlin.test.*

fun main() { 
   //sampleStart 
   val epsilon = 1e-10
fun Double.toDegrees(): Double = this * 180.0 / PI

println(atan2(y = 0.0, x = 0.0)) // 0.0

// Results may not be exact, so we're only checking that they are within epsilon from the expected value
println("(atan2(y = 1.0, x = 0.0) - PI / 2).absoluteValue < epsilon is ${(atan2(y = 1.0, x = 0.0) - PI / 2).absoluteValue < epsilon}") // true
println(atan2(y = 1.0, x = 0.0).toDegrees()) // 90.0

println("(atan2(y = 0.0, x = -1.0) - PI).absoluteValue < epsilon is ${(atan2(y = 0.0, x = -1.0) - PI).absoluteValue < epsilon}") // true
println(atan2(y = 0.0, x = -1.0).toDegrees()) // 180.0

println("(atan2(y = -1.0, x = 0.0) - (-PI / 2)).absoluteValue < epsilon is ${(atan2(y = -1.0, x = 0.0) - (-PI / 2)).absoluteValue < epsilon}") // true
println(atan2(y = -1.0, x = 0.0).toDegrees()) // -90.0

// special cases (some of them)
println(atan2(y = Double.NaN, x = 0.5)) // NaN
println(atan2(y = 0.5, x = Double.NaN)) // NaN
println(atan2(y = -0.0, x = 100500.0)) // -0.0
println(atan2(y = 0.0, x = Double.POSITIVE_INFINITY)) // 0.0
println(atan2(y = Double.POSITIVE_INFINITY, x = 100500.0).toDegrees()) // 90.0 
   //sampleEnd
}

actual external fun atan2(y: Float, x: Float): Float

Возвращает угол theta полярных координат (r, theta), соответствующих прямоугольным координатам (x, y), вычисляя арктангенс значения y / x; возвращаемое значение — угол в диапазоне от -PI до PI радиан.

Другими словами, эта функция возвращает угол в радианах между положительным направлением оси x и лучом из начала координат ((0, 0)) к точке (x, y), ограниченный интервалом (-π, π].

Компонент r (расстояние) полярных координат (r, theta) можно вычислить как hypot(x, y).

Особые случаи:

  • atan2(0.0, 0.0) — это 0.0

  • atan2(0.0, x) — это 0.0 для x > 0 и PI для x < 0

  • atan2(-0.0, x) — это -0.0 для x > 0 и -PI для x < 0

  • atan2(y, +Inf) — это 0.0 для 0 < y < +Inf и -0.0 для -Inf < y < 0

  • atan2(y, -Inf) — это PI для 0 < y < +Inf и -PI для -Inf < y < 0

  • atan2(y, 0.0) — это PI/2 для y > 0 и -PI/2 для y < 0

  • atan2(+Inf, x) — это PI/2 для конечного x

  • atan2(-Inf, x) — это -PI/2 для конечного x

  • atan2(NaN, x) и atan2(y, NaN) — это NaN

См. также

hypot

функция.

Примеры

import kotlin.math.*
import kotlin.test.*

fun main() { 
   //sampleStart 
   val epsilon = 1e-6f
fun Float.toDegrees(): Float = this * 180.0f / PI.toFloat()

println(atan2(y = 0.0f, x = 0.0f)) // 0.0

// Results may not be exact, so we're only checking that they are within epsilon from the expected value
println("(atan2(y = 1.0f, x = 0.0f) - PI.toFloat() / 2).absoluteValue < epsilon is ${(atan2(y = 1.0f, x = 0.0f) - PI.toFloat() / 2).absoluteValue < epsilon}") // true
println(atan2(y = 1.0f, x = 0.0f).toDegrees()) // 90.0

println("(atan2(y = 0.0f, x = -1.0f) - PI.toFloat()).absoluteValue < epsilon is ${(atan2(y = 0.0f, x = -1.0f) - PI.toFloat()).absoluteValue < epsilon}") // true
println(atan2(y = 0.0f, x = -1.0f).toDegrees()) // 180.0

println("(atan2(y = -1.0f, x = 0.0f) - (-PI.toFloat() / 2)).absoluteValue < epsilon is ${(atan2(y = -1.0f, x = 0.0f) - (-PI.toFloat() / 2)).absoluteValue < epsilon}") // true
println(atan2(y = -1.0f, x = 0.0f).toDegrees()) // -90.0

// special cases (some of them)
println(atan2(y = Float.NaN, x = 0.5f)) // NaN
println(atan2(y = 0.5f, x = Float.NaN)) // NaN
println(atan2(y = -0.0f, x = 100500.0f)) // -0.0
println(atan2(y = 0.0f, x = Float.POSITIVE_INFINITY)) // 0.0
println(atan2(y = Float.POSITIVE_INFINITY, x = 100500.0f).toDegrees()) // 90.0 
   //sampleEnd
}

© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.math/atan2.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API