+// ATCProjection.hxx - A convienience projection class for the ATC/AI system.
+//
+// Written by David Luff, started 2002.
+//
+// Copyright (C) 2002 David C Luff - david.luff@nottingham.ac.uk
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License as
+// published by the Free Software Foundation; either version 2 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful, but
+// WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
#ifndef _FG_ATC_PROJECTION_HXX
#define _FG_ATC_PROJECTION_HXX
public:
FGATCProjection();
+ FGATCProjection(const Point3D& centre);
~FGATCProjection();
- void Init(Point3D centre);
+ void Init(const Point3D& centre);
- // Convert a lat/lon co-ordinate to the local projection
- Point3D ConvertToLocal(Point3D pt);
+ // Convert a lat/lon co-ordinate (degrees) to the local projection (meters)
+ Point3D ConvertToLocal(const Point3D& pt);
- // Convert a local projection co-ordinate to lat/lon
- Point3D ConvertFromLocal(Point3D pt);
+ // Convert a local projection co-ordinate (meters) to lat/lon (degrees)
+ Point3D ConvertFromLocal(const Point3D& pt);
private:
- Point3D origin; // lat/lon of local area origin
- double correction_factor; // Reduction in surface distance per degree of longitude due to latitude. Saves having to do a cos() every call.
+ Point3D _origin; // lat/lon of local area origin
+ double _correction_factor; // Reduction in surface distance per degree of longitude due to latitude. Saves having to do a cos() every call.
};
public:
FGATCAlignedProjection();
+ FGATCAlignedProjection(const Point3D& centre, double heading);
~FGATCAlignedProjection();
- void Init(Point3D centre, double heading);
+ void Init(const Point3D& centre, double heading);
- // Convert a lat/lon co-ordinate to the local projection
- Point3D ConvertToLocal(Point3D pt);
+ // Convert a lat/lon co-ordinate (degrees) to the local projection (meters)
+ Point3D ConvertToLocal(const Point3D& pt);
- // Convert a local projection co-ordinate to lat/lon
- Point3D ConvertFromLocal(Point3D pt);
+ // Convert a local projection co-ordinate (meters) to lat/lon (degrees)
+ Point3D ConvertFromLocal(const Point3D& pt);
private:
- Point3D origin; // lat/lon of local area origin (the threshold)
- double theta; // the rotation angle for alignment in radians
- double correction_factor; // Reduction in surface distance per degree of longitude due to latitude. Saves having to do a cos() every call.
+ Point3D _origin; // lat/lon of local area origin (the threshold)
+ double _theta; // the rotation angle for alignment in radians
+ double _correction_factor; // Reduction in surface distance per degree of longitude due to latitude. Saves having to do a cos() every call.
};