Angles

Simplifies the calls to angle-related functions such as angle wrapping, degree-radian conversions, rotation matrix representations.

Include the following at the top of any translation unit that uses geometry functions or classes.

#include <ecl/geometry/angle.hpp> using ecl::Angle; using ecl::wrap_angle;

You will also need to link to *-lecl_geometry*.

For those who prefer to use function based libraries, the ecl::wrap_angle function can be used to operate on simple float types.

double angle = wrap_angle(3.33);

For conversions:

double rads = radians_to_degrees(1.44); double degrees = degrees_to_radians(rads);

The angle class is a convenience class that automates storage and angle wrapping for you. It uses by default, radians (which any good engineer/mathematician should default to!). Take this into consideration if using it where speed is of the essence. That is, don't use Angle and then do all your calculations in degrees - there will be alot of copying!

Angle<double> a(3.33); // automatically wraps on -pi:pi double degrees = a.degrees(); Angle<double> b = a + 3.24; // again, will automatically wrap the answer. Angle<double>::RotationMatrix matrix = a.rotationMatrix(); // currently using a 2d eigen matrix.