56 std::vector<double> radians;
57 radians.reserve (degrees.size ());
58 for (
size_t i = 0; i < degrees.size (); i++)
70 std::vector<double> degrees;
71 degrees.reserve (radians.size ());
72 for (
size_t i = 0; i < radians.size (); i++)
97 a = fmod (a + 180, 360);
104 NS_ASSERT_MSG (-180 <= a && a < 180,
"Invalid wrap, a=" << a);
112 a = fmod (a, 2 * M_PI);
118 NS_ASSERT_MSG (0 <= a && a < 2 * M_PI,
"Invalid wrap, a=" << a);
126 a = fmod (a + M_PI, 2 * M_PI);
133 NS_ASSERT_MSG (-M_PI <= a && a < M_PI,
"Invalid wrap, a=" << a);
157 os <<
"(" << azim <<
", " << incl <<
") " << unit;
168 is.setstate (std::ios_base::failbit);
180 : m_azimuth (azimuth),
181 m_inclination (inclination)
188 : m_azimuth (std::atan2 (v.y, v.
x)),
189 m_inclination (std::acos (v.z / v.GetLength ()))
192 if (v.x == 0.0 && v.y == 0.0 && v.z == 0.0)
258 "m_inclination=" <<
m_inclination <<
" not valid, should be in [0, pi] rad");
Class holding the azimuth and inclination angles of spherical coordinates.
double GetInclination(void) const
Getter for inclination angle.
double m_inclination
the inclination angle in radians
void NormalizeAngles(void)
Normalize the angle azimuth angle range between in [-M_PI, M_PI) while checking if the angle is valid...
void CheckIfValid(void) const
Check if Angle is valid or not Warns the user if the Angle is undefined (non-finite azimuth or inclin...
double GetAzimuth(void) const
Getter for azimuth 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
#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)
double WrapTo180(double a)
Wrap angle in [-180, 180)
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
std::istream & operator>>(std::istream &is, Angles &a)
std::ostream & operator<<(std::ostream &os, const Angles &a)
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.
list x
Random number samples.