mxlib
c++ tools for analyzing astronomical data and other tasks by Jared R. Males. [git repo]
|
Utilities for working with angles. More...
Utilities for working with angles.
Definition in file geo.hpp.
#include <vector>
#include <cmath>
#include "constants.hpp"
Go to the source code of this file.
Classes | |
struct | mx::math::degradT< degrees, _realT > |
Type holding constants related to angle calculations in degrees. More... | |
struct | mx::math::degradT< radians, _realT > |
Type holding constants related to angle calculations in radians. More... | |
Namespaces | |
namespace | mx |
The mxlib c++ namespace. | |
Macros | |
#define | semilatrect(a, e) ( e == 0.0 ? a : ( e == 1.0 ? 2. * a : ( e < 1. ? a * ( 1 - e * e ) : a * ( e * e - 1 ) ) ) ) |
Calculate the semi-latus rectum of a conic section | |
#define | focus(a, e) ( e == 0.0 ? 1e34 : ( e == 1.0 ? 2. * a : ( e < 1. ? a * ( 1 - e * e ) / e : a * ( e * e - 1 ) / e ) ) ) |
Calculate the focal parameter of a conic section | |
#define | semimaj(p, e) ( e == 1.0 ? 1e34 : ( e < 1 ? p * e / ( 1 - e * e ) : p * e / ( e * e - 1 ) ) ) |
#define | eccent(a, p) |
Functions | |
template<typename realT > | |
realT | mx::math::dtor (realT q) |
Convert from degrees to radians. | |
template<typename realT > | |
realT | mx::math::rtod (realT q) |
Convert from radians to degrees. | |
template<class angleT > | |
angleT::realT | mx::math::angleMod (typename angleT::realT q) |
Calculate the angle modulo full-circle, normalizing to a positive value. | |
template<class angleT > | |
angleT::realT | mx::math::angleDiff (typename angleT::realT q1, typename angleT::realT q2) |
Calculate the difference between two angles, correctly across 0/360. | |
template<class angleT > | |
angleT::realT | mx::math::angleMean (const std::vector< typename angleT::realT > &q) |
Calculate the mean of a set of angles, correctly across 0/360. | |
template<int degrad = 0, typename realT > | |
int | mx::math::continueAngles (std::vector< realT > &angles, realT threshold=0.75) |
Make a vector of angles continuous, fixing the 0/360 crossing. | |
template<typename realT > | |
void | mx::math::rotatePoint (realT &x0, realT &y0, realT angle) |
Rotate a point about the origin. | |