53 std::vector<double> radians;
54 radians.reserve(degrees.size());
55 for (
size_t i = 0; i < degrees.size(); i++)
65 std::vector<double> degrees;
66 degrees.reserve(radians.size());
67 for (
size_t i = 0; i < radians.size(); i++)
90 a = fmod(a + 180, 360);
104 a = fmod(a, 2 * M_PI);
110 NS_ASSERT_MSG(0 <= a && a < 2 * M_PI,
"Invalid wrap, a=" << a);
117 a = fmod(a + M_PI, 2 * M_PI);
124 NS_ASSERT_MSG(-M_PI <= a && a < M_PI,
"Invalid wrap, a=" << a);
148 os <<
"(" << azim <<
", " << incl <<
") " << unit;
159 is.setstate(std::ios_base::failbit);
170 : m_azimuth(azimuth),
171 m_inclination(inclination)
177 : m_azimuth(
std::atan2(v.y, v.x)),
178 m_inclination(
std::acos(v.z / v.GetLength()))
181 if (v.x == 0.0 && v.y == 0.0 && v.z == 0.0)
241 "m_inclination=" <<
m_inclination <<
" not valid, should be in [0, pi] rad");
Class holding the azimuth and inclination angles of spherical coordinates.
void NormalizeAngles()
Normalize the angle azimuth angle range between in [-M_PI, M_PI) while checking if the angle is valid...
double m_inclination
the inclination angle in radians
double GetInclination() const
Getter for inclination angle.
static bool m_printDeg
flag for printing in radians or degrees units
void SetAzimuth(double azimuth)
Setter for azimuth angle.
Angles()
Default constructor is disabled.
void SetInclination(double inclination)
Setter for inclination angle.
double m_azimuth
the azimuth angle in radians
double GetAzimuth() const
Getter for azimuth angle.
void CheckIfValid() const
Check if Angle is valid or not Warns the user if the Angle is undefined (non-finite azimuth or inclin...
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
#define NS_LOG_WARN(msg)
Use NS_LOG to output a message of level LOG_WARN.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
double WrapToPi(double a)
Wrap angle in [-M_PI, M_PI)
std::ostream & operator<<(std::ostream &os, const Angles &a)
double WrapTo180(double a)
Wrap angle in [-180, 180)
std::istream & operator>>(std::istream &is, Angles &a)
const double DEG_TO_RAD
Degrees to Radians conversion constant.
double WrapTo360(double a)
Wrap angle in [0, 360)
double DegreesToRadians(double degrees)
converts degrees to radians
double WrapTo2Pi(double a)
Wrap angle in [0, 2*M_PI)
double RadiansToDegrees(double radians)
converts radians to degrees
const double RAD_TO_DEG
Radians to Degrees conversion constant.