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++)
77 static constexpr int64_t INT_RANGE = 100000000000;
80 int64_t b(a / (360.0) * INT_RANGE);
87 else if (b >= INT_RANGE)
92 return b * (360.0) / INT_RANGE;
98 static constexpr int64_t INT_RANGE = 100000000000;
101 int64_t b(a / (360.0) * INT_RANGE);
104 if (b < -INT_RANGE / 2)
108 else if (b >= INT_RANGE / 2)
113 return b * (360.0) / INT_RANGE;
119 static constexpr int64_t INT_RANGE = 100000000000;
122 int64_t b(a / (2 * M_PI) * INT_RANGE);
129 else if (b >= INT_RANGE)
134 return b * (2 * M_PI) / INT_RANGE;
140 static constexpr int64_t INT_RANGE = 100000000000;
143 int64_t b(a / (2 * M_PI) * INT_RANGE);
146 if (b < -INT_RANGE / 2)
150 else if (b >= INT_RANGE / 2)
155 return b * (2 * M_PI) / INT_RANGE;
178 os <<
"(" << azim <<
", " << incl <<
") " << unit;
189 is.setstate(std::ios_base::failbit);
200 : m_azimuth(azimuth),
201 m_inclination(inclination)
207 : m_azimuth(std::atan2(v.y, v.
x)),
208 m_inclination(std::acos(v.z / v.GetLength()))
211 if (v.x == 0.0 && v.y == 0.0 && v.z == 0.0)
271 "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)
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.