Skip to content

atan2(y, x)

Описание

Функция atan2() вычисляет арктангенс отношения y/x в радианах, учитывая знаки обоих аргументов для определения квадранта результата.

Параметры

  • y: Column - координата y (противолежащий катет)
  • x: Column - координата x (прилежащий катет)

Возвращаемое значение

Column - угол в радианах в диапазоне [-π, π]

Пример использования

from pyspark.sql.functions import atan2, degrees, lit
from pyspark.sql import SparkSession

# Создаем SparkSession
spark = SparkSession.builder.appName("atan2_example").getOrCreate()

# Создаем DataFrame с координатами
data = [
    (1.0, 1.0),    # 45 градусов
    (1.0, -1.0),   # 135 градусов
    (-1.0, -1.0),  # -135 градусов
    (-1.0, 1.0),   # -45 градусов
    (0.0, 1.0),    # 90 градусов
    (1.0, 0.0)     # 0 градусов
]
df = spark.createDataFrame(data, ["y", "x"])

# Вычисляем угол в радианах и градусах
df = df.withColumn("angle_rad", atan2("y", "x")) \
       .withColumn("angle_deg", degrees(atan2("y", "x")))
df.show(truncate=False)

# Результат:
# +---+---+-------------------+-------------------+
# |y  |x  |angle_rad          |angle_deg          |
# +---+---+-------------------+-------------------+
# |1.0|1.0|0.7853981633974483|45.0               |
# |1.0|-1.0|2.356194490192345 |135.0              |
# |-1.0|-1.0|-2.356194490192345|-135.0             |
# |-1.0|1.0|-0.7853981633974483|-45.0              |
# |0.0|1.0|1.5707963267948966|90.0               |
# |1.0|0.0|0.0               |0.0                |
# +---+---+-------------------+-------------------+

Примечания

  • Возвращает NULL, если любой из аргументов NULL
  • Результат находится в диапазоне [-π, π]
  • Учитывает знаки обоих аргументов для определения квадранта
  • Полезно для:
  • Преобразования декартовых координат в полярные
  • Вычисления углов в геометрических задачах
  • Определения направления вектора
  • Для преобразования радианов в градусы используйте degrees()
  • Для вычисления обычного арктангенса используйте atan()