Сферические координаты представлены как:
r
: радиус, который является расстоянием стриха от начала координат. φ
: угол наклона или полярный угол, который равен угол от вертикальной оси Z. θ
: азимут или азимутальный угол, который является углом проецируемой точки в плоскость XY от оси X.
ПРИМЕЧАНИЕ1: в Physichs греческие буквы, используемые для обозначения обоих углов, меняются местами, но я буду использовать это обозначение, так как оно похоже на то, которое вы используете на основе ваших формул.
ПРИМЕЧАНИЕ2: существует другой способ выражения наклона, называемый высотой, который измеряется от плоскости XY. elevation = 90° - φ
.
ПРИМЕЧАНИЕ3: в географии, высота называется широтой, а азимут называется долготой.
Разница с декартовыми координатами, где каждая точка имеет Единственное представление, состоит в том, что одна и та же точка может быть представлена различными способами в сферических координатах. Следующие преобразования создают новые точки P2 = {r2, φ2, θ2}
с разными значениями от исходных точек P1 = {r1, φ1, θ1}
, но обе они являются одной и той же точкой (P2 == P1
), несмотря на разные значения.
/ r2 = r1 / r2 = - r1
| φ2 = φ1 | φ2 = 180° - φ1
\ θ2 = θ1 + 360° \ θ2 = θ1 + 180°
решение? Нормализация сферических координат. Наиболее распространенная система нормализации использует только положительные значения радиуса и ограничивает углы 180 ° и 360 °:
/ 0 <= r < inf
| 0° <= φ <= 180° -> which means -90° <= elevation <= 90°
\ 0° <= θ < 360°
Причина, по которой наклон ограничен 180 °, заключается в том, что более высокий наклон может быть достигнут вращением На 180 градусов дополнительно по азимутальному углу и с наклоном ниже 180 °.
Итак, чтобы иметь возможность сравнивать значения и проверять, совпадают ли они с одной точкой, сначала необходимо выполнить нормализацию. Выполните следующие шаги:
- Если
r = 0
: вернуть {0, 0°, 0°}
(если радиус равен нулю, углы ничего не меняют, поэтому возвращают углы 0 °) - Если
r < 0
: r = -r
, φ = 180° - φ
и θ += 180°
- Пока
φ >= 360°
: φ -= 360°
- Пока
φ < 0°
: φ += 360°
- Если
φ = 0°
или φ = 180°
: возврат {r, φ, 0°}
(если наклон нулевой или 180 °, точка находится на вертикальной оси Z, поэтому азимут ничего не значит, используйте 0 °) - Если
φ > 180°
: φ = 360° - φ
и θ += 180°
- При
θ >= 360°
: θ -= 360°
- При
θ < 0°
: θ += 360°
- Возврат
{r, φ, θ}
В географии долгота иногда нормализуется до -180° < θ <= 180°
, что изменило бы шаги 7 и 8 на:
Пока
θ > 180°
:
θ -= 360°
Пока
θ <= -180°
:
θ += 360°
Здесь у вас есть ссылка Playground с добавленными классами с методами нормализации и преобразования для Cartesian
, Spherical
и Geograpical
(a Spherical
, но он создан из и печатает широту и долготу вместо наклона и азимута).