56 #ifndef _GAMS_POSE_UTM_FRAME_H_
57 #define _GAMS_POSE_UTM_FRAME_H_
61 #include "CartesianFrame.h"
103 UTMFrame(
int zone = -1);
139 Position mk_loc(
double easting,
int zone,
double northing,
bool hemi);
143 static const int KM = 1000;
144 static const int ZONE_WIDTH = 1000 * KM;
145 static const int SOUTH_OFFSET = 10000 * KM;
146 static const int UPS_OFFSET = 4000 * KM;
147 static const int MAX_Y = 9600 * KM;
148 static const int MIN_Y = -9000 * KM;
150 static constexpr
int to_zone(
double x);
152 static constexpr
double to_easting(
double x);
154 static constexpr
bool to_hemi(
double y);
156 static constexpr
double to_northing(
double y);
158 static constexpr
double from_easting(
double e,
int zone);
160 static constexpr
double from_northing(
double n,
bool hemi);
162 static char nato_band(
double x,
double y);
169 virtual std::string get_name()
const;
177 virtual void transform_linear_to_origin(
178 double &x,
double &y,
double &z)
const;
186 virtual void transform_linear_from_origin(
187 double &x,
double &y,
double &z)
const;
197 double &rx,
double &ry,
double &rz)
const;
207 double &rx,
double &ry,
double &rz)
const;
223 double &x,
double &y,
double &z,
224 double &rx,
double &ry,
double &rz)
const;
240 double &x,
double &y,
double &z,
241 double &rx,
double &ry,
double &rz)
const;
252 virtual double calc_distance(
253 double x1,
double y1,
double z1,
254 double x2,
double y2,
double z2)
const;
263 virtual void do_normalize_linear(
264 double &x,
double &y,
double &z)
const;
278 virtual void do_normalize_pose(
279 double &x,
double &y,
double &z,
280 double &rx,
double &ry,
double &rz)
const;
285 friend class PositionVector;
290 #include "UTMFrame.inl"
void transform_angular_to_origin(const ReferenceFrameType *origin, const ReferenceFrameType *self, double orx, double ory, double orz, double &rx, double &ry, double &rz)
Transform AngularVector in-place into its origin frame from this frame.
void transform_pose_to_origin(const ReferenceFrameType *origin, const ReferenceFrameType *self, double ox, double oy, double oz, double orx, double ory, double orz, double &x, double &y, double &z, double &rx, double &ry, double &rz, bool fixed)
Transform pose in-place into its origin frame from this frame.
void transform_angular_from_origin(const ReferenceFrameType *origin, const ReferenceFrameType *self, double orx, double ory, double orz, double &rx, double &ry, double &rz)
Transform AngularVector in-place from its origin frame.
void transform_pose_from_origin(const ReferenceFrameType *origin, const ReferenceFrameType *self, double ox, double oy, double oz, double orx, double ory, double orz, double &x, double &y, double &z, double &rx, double &ry, double &rz, bool fixed)
Transform pose in-place from its origin frame Simply applies linear and angular transforms independan...
gams::pose::ReferenceFrame ReferenceFrame
Base class for Reference Frames.
Contains all GAMS-related tools, classes and code.
Copyright (c) 2015 Carnegie Mellon University.