Echo:
Это оператор не функция Нет возвращаемого значения
Не требуется скобки
Не печатать массив
Печать
Реальная функция
Тип возврата 1
Требуется скобки
Не печатать массив
Print_r
Печать в удобочитаемом формате
Строка не в кавычках
Не детализированная информация о переменной типа типа и всех
var_dump
Вся информация о дампе переменной типа типа и подэлемента
Если ваши два угла - x и y, то один из углов между ними - abs ( х - у). Другой угол равен (2 * PI) - абс (x - y). Таким образом, значение наименьшего из двух углов:
min((2 * PI) - abs(x - y), abs(x - y))
Это дает вам абсолютное значение угла и предполагает, что входные данные нормализованы (то есть: в диапазоне [0, 2π)
) .
Если вы хотите сохранить знак (т.е. направление) угла, а также принять углы за пределами диапазона [0, 2π)
, вы можете обобщить вышеизложенное. Вот код Python для обобщенной версии:
PI = math.pi
TAU = 2*PI
def smallestSignedAngleBetween(x, y):
a = (x - y) % TAU
b = (y - x) % TAU
return -a if a < b else b
Обратите внимание, что оператор %
не ведет себя одинаково на всех языках, особенно при использовании отрицательных значений, поэтому при переносе может потребоваться некоторая корректировка знаков.
x - целевой угол. y - источник или начальный угол:
atan2(sin(x-y), cos(x-y))
- возвращает подписанный угол дельты. Обратите внимание, что в зависимости от вашего API порядок параметров функции atan2() может быть разным.
.Я сталкиваюсь с проблемой предоставления подписанного ответа:
def f(x,y):
import math
return min(y-x, y-x+2*math.pi, y-x-2*math.pi, key=abs)