From 68af57b759c59da9f314b4604a16af5c3a712f90 Mon Sep 17 00:00:00 2001 From: curt Date: Thu, 31 Jul 1997 22:52:27 +0000 Subject: [PATCH] Working on redoing internal coordinate systems & scenery transformations. --- Math/Makefile | 9 ++++++++- Math/depend | 2 ++ Math/polar.c | 23 +++++++++++++---------- Math/polar.h | 17 +++++++++++------ 4 files changed, 34 insertions(+), 17 deletions(-) diff --git a/Math/Makefile b/Math/Makefile index 1eb41076..05451fcf 100644 --- a/Math/Makefile +++ b/Math/Makefile @@ -26,7 +26,8 @@ TARGET = libMath.a -CFILES = MAT3geom.c MAT3inv.c MAT3mat.c MAT3vec.c fg_random.c polar.c +CFILES = MAT3geom.c MAT3inv.c MAT3mat.c MAT3vec.c fg_geodesy.c fg_random.c \ + polar.c OFILES = $(CFILES:.c=.o) @@ -68,6 +69,9 @@ MAT3mat.o: MAT3vec.o: $(CC) $(CFLAGS) -c $< -o $@ +fg_geodesy.o: + $(CC) $(CFLAGS) -c fg_geodesy.c -o $@ + fg_random.o: $(CC) $(CFLAGS) -c fg_random.c -o $@ @@ -77,6 +81,9 @@ polar.o: #--------------------------------------------------------------------------- # $Log$ +# Revision 1.12 1997/07/31 22:52:27 curt +# Working on redoing internal coordinate systems & scenery transformations. +# # Revision 1.11 1997/07/30 16:04:08 curt # Moved random routines from Utils/ to Math/ # diff --git a/Math/depend b/Math/depend index 8e14d515..73d6b373 100644 --- a/Math/depend +++ b/Math/depend @@ -2,5 +2,7 @@ MAT3geom.o: MAT3geom.c mat3defs.h mat3.h MAT3inv.o: MAT3inv.c mat3defs.h mat3.h MAT3mat.o: MAT3mat.c mat3defs.h mat3.h MAT3vec.o: MAT3vec.c mat3.h +fg_geodesy.o: fg_geodesy.c fg_geodesy.h ../constants.h fg_random.o: fg_random.c fg_random.h +geotest.o: geotest.c ../constants.h fg_geodesy.h polar.o: polar.c polar.h ../types.h ../constants.h diff --git a/Math/polar.c b/Math/polar.c index cbbed749..bcd9928a 100644 --- a/Math/polar.c +++ b/Math/polar.c @@ -35,15 +35,15 @@ static double st, ct, sp, cp; -/* Convert a geodetic coordinate to a cartesian coordinat on the unit - * circle, scaled by the radius of the earth in meters. Ignores Altitude, - * since this is just for translating points around on the surface. */ -struct fgCartesianPoint fgGeodetic2Cartesian(double lon, double lat) { +/* Convert a polar coordinate to a cartesian coordinate. Lon and Lat + * must be specified in radians. The FG convention is for distances + * to be specified in meters */ +struct fgCartesianPoint fgPolarToCart(double lon, double lat, double radius) { struct fgCartesianPoint pnew; - pnew.x = cos(lon) * cos(lat) * EARTH_RAD; - pnew.y = sin(lon) * cos(lat) * EARTH_RAD; - pnew.z = sin(lat) * EARTH_RAD; + pnew.x = cos(lon) * cos(lat) * radius; + pnew.y = sin(lon) * cos(lat) * radius; + pnew.z = sin(lat) * radius; return(pnew); } @@ -101,6 +101,9 @@ struct fgCartesianPoint fgRotateCartesianPoint(struct fgCartesianPoint p) { /* $Log$ -/* Revision 1.1 1997/07/07 21:02:36 curt -/* Initial revision. -/* */ +/* Revision 1.2 1997/07/31 22:52:27 curt +/* Working on redoing internal coordinate systems & scenery transformations. +/* + * Revision 1.1 1997/07/07 21:02:36 curt + * Initial revision. + * */ diff --git a/Math/polar.h b/Math/polar.h index 158d8353..5e805716 100644 --- a/Math/polar.h +++ b/Math/polar.h @@ -31,10 +31,11 @@ #include "../types.h" -/* Convert a geodetic coordinate to a cartesian coordinat on the unit - * circle, scaled by the radius of the earth in meters. Ignores Altitude, - * since this is just for translating points around on the surface. */ -struct fgCartesianPoint fgGeodetic2Cartesian(double lon, double lat); +/* Convert a polar coordinate to a cartesian coordinate. Lon and Lat + * must be specified in radians. The FG convention is for distances + * to be specified in meters */ +struct fgCartesianPoint fgPolarToCart(double lon, double lat, double radius); + /* Precalculate as much as possible so we can do a batch of transforms * through the same angles, will rotates a cartesian point about the @@ -52,6 +53,7 @@ struct fgCartesianPoint fgGeodetic2Cartesian(double lon, double lat); */ void fgRotateBatchInit(double Theta, double Phi); + /* Rotates a cartesian point about the center of the earth by Theta * (longitude axis) and Phi (latitude axis) */ struct fgCartesianPoint fgRotateCartesianPoint(struct fgCartesianPoint p); @@ -61,9 +63,12 @@ struct fgCartesianPoint fgRotateCartesianPoint(struct fgCartesianPoint p); /* $Log$ -/* Revision 1.2 1997/07/23 21:52:21 curt -/* Put comments around the text after an #endif for increased portability. +/* Revision 1.3 1997/07/31 22:52:28 curt +/* Working on redoing internal coordinate systems & scenery transformations. /* + * Revision 1.2 1997/07/23 21:52:21 curt + * Put comments around the text after an #endif for increased portability. + * * Revision 1.1 1997/07/07 21:02:37 curt * Initial revision. * -- 2.39.2