[r-cran-mapproj] 10/23: Import Upstream version 1.1-8.2
Andreas Tille
tille at debian.org
Fri Sep 8 08:03:06 UTC 2017
This is an automated email from the git hooks/post-receive script.
tille pushed a commit to branch master
in repository r-cran-mapproj.
commit 95b95dac7b0a74eebb2888a4e72395576c154bb9
Author: Andreas Tille <tille at debian.org>
Date: Fri Sep 8 09:58:10 2017 +0200
Import Upstream version 1.1-8.2
---
DESCRIPTION | 23 +-
LICENSE | 21 +
inst/LICENSE | 21 +
man/mapproject.Rd | 31 +-
src/aitoff.c | 12 +-
src/albers.c | 14 +-
src/azequalarea.c | 9 +-
src/azequidist.c | 9 +-
src/bicentric.c | 9 +-
src/bonne.c | 11 +-
src/ccubrt.c | 9 +-
src/complex.c | 14 +-
src/conic.c | 9 +-
src/cubrt.c | 9 +-
src/cuts.c | 22 +-
src/cylequalarea.c | 9 +-
src/cylindrical.c | 9 +-
src/doug/Makefile | 127 ----
src/doug/README | 158 -----
src/doug/ascii2map | 25 -
src/doug/ascii2map1.c | 192 ------
src/doug/ascii2map2.c | 106 ----
src/doug/ascii2map3.c | 55 --
src/doug/doc/Makefile | 16 -
src/doug/doc/ascii2map.1 | 60 --
src/doug/doc/ascii2map.1.ps | 258 --------
src/doug/doc/maint_record | 48 --
src/doug/doc/map.1 | 720 -----------------------
src/doug/doc/map.1.ps | 801 -------------------------
src/doug/doc/map.3 | 151 -----
src/doug/doc/map.3.ps | 396 -------------
src/doug/doc/map.5 | 89 ---
src/doug/doc/map.5.ps | 299 ----------
src/doug/doc/route.1 | 44 --
src/doug/doc/route.1.ps | 255 --------
src/doug/doc/tmac.anx | 18 -
src/doug/index.c | 96 ---
src/doug/iplot.h | 74 ---
src/doug/libmap/Makefile | 21 -
src/doug/libmap/aitoff.c | 31 -
src/doug/libmap/albers.c | 123 ----
src/doug/libmap/azequalarea.c | 24 -
src/doug/libmap/azequidist.c | 24 -
src/doug/libmap/bicentric.c | 30 -
src/doug/libmap/bonne.c | 41 --
src/doug/libmap/ccubrt.c | 18 -
src/doug/libmap/complex.c | 89 ---
src/doug/libmap/conic.c | 32 -
src/doug/libmap/cubrt.c | 35 --
src/doug/libmap/cuts.c | 44 --
src/doug/libmap/cylequalarea.c | 29 -
src/doug/libmap/cylindrical.c | 24 -
src/doug/libmap/eisenlohr.c | 24 -
src/doug/libmap/elco2.c | 137 -----
src/doug/libmap/elliptic.c | 42 --
src/doug/libmap/fisheye.c | 31 -
src/doug/libmap/gall.c | 34 --
src/doug/libmap/gilbert.c | 56 --
src/doug/libmap/guyou.c | 106 ----
src/doug/libmap/harrison.c | 45 --
src/doug/libmap/hex.c | 128 ----
src/doug/libmap/homing.c | 120 ----
src/doug/libmap/lagrange.c | 35 --
src/doug/libmap/lambert.c | 58 --
src/doug/libmap/laue.c | 29 -
src/doug/libmap/lune.c | 67 ---
src/doug/libmap/mercator.c | 41 --
src/doug/libmap/mollweide.c | 30 -
src/doug/libmap/newyorker.c | 33 --
src/doug/libmap/orthographic.c | 40 --
src/doug/libmap/perspective.c | 89 ---
src/doug/libmap/polyconic.c | 33 --
src/doug/libmap/rectangular.c | 27 -
src/doug/libmap/simpleconic.c | 39 --
src/doug/libmap/sinusoidal.c | 22 -
src/doug/libmap/tetra.c | 214 -------
src/doug/libmap/trapezoidal.c | 35 --
src/doug/libmap/twocirc.c | 85 ---
src/doug/libmap/zcoord.c | 149 -----
src/doug/map.c | 1265 ----------------------------------------
src/doug/map.h | 156 -----
src/doug/map.sh | 71 ---
src/doug/map.tar | Bin 849920 -> 0 bytes
src/doug/mapdata/counties | Bin 268024 -> 0 bytes
src/doug/mapdata/counties.x | 16 -
src/doug/mapdata/states | Bin 47340 -> 0 bytes
src/doug/mapdata/states.x | 16 -
src/doug/mapdata/world | Bin 246580 -> 0 bytes
src/doug/mapdata/world.x | 348 -----------
src/doug/plot.h | 53 --
src/doug/plot0.c | 8 -
src/doug/plotPS.c | 159 -----
src/doug/plotV.c | 37 --
src/doug/route.c | 107 ----
src/doug/symbol.c | 195 -------
src/doug/test.results | 86 ---
src/elco2.c | 9 +-
src/elliptic.c | 21 +-
src/fisheye.c | 9 +-
src/gall.c | 9 +-
src/gilbert.c | 12 +-
src/guyou.c | 9 +-
src/harrison.c | 9 +-
src/hex.c | 51 +-
src/homing.c | 21 +-
src/lagrange.c | 11 +-
src/lambert.c | 26 +-
src/laue.c | 9 +-
src/lune.c | 9 +-
src/map.h | 27 +-
src/mercator.c | 9 +-
src/mollweide.c | 9 +-
src/newyorker.c | 9 +-
src/orthographic.c | 11 +-
src/perspective.c | 21 +-
src/polyconic.c | 9 +-
src/rectangular.c | 9 +-
src/simpleconic.c | 9 +-
src/sinusoidal.c | 9 +-
src/tetra.c | 30 +-
src/trapezoidal.c | 9 +-
src/twocirc.c | 9 +-
src/zcoord.c | 36 +-
123 files changed, 267 insertions(+), 9204 deletions(-)
diff --git a/DESCRIPTION b/DESCRIPTION
index 51db9f5..159f204 100755
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,10 +1,13 @@
-Package: mapproj
-Title: Map Projections
-Version: 1.1-7.2
-Date: 2008-08-05
-Author: Doug McIlroy. Packaged for R by Ray Brownrigg and Thomas P Minka.
-Description: Converts latitude/longitude into projected coordinates.
-Depends: maps
-License: Distribution and use for non-commercial purposes only.
-Maintainer: Thomas P Minka <tpminka at media.mit.edu>
-Packaged: Tue Aug 5 14:09:54 2008; Lester
+Package: mapproj
+Title: Map Projections
+Version: 1.1-8.2
+Date: 2009-11-03
+Author: Doug McIlroy. Packaged for R by Ray Brownrigg and Thomas P
+ Minka, transition to Plan 9 codebase by Roger Bivand.
+Description: Converts latitude/longitude into projected coordinates.
+Depends: maps
+License: file LICENSE
+Maintainer: Thomas P Minka <tpminka at media.mit.edu>
+Packaged: 2009-11-03 09:36:59 UTC; rsb
+Repository: CRAN
+Date/Publication: 2009-11-03 09:47:43
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..884def3
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+1. C code
+
+Source code for maps and map projections, included in
+the Plan 9 distribution at: http://plan9.bell-labs.com/plan9/download.html
+(sys/src/cmd/map/), downloaded November 1, 2009 by Roger Bivand.
+
+Copyrighted and licensed by Lucent Technologies Inc., see
+http://plan9.bell-labs.com/plan9dist/license.html. All changes marked to
+satisfy requirement 3 C. The statement:
+
+Copyright (C) 2003, Lucent Technologies Inc. and others. All Rights Reserved.
+
+is included in file map.h to satisfy requirement 3 B.
+
+2. R interface:
+
+The R interface code has been developed as work based on the Lucent
+Public License Version 1.02 licensed code. It is made available under both
+the Plan 9 license and GPL (>= 2).
+
+
diff --git a/inst/LICENSE b/inst/LICENSE
new file mode 100644
index 0000000..884def3
--- /dev/null
+++ b/inst/LICENSE
@@ -0,0 +1,21 @@
+1. C code
+
+Source code for maps and map projections, included in
+the Plan 9 distribution at: http://plan9.bell-labs.com/plan9/download.html
+(sys/src/cmd/map/), downloaded November 1, 2009 by Roger Bivand.
+
+Copyrighted and licensed by Lucent Technologies Inc., see
+http://plan9.bell-labs.com/plan9dist/license.html. All changes marked to
+satisfy requirement 3 C. The statement:
+
+Copyright (C) 2003, Lucent Technologies Inc. and others. All Rights Reserved.
+
+is included in file map.h to satisfy requirement 3 B.
+
+2. R interface:
+
+The R interface code has been developed as work based on the Lucent
+Public License Version 1.02 licensed code. It is made available under both
+the Plan 9 license and GPL (>= 2).
+
+
diff --git a/man/mapproject.Rd b/man/mapproject.Rd
index f404e99..9291ff2 100755
--- a/man/mapproject.Rd
+++ b/man/mapproject.Rd
@@ -215,13 +215,15 @@ not make sense for tilted orientations.
\url{http://www.research.att.com/areas/stat/doc/93.2.ps}
M. D. McIlroy,
- documentation for
- from
+ Documentation from the
\emph{Tenth Edition UNIX Manual, Volume 1,}
Saunders College Publishing, 1990.
- M. D. McIlroy, Source code for maps and map projections.
- \url{http://www.cs.dartmouth.edu/~doug/source.html}
+ M. D. McIlroy, Source code for maps and map projections, included in
+the Plan 9 distribution at: \url{http://plan9.bell-labs.com/plan9/download.html}
+(sys/src/cmd/map/), downloaded November 1, 2009 by Roger Bivand.
+ %\url{http://plan9.bell-labs.com/plan9/download.html}
+ %\url{http://www.cs.dartmouth.edu/~doug/source.html}
%\url{http://cm.bell-labs.com/cs/who/doug/map.tar.gz}
}
\examples{
@@ -240,5 +242,26 @@ map("state",par=c(20,50)) # another Albers projection
map("world",proj="gnomonic",orient=c(0,-100,0)) # example of orient
# see map.grid for more examples
+
+# tests of projections added RSB 091101
+projlist <- c("aitoff", "albers", "azequalarea", "azequidist", "bicentric",
+ "bonne", "conic", "cylequalarea", "cylindrical", "eisenlohr", "elliptic",
+ "fisheye", "gall", "gilbert", "guyou", "harrison", "hex", "homing",
+ "lagrange", "lambert", "laue", "lune", "mercator", "mollweide", "newyorker",
+ "orthographic", "perspective", "polyconic", "rectangular", "simpleconic",
+ "sinusoidal", "tetra", "trapezoidal")
+x <- seq(-100, 0, 10)
+y <- seq(-45, 45, 10)
+xy <- expand.grid(x=x, y=y)
+pf <- c(0, 2, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 2, 0, 1, 0, 2, 0, 2,
+ 0, 0, 1, 0, 1, 0, 1, 2, 0, 0, 2)
+res <- vector(mode="list", length=length(projlist))
+for (i in seq(along=projlist)) {
+ if (pf[i] == 0) res[[i]] <- mapproject(xy$x, xy$y, projlist[i])
+ else if (pf[i] == 1) res[[i]] <- mapproject(xy$x, xy$y, projlist[i], 0)
+ else res[[i]] <- mapproject(xy$x, xy$y, projlist[i], c(0,0))
+}
+names(res) <- projlist
+lapply(res, function(p) rbind(p$x, p$y))
}
\keyword{dplot}
diff --git a/src/aitoff.c b/src/aitoff.c
index 467eb36..d75ebd9 100755
--- a/src/aitoff.c
+++ b/src/aitoff.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
#define Xaitwist Xaitpole.nlat
@@ -16,7 +11,8 @@ Xaitoff(struct place *place, double *x, double *y)
struct place p;
copyplace(place,&p);
p.wlon.l /= 2.;
- trig(&p.wlon);
+/* RSB sincos(&p.wlon);*/
+ trig(&p.wlon);
norm(&p,&Xaitpole,&Xaitwist);
Xazequalarea(&p,x,y);
*x *= 2.;
diff --git a/src/albers.c b/src/albers.c
index 795eae2..8ccc8e4 100755
--- a/src/albers.c
+++ b/src/albers.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h> */
#include "map.h"
/* For Albers formulas see Deetz and Adams "Elements of Map Projection", */
@@ -12,7 +7,7 @@ All rights reserved
static double r0sq, r1sq, d2, n, den, sinb1, sinb2;
static struct coord plat1, plat2;
-static int southpole;
+static southpole;
static double num(double s)
{
@@ -42,7 +37,7 @@ Xspalbers(struct place *place, double *x, double *y)
static proj albinit(double lat1, double lat2, double e2)
{
- double r1,r2;
+ double r1;
double t;
for(;;) {
if(lat1 < -90)
@@ -70,7 +65,6 @@ static proj albinit(double lat1, double lat2, double e2)
plat2.c*plat2.c/(1-e2*plat2.s*plat2.s)) /
(2*(1-e2)*den*(sinb2-sinb1));
r1 = plat1.c/(n*sqrt(1-e2*plat1.s*plat1.s));
- r2 = plat2.c/(n*sqrt(2-e2*plat2.s*plat2.s));
r1sq = r1*r1;
r0sq = r1sq + 2*(1-e2)*den*sinb1/n;
southpole = lat1<0 && plat2.c>plat1.c;
diff --git a/src/azequalarea.c b/src/azequalarea.c
index 02a852d..7ede453 100755
--- a/src/azequalarea.c
+++ b/src/azequalarea.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
int
diff --git a/src/azequidist.c b/src/azequidist.c
index ac868a3..0386725 100755
--- a/src/azequidist.c
+++ b/src/azequidist.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
int
diff --git a/src/bicentric.c b/src/bicentric.c
index 51a6c5c..b173e72 100755
--- a/src/bicentric.c
+++ b/src/bicentric.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
static struct coord center;
diff --git a/src/bonne.c b/src/bonne.c
index 396f5f6..a7d6797 100755
--- a/src/bonne.c
+++ b/src/bonne.c
@@ -1,16 +1,11 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
static struct coord stdpar;
static double r0;
-static int
+static int /* RSB */
Xbonne(struct place *place, double *x, double *y)
{
double r, alpha;
diff --git a/src/ccubrt.c b/src/ccubrt.c
index abe185b..5be5bc9 100755
--- a/src/ccubrt.c
+++ b/src/ccubrt.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
void
diff --git a/src/complex.c b/src/complex.c
index f3cf88b..a88677f 100755
--- a/src/complex.c
+++ b/src/complex.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
/*complex divide, defensive against overflow from
@@ -45,8 +40,8 @@ csq(double c1, double c2, double *e1, double *e2)
/* complex square root
* assumes underflow yields 0.0
* uses these identities:
- * sqrt(x+-iy) = sqrt(r(cos(t)+-i*sin(t))
- * = sqrt(r)(cos(t/2)+-i*sin(t/2))
+ * sqrt(x+_iy) = sqrt(r(cos(t)+_isin(t))
+ * = sqrt(r)(cos(t/2)+_isin(t/2))
* cos(t/2) = sin(t)/2sin(t/2) = sqrt((1+cos(t)/2)
* sin(t/2) = sin(t)/2cos(t/2) = sqrt((1-cos(t)/2)
*/
@@ -80,6 +75,7 @@ map_csqrt(double c1, double c2, double *e1, double *e2)
}
}
+
void map_cpow(double c1, double c2, double *d1, double *d2, double pwr)
{
double theta = pwr*atan2(c2,c1);
diff --git a/src/conic.c b/src/conic.c
index d6feee9..ac8e2d4 100755
--- a/src/conic.c
+++ b/src/conic.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
static struct coord stdpar;
diff --git a/src/cubrt.c b/src/cubrt.c
index 95543aa..9189628 100755
--- a/src/cubrt.c
+++ b/src/cubrt.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
double
diff --git a/src/cuts.c b/src/cuts.c
index 4c395e8..8ae05e1 100755
--- a/src/cuts.c
+++ b/src/cuts.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
extern void abort(void);
@@ -22,7 +17,7 @@ are included to make the libary self-standing.*/
int
picut(struct place *g, struct place *og, double *cutlon)
{
- g=g; og=og; cutlon=cutlon; /* avoid warnings */
+ g; og; cutlon;
abort();
return 0;
}
@@ -30,11 +25,19 @@ picut(struct place *g, struct place *og, double *cutlon)
int
ckcut(struct place *g1, struct place *g2, double lon)
{
- g1=g1; g2=g2; lon=lon;
+ g1; g2; lon;
abort();
return 0;
}
+/* RSB double
+reduce(double x)
+{
+ x;
+ abort();
+ return 0;
+}*/
+
/* minka: from map.c */
double
reduce(double lon)
@@ -45,3 +48,4 @@ reduce(double lon)
lon += 2*PI;
return(lon);
}
+
diff --git a/src/cylequalarea.c b/src/cylequalarea.c
index b1193ce..d5ce65a 100755
--- a/src/cylequalarea.c
+++ b/src/cylequalarea.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
static double a;
diff --git a/src/cylindrical.c b/src/cylindrical.c
index 5a2fe2f..3c79dc8 100755
--- a/src/cylindrical.c
+++ b/src/cylindrical.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
int
diff --git a/src/doug/Makefile b/src/doug/Makefile
deleted file mode 100755
index 3ba24d8..0000000
--- a/src/doug/Makefile
+++ /dev/null
@@ -1,127 +0,0 @@
-# /************************************************************
-#
-# Copyright (C) 1998, Lucent Technologies
-# All rights reserved
-#
-# ************************************************************/
-
-# local settings
-#
-# BIN where to install map.sh ("map" command)
-# LIB where to install libmap.a (ld ... -lmap)
-# MAPHOME director of files used by map command
-# PROG "map" in unix/linux; "map.exe" in cygwin
-#
-CFLAGS = -O -Wall
-CC=gcc
-BIN = /usr/bin
-LIB = /usr/lib
-MAPHOME = $(LIB)/map
-PROG = map
-
-# usage
-# make map command compiled for PostScript output
-# make PLOT=plotV for output to SVR2 and BSD plot filters
-# make PLOT=plot0 for output to v10 plot filters
-# make route see man page route.1
-
-
-PLOT=plotPS
-
-$(PROG): map.o index.o symbol.o $(PLOT).o libmap/libmap.a
- chmod +x map.sh
- $(CC) $(CFLAGS) -o $(PROG) -DMAPDIR=$(MAPDIR) \
- map.o index.o symbol.o $(PLOT).o \
- libmap/libmap.a -lm 2>/dev/null || \
- $(CC) $(CFLAGS) -o $(PROG) -DMAPDIR=$(MAPDIR) \
- map.o index.o symbol.o $(PLOT).o \
- libmap/libmap.a -lm -lplot
-
-map.o: map.c map.h plot.h
- $(CC) $(CFLAGS) -c $(CFLAGS) map.c
-
-plotV.o: plotV.c plot.h
- rm -f plot*.o
- $(CC) $(CFLAGS) -c plotV.c
-
-plotPS.o: plotPS.c plot.h
- rm -f plot*.o
- $(CC) $(CFLAGS) -c plotPS.c
-
-plot0.o: plot0.c
- rm -f plot*.o
- $(CC) $(CFLAGS) -c plot0.c
-
-symbol.o: symbol.c map.h
-
-index.o: index.c map.h
-
-route: route.o map.h libmap/libmap.a
- $(CC) $(CFLAGS) route.o libmap/libmap.a -lm -o route
-
-libmap/libmap.a: dummy
- cd libmap; make CC=$(CC) CFLAGS="$(CFLAGS)"
-
-dummy:
- :
-
-ascii2map: ascii2map1 ascii2map2 ascii2map3
- chmod +x ascii2map
-
-ascii2map1: ascii2map1.c
- $(CC) $(CFLAGS) ascii2map1.c -lm -o ascii2map1
-
-ascii2map2: ascii2map2.c
- $(CC) $(CFLAGS) ascii2map2.c -lm -o ascii2map2
-
-ascii2map3: ascii2map3.c
- $(CC) $(CFLAGS) ascii2map3.c -o ascii2map3
-
-map2ascii: map2ascii.c
- $(CC) $(CFLAGS) map2ascii.c -lm -o map2ascii
-
-install: $(PROG)
- -strip $(PROG)
- test -d $(MAPHOME) || mkdir $(MAPHOME)
- test -d $(MAPHOME)/bin || mkdir $(MAPHOME)/bin
- test -d $(MAPHOME)/lib || mkdir $(MAPHOME)/lib
- cp $(PROG) $(MAPHOME)/bin
- cp map.sh $(BIN)/map
- chmod +x $(BIN)/map
- test -f $(MAPHOME)/lib/world || cp mapdata/* $(MAPHOME)/lib
-
-installall: install route libmap/libmap.a
- strip route
- cp route $(BIN)
- cp libmap/libmap.a $(LIB)
-
-clean:
- rm -f $(PROG) route *.o new.results map.tar*
- cd libmap; make clean
-
-quicktest:
- make PLOT=plotPS
- MAPPROG=./$(PROG) MAPDIR=./mapdata ./map.sh mercator -l 0 10 0 10 -g -b >new.results
- :
- : If any "diff" output follows, it should show only roundoff differences.
- diff test.results new.results
-
-map.tar.gz: dummy
- cd doc; make
- for i in map.sh Makefile; \
- do mv $$i $$i.save; cp $$i.template $$i; \
- done
- tar cf map.tar \
- README Makefile map.sh test.results \
- map.h map.c index.c symbol.c \
- plot.h iplot.h plotPS.c plotV.c plot0.c \
- route.c ascii2map ascii2map[123].c \
- libmap/Makefile libmap/*.c \
- mapdata/world* mapdata/states* mapdata/counties* \
- doc/*
- for i in map.sh Makefile; \
- do mv $$i.save $$i; \
- done
- rm -f map.tar.gz
- gzip map.tar
- echo >/dev/null
diff --git a/src/doug/README b/src/doug/README
deleted file mode 100755
index ba3f10f..0000000
--- a/src/doug/README
+++ /dev/null
@@ -1,158 +0,0 @@
-# /************************************************************
-#
-# Copyright (C) 1998, Lucent Technologies
-# All rights reserved
-#
-# ************************************************************/
-#
-MATERIALS
-
-The source directory has three subdirectories:
- doc manual pages, maintenance record
- libmap source for projection subroutines
- mapdata World Data Bank I, etc.
-
-Manuals in doc are included in two forms.
- input for troff -man:
- map.1, map.3, map.5, route.1, mapfile.1
- PostScript:
- map.1.ps, ...
-
-A change history is in doc/maint_record.
-
-The source is written in ANSI C.
-
-QUICK TEST
-
-Check CFLAGS and CC in the Makefile and make them reflect your
-system's conventions.
-
-To see whether you can compile and compute, try this test, which
-makes "map", runs it on a small example, and checks the output:
-
- make quicktest
-
-DISPLAY PROGRAMS
-
-Map produces output usable by a display program (not included).
-Unfortunately there is no universal Unix standard for plotting.
-
-Here are ways to compile for some display programs.
-"make quicktest" does a default make; undo that with
-"make clean" before doing a nondefault make.
-
- make default, same as make PLOT=plotPS
-
- make PLOT=plotPS Output is PostScript.
- Maps are drawn in a 6.5-inch square centered
- 1 inch from the top of an 8.5x11 page.
- To change this convention, edit the PostScript
- or plotPS.c.
- One suitable plotting filter is ghostview,
- sometimes known as gv(1).
-
- make PLOT=plotV Output for Sys V or SunOS plotting filters
- described under plot(1) or tplot(1).
-
- make PLOT=plot0 For v10 research system plot(1), not
- compatible with System V.
-
- As map uses only simple plotting features, it is usually
- easy to interface to other plotting packages. See
- iplot.h for details.
-
-You can test map in the current directory in the following way,
-assuming a Bourne-derived shell (sh, ksh, bash, ash, ...) and
-the PostScript display program gv.
-For further tests, replace mercator by any argument list
-from EXAMPLES on the man page map(1).
-
- MAPDIR=./mapdata MAPPROG=./map map.sh mercator >junk.ps
- gv junk.ps
-
-INSTALLATION
-
-For real installation, do
-
- make install
-
-This puts the map shell script in /usr/bin and everything else in
-directory /usr/lib/map. If you want to put things elsewhere, adjust
-MAPHOME in map.sh and the local settings in Makefile.
-
-map.sh will become the command "map". Assuming it's in the
-shell search path after installation, and again assuming PostScript
-output, a map can be made and displayed thus:
-
- map mercator >junk.ps; gv junk.ps
-
-TROUBLESHOOTING
-
-Lost output
- If you lose the last bit of a map, read BUGS in map(1).
-
-Option problems
- Option -f needs World Data Bank II, which is not in
- this distribution, but can be fetched separately from
- the same place.
-
-Library problems
- At least one version of tplot has been seen to garble
- the output. In this case the trouble went away by
- compiling map with -l4014 instead of -lplot; see plot(3).
-
-ROUTE PROGRAM
-
-An auxiliary "route" program computes the great circle route
-between two points, and can output either
-
- 1. An orientation (option -o) that transforms the great
- circle to the equator, together with the coordinates
- of the transformed endpoints. A strip map extending
- lat degrees on either side of the great circle between
- the endpoints -lon and lon may be created thus:
- map mercator -o o1 o2 o3 -w -lat lat -lon lon
- Quantities obtained from "route" are the orientation
- arguments o1, o2, o3.
-
- 2. Coordinates for a track along the great circle,
- suitable for use with options -t and -u.
-
-The program can be made with
-
- make route
-
-MAPFILE PROGRAMS
-
-Programs for converting between ASCII and binary map data
-formats are described in the man page mapfile(1). They
-can be made with
-
- make mapfile
-
-
-REFERENCES
-
-Most standard texts on cartography discuss the major
-projections and their uses. A short introduction, with
-24 sample maps drawn by the "map" program itself and the
-commands to draw them, is
-
- Projections: Mapmakers' Answers to the Riddle of
- Presenting a Round Earth on Flat Paper
- by M. Douglas McIlroy
- Computing Science Technical Report 140, (1987)
-
- available from
- Computing Science Reports, Room 2C447
- Bell Labs
- 600 Mountain Avenue
- Murray Hill, NJ 07974
-
- [In this report, option -s is used in an obsolete way.
- It should be replaced by -s2, with -s1 added
- to the previous command.]
-
-Doug McIlroy
-doug at cs.dartmouth.edu
-
diff --git a/src/doug/ascii2map b/src/doug/ascii2map
deleted file mode 100755
index bf11323..0000000
--- a/src/doug/ascii2map
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/bin/sh
-
-# convert an ascii file on standard input containing geographic
-# line features (shorelines, rivers, political boundaries, etc)
-# into map(5) form usable by map(1)
-#
-# usage: ascii2map [-f] ofile
-#
-# input: sequence of segments, each made of
-# integer count (n)
-# n coordinate pairs, decimal degrees (lat N and lon W)
-#
-# two output files:
-# ofile the binary data
-# ofile.x ascii index to 10-degree patches in ofile
-#
-# option -f produces finer resolution
-
-if test ${1}x = "-fx"
-then F=-f; shift
-else F=
-fi
-
-./ascii2map1 $F | sort -n -k1 -k2 -k3 | ./ascii2map2 $F >$1
-./ascii2map3 <$1 >$1.x
diff --git a/src/doug/ascii2map1.c b/src/doug/ascii2map1.c
deleted file mode 100755
index 230ee5d..0000000
--- a/src/doug/ascii2map1.c
+++ /dev/null
@@ -1,192 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <math.h>
-#include <limits.h>
-
-/* convert an ascii file of lat-lon data to map(5) format,
-
- input: sequence of segments, each of which comprises
- integer count
- sequence of north-lat west-lon pairs
-
- first phase (mapfile1.c): make intermediate file
- intermediate data layout, one line per point:
- patchlat (-9 to 8) 10-degree patch in which
- patchlon (-18 to 17) segment starts
- point number sequential, with gap between segs
- scaled lat units of .0001 radian (6.4km, 4mi)
- scaled lon or .00001 radian (option -f)
-
- interphase: sort the intermediate file by patch and point number
-
- second phase (mapfile2.c): convert to map(5) binary
-
- warning: incomplete error checking.
-*/
-
-/* FIRST PHASE */
-
-#define RAD (M_PI/180)
-#define SCALE (10000*RAD)
-#define BIGSCALE (100000*RAD)
-#define NN SHRT_MAX /* max points/segment */
-#define N (NN-1000) /* same, before interpolation */
-
-int min(int,int);
-int max(int,int);
-int plat(int);
-int plon(int);
-int interpolate(int,int);
-double round(double);
-void output(int);
-void warn(char*);
-void error(char*);
-
-int point; /* sequence number */
-double lat[N];
-double lon[N];
-double scale = SCALE;
-
-int main(int argc, char **argv)
-{
- int i, j, n;
- int fflag = 0;
- if(argc>1 && strcmp(argv[1],"-f")==0) {
- fflag = 1;
- scale = BIGSCALE;
- }
- while(scanf("%d", &n) == 1) {
- i = 0;
- do {
- int m = min(n,N);
- n -= m;
- for( ; i<m; i++) {
- if(scanf("%lf %lf",lat+i,lon+i) != 2)
- error("input count error");
- if(fabs(lat[i]) > 90)
- error("latitude out of bounds");
- while(lon[i] < -180)
- lon[i] += 360;
- while(lon[i] > 180)
- lon[i] -= 360;
- }
- if(fflag) {
- for(j=0; j<m-1; j++) {
- int d = interpolate(j, m);
- j += d;
- m += d;
- }
- }
- do {
- for(j=2;j<m-1;j++)
- if(plat(j)!=plat(j-1) ||
- plon(j)!=plon(j-1))
- break;
- if(m < 3)
- j = m-1;
- output(j+1);
- memmove(lat,lat+j,(m-j)*sizeof(*lat));
- memmove(lon,lon+j,(m-j)*sizeof(*lon));
- m -= j;
- } while(m > 1);
- i = 1;
- } while(n > 1);
- }
- return 0;
-}
-
-/* find patch number, counted in 10-degree units */
-
-int plat(int i)
-{
- return min(floor(lat[i]/10),8);
-}
-
-int plon(int i)
-{
- return min(floor(lon[i]/10),17);
-}
-
-/* split large steps to fit in a char */
-
-#define DELTA (SCHAR_MAX-1) /* wiggle room for roundoff */
-
-int interpolate(int j, int n)
-{
- int m, mlat, mlon; /* number of substeps */
- int from, to;
- double dlat, dlon;
- double slat0 = round(lat[j]*scale);
- double slat1 = round(lat[j+1]*scale);
- double slon0 = round(lon[j]*scale);
- double slon1 = round(lon[j+1]*scale);
- int sdlat = abs(slat1-slat0);
- int sdlon = abs(slon1-slon0);
- if(sdlon > 180)
- sdlon -= 360; /* probably crossed dateline */
- mlat = (sdlat+DELTA-1)/DELTA;
- mlon = (sdlon+DELTA-1)/DELTA;
- m = max(mlat, mlon) - 1; /* # of extra points */
- if(m == 0)
- return 0;
- if(m >= 10)
- warn("long segment (> 10 substeps)");
- if(n+m > NN)
- error("too many interpolated points in segment");
- from = j + 1;
- to = j + m;
- memmove(lat+to,lat+from,(n-from)*sizeof(*lat));
- memmove(lon+to,lon+from,(n-from)*sizeof(*lon));
- dlat = lat[j+1] - lat[j];
- dlon = lon[j+1] - lon[j];
- while(j < m) {
- lat[j+1] = lat[j] + dlat;
- lon[j+1] = lon[j] + dlon;
- j++;
- }
- return m;
-}
-
-void output(int n)
-{
- int i;
- int plat0 = plat(n>1);
- int plon0 = plon(n>1);
- point++;
- for(i=0; i<n; i++) {
- printf("%d %d %d %d %d\n",plat0,plon0,point,
- (int)round(lat[i]*scale),
- (int)round(lon[i]*scale));
- point++;
- }
-}
-
-int min(int a, int b)
-{
- return a<=b? a: b;
-}
-
-int max(int a, int b)
-{
- return a>=b? a: b;
-}
-
-void warn(char *s)
-{
- fprintf(stderr,"ascii2map: %s\n", s);
-}
-
-void error(char *s)
-{
- warn(s);
- exit(1);
-}
-
-double round(double x)
-{
- if(x >= 0)
- return (int)(x+0.5);
- else
- return (int)(x-0.5);
-}
diff --git a/src/doug/ascii2map2.c b/src/doug/ascii2map2.c
deleted file mode 100755
index 6352ba9..0000000
--- a/src/doug/ascii2map2.c
+++ /dev/null
@@ -1,106 +0,0 @@
-#include <stdlib.h>
-#include <stdio.h>
-#include <math.h>
-#include <string.h>
-#include <limits.h>
-#include <unistd.h>
-
-/* convert an ascii file of lat-lon data to map(5) format,
-
- input: sequence of segments, each of which comprises
- integer count
- sequence of north-lat west-lon pairs
-
- first phase (mapfile1.c): make intermediate file
- intermediate data layout, one line per point:
- patchlat (-9 to 8) 10-degree patch in which
- patchlon (-18 to 17) segment starts
- point number sequential, with gap between segs
- scaled lat units of .0001 radian (6.4km, 4mi)
- scaled lon or .00001 radian (option -f)
-
- interphase: sort the intermediate file by patch and point number
-
- second phase (mapfile2.c): convert to map(5) binary
-
- warning: incomplete error checking.
-*/
-
-/* SECOND PHASE */
-
-#define N 32000 /* max points per segment (must fit in signed short) */
-
-
-void error(char*);
-void putshort(int);
-void output(int);
-
-int fflag = 0;
-
-int plat0, plon0;
-int ilat[N+1], ilon[N+1];
-
-int main(int argc, char**argv)
-{
- int n = 0;
- int point;
- int point0 = -1;
- int plat, plon;
- fflag = argc>1 && strcmp(argv[1],"-f")==0;
- plat0 = plon0 = INT_MIN;
- while(scanf("%d %d %d %d %d",
- &plat, &plon ,&point, ilat+n, ilon+n) == 5) {
- if(point != point0+1) {
- output(n);
- ilat[0] = ilat[n];
- ilon[0] = ilon[n];
- n = 1;
- } else
- n++;
- point0 = point;
- plat0 = plat;
- plon0 = plon;
- }
- output(n);
- return 0;
-}
-
-void output(int n)
-{
- int i;
- if(n == 0)
- return;
- putchar(plat0&0xff);
- putchar(plon0&0xff);
- if(fflag) {
- int ilat0 = ilat[0]/10;
- int ilon0 = ilon[0]/10;
- putshort(-n);
- putshort(ilat0);
- putshort(ilon0);
- putchar(ilat[0]-ilat0*10);
- putchar(ilon[0]-ilon0*10);
- for(i=1; i<n; i++) {
- putchar(ilat[i]-ilat[i-1]);
- putchar(ilon[i]-ilon[i-1]);
- }
- } else {
- putshort(n);
- for(i=0; i<n; i++) {
- putshort(ilat[i]);
- putshort(ilon[i]);
- }
- }
-}
-
-void error(char *s)
-{
- fprintf(stderr,"ascii2map2: %s\n", s);
- exit(1);
-}
-
-void putshort(int x)
-{
- putchar(x&0xff);
- putchar(x>>8&0xff);
-}
diff --git a/src/doug/ascii2map3.c b/src/doug/ascii2map3.c
deleted file mode 100755
index 512a0a0..0000000
--- a/src/doug/ascii2map3.c
+++ /dev/null
@@ -1,55 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-
-short getshort(void);
-void error(char*);
-
-int main()
-{
- int i,j, n;
- int oi = 127, oj = 127;
- long loc = 0;
- while((i=getchar()) != EOF) {
- j = getchar();
- n = getshort();
- if(i!= oi||j!=oj) {
- printf("%d %d %ld\n",(char)i,(char)j,loc);
- oi = i;
- oj = j;
- }
- loc += 4;
- if(n > 0) {
- while(--n >= 0) {
- getshort();
- getshort();
- loc += 4;
- }
- } else {
- getshort();
- getshort();
- loc += 4;
- while(++n <= 0) {
- getchar();
- getchar();
- loc += 2;
- }
- }
- }
- return 0;
-}
-
-short getshort(void)
-{
- int c = getchar();
- int d = getchar();
- if(c==EOF || d==EOF)
- error("premature eof");
- return c | d<<8;
-}
-
-void error(char *s)
-{
- fflush(stdout);
- fprintf(stderr,"ascii2map3: %s\n", s);
- exit(1);
-}
diff --git a/src/doug/doc/Makefile b/src/doug/doc/Makefile
deleted file mode 100755
index ba78eec..0000000
--- a/src/doug/doc/Makefile
+++ /dev/null
@@ -1,16 +0,0 @@
-all: map.1.ps map.3.ps map.5.ps route.1.ps ascii2map.1.ps
-
-map.1.ps: map.1
- groff -man map.1 >map.1.ps
-
-map.3.ps: map.3
- groff -man map.3 >map.3.ps
-
-map.5.ps: map.5
- groff -man map.5 >map.5.ps
-
-route.1.ps: route.1
- groff -man route.1 >route.1.ps
-
-ascii2map.1.ps: ascii2map.1
- groff -man ascii2map.1 >ascii2map.1.ps
diff --git a/src/doug/doc/ascii2map.1 b/src/doug/doc/ascii2map.1
deleted file mode 100755
index a6c6ce7..0000000
--- a/src/doug/doc/ascii2map.1
+++ /dev/null
@@ -1,60 +0,0 @@
-.TH ASCII2MAP 1
-.SH NAME
-ascii2map, map2ascii \- map data conversion
-.SH SYNOPSIS
-.B ascii2map
-[
-.B -f
-]
-.I mapfile
-.br
-.B map2ascii
-.I "lat lon
-[
-.I mapfile
-[
-.I index
-]]
-.SH DESCRIPTION
-.I Ascii2map
-creates a
-.IR map(5)
-file named
-.I mapfile,
-and an associated index
-.IB mapfile .x ,
-from latitude-longitude data on standard input.
-Resolution in
-.I mapfile
-is .0001 radian by default and .00001 radian under option
-.BR -f .
-.PP
-The input data is a sequence of connected segements,
-each of which is represented as a decimal count,
-.I n,
-followed by
-.I n
-decimal latitude-longitude pairs, where west longitude
-is positive.
-.PP
-.I Map2ascii
-converts all the segments in one 10-degree patch of the
-.I mapfile
-.RB (default /usr/dict/world )
-into
-.I ascii2map
-input format.
-.I Lat
-and
-.I lon
-are multiples of 10, the minimum coordinates
-of the patch.
-If no
-.I index
-is specified,
-.IB mapfile .x
-is understood.
-.SH "SEE ALSO
-.IR map (5),
-.IR map (1)
-
diff --git a/src/doug/doc/ascii2map.1.ps b/src/doug/doc/ascii2map.1.ps
deleted file mode 100755
index a4ba6fa..0000000
--- a/src/doug/doc/ascii2map.1.ps
+++ /dev/null
@@ -1,258 +0,0 @@
-%!PS-Adobe-3.0
-%%Creator: groff version 1.18.1
-%%CreationDate: Sat Mar 20 07:21:36 2004
-%%DocumentNeededResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%DocumentSuppliedResources: procset grops 1.18 1
-%%Pages: 1
-%%PageOrder: Ascend
-%%Orientation: Portrait
-%%EndComments
-%%BeginProlog
-%%BeginResource: procset grops 1.18 1
-/setpacking where{
-pop
-currentpacking
-true setpacking
-}if
-/grops 120 dict dup begin
-/SC 32 def
-/A/show load def
-/B{0 SC 3 -1 roll widthshow}bind def
-/C{0 exch ashow}bind def
-/D{0 exch 0 SC 5 2 roll awidthshow}bind def
-/E{0 rmoveto show}bind def
-/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
-/G{0 rmoveto 0 exch ashow}bind def
-/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/I{0 exch rmoveto show}bind def
-/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
-/K{0 exch rmoveto 0 exch ashow}bind def
-/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/M{rmoveto show}bind def
-/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
-/O{rmoveto 0 exch ashow}bind def
-/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/Q{moveto show}bind def
-/R{moveto 0 SC 3 -1 roll widthshow}bind def
-/S{moveto 0 exch ashow}bind def
-/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/SF{
-findfont exch
-[exch dup 0 exch 0 exch neg 0 0]makefont
-dup setfont
-[exch/setfont cvx]cvx bind def
-}bind def
-/MF{
-findfont
-[5 2 roll
-0 3 1 roll
-neg 0 0]makefont
-dup setfont
-[exch/setfont cvx]cvx bind def
-}bind def
-/level0 0 def
-/RES 0 def
-/PL 0 def
-/LS 0 def
-/MANUAL{
-statusdict begin/manualfeed true store end
-}bind def
-/PLG{
-gsave newpath clippath pathbbox grestore
-exch pop add exch pop
-}bind def
-/BP{
-/level0 save def
-1 setlinecap
-1 setlinejoin
-72 RES div dup scale
-LS{
-90 rotate
-}{
-0 PL translate
-}ifelse
-1 -1 scale
-}bind def
-/EP{
-level0 restore
-showpage
-}bind def
-/DA{
-newpath arcn stroke
-}bind def
-/SN{
-transform
-.25 sub exch .25 sub exch
-round .25 add exch round .25 add exch
-itransform
-}bind def
-/DL{
-SN
-moveto
-SN
-lineto stroke
-}bind def
-/DC{
-newpath 0 360 arc closepath
-}bind def
-/TM matrix def
-/DE{
-TM currentmatrix pop
-translate scale newpath 0 0 .5 0 360 arc closepath
-TM setmatrix
-}bind def
-/RC/rcurveto load def
-/RL/rlineto load def
-/ST/stroke load def
-/MT/moveto load def
-/CL/closepath load def
-/Fr{
-setrgbcolor fill
-}bind def
-/Fk{
-setcmykcolor fill
-}bind def
-/Fg{
-setgray fill
-}bind def
-/FL/fill load def
-/LW/setlinewidth load def
-/Cr/setrgbcolor load def
-/Ck/setcmykcolor load def
-/Cg/setgray load def
-/RE{
-findfont
-dup maxlength 1 index/FontName known not{1 add}if dict begin
-{
-1 index/FID ne{def}{pop pop}ifelse
-}forall
-/Encoding exch def
-dup/FontName exch def
-currentdict end definefont pop
-}bind def
-/DEFS 0 def
-/EBEGIN{
-moveto
-DEFS begin
-}bind def
-/EEND/end load def
-/CNT 0 def
-/level1 0 def
-/PBEGIN{
-/level1 save def
-translate
-div 3 1 roll div exch scale
-neg exch neg exch translate
-0 setgray
-0 setlinecap
-1 setlinewidth
-0 setlinejoin
-10 setmiterlimit
-[]0 setdash
-/setstrokeadjust where{
-pop
-false setstrokeadjust
-}if
-/setoverprint where{
-pop
-false setoverprint
-}if
-newpath
-/CNT countdictstack def
-userdict begin
-/showpage{}def
-}bind def
-/PEND{
-clear
-countdictstack CNT sub{end}repeat
-level1 restore
-}bind def
-end def
-/setpacking where{
-pop
-setpacking
-}if
-%%EndResource
-%%IncludeResource: font Times-Roman
-%%IncludeResource: font Times-Bold
-%%IncludeResource: font Times-Italic
-grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
-def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron
-/Zcaron/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
-/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
-/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
-/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
-/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
-/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
-/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
-/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
-/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
-/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
-/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
-/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
-/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
-/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
-/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
-/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
-/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
-/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
-/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
-/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
-/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
-/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
-/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
-/Times-Italic at 0 ENC0/Times-Italic RE/Times-Bold at 0 ENC0/Times-Bold RE
-/Times-Roman at 0 ENC0/Times-Roman RE
-%%EndProlog
-%%Page: 1 1
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman at 0 SF 336.62
-<4153434949324d4150283129204153434949324d4150283129>72 48 R/F1 10.95
-/Times-Bold at 0 SF -.219<4e41>72 84 S<4d45>.219 E F0
-<6173636969326d61702c206d617032617363696920ad206d6170206461746120636f6e>
-108 96 Q -.15<7665>-.4 G<7273696f6e>.15 E F1<53594e4f50534953>72 112.8 Q
-/F2 10/Times-Bold at 0 SF<6173636969326d6170>108 124.8 Q F0<5b>2.5 E F2
-<2d66>2.5 E F0<5d>2.5 E/F3 10/Times-Italic at 0 SF<6d61708c6c65>2.88 E F2
-<6d6170326173636969>108 136.8 Q F3<6c6174206c6f6e>2.59 E F0<5b>2.74 E F3
-<6d61708c6c65>2.88 E F0<5b>2.68 E F3<696e6465>2.51 E<78>-.2 E F0<5d5d>
-3.03 E F1<4445534352495054494f4e>72 153.6 Q F3<4173636969326d6170>109.01
-165.6 Q F0 .43<637265617465732061>3.12 F F3<6d6170283529>2.93 E F0 .429
-<8c6c65206e616d6564>2.929 F F3<6d61708c6c65>3.309 E<2c>-.1 E F0 .429
-<616e6420616e206173736f63696174656420696e6465>2.929 F<78>-.15 E F3
-<6d61708c6c65>2.929 E F2<2e78>.18 E F3<2c>.54 E F0 .429
-<66726f6d206c617469747564652d6c6f6e676974756465>2.929 F
-<64617461206f6e207374616e6461726420696e7075742e>108 177.6 Q
-<5265736f6c7574696f6e20696e>5 E F3<6d61708c6c65>2.88 E F0
-<6973202e303030312072616469616e20627920646566>2.68 E
-<61756c7420616e64202e30303030312072616469616e20756e646572206f7074696f6e>
--.1 E F2<2d66>2.5 E F0<2e>A .707<54686520696e70757420646174612069732061
-2073657175656e6365206f6620636f6e6e6563746564207365>108 194.4 R .707<6765
-6d656e74732c2065616368206f6620776869636820697320726570726573656e74656420
-6173206120646563696d616c20636f756e742c>-.15 F F3<6e2c>3.568 E F0
-<666f6c6c6f>108 206.4 Q<776564206279>-.25 E F3<6e>2.86 E F0<646563696d61
-6c206c617469747564652d6c6f6e6769747564652070616972732c207768657265207765
-7374206c6f6e67697475646520697320706f73697469>2.74 E -.15<7665>-.25 G<2e>
-.15 E F3<4d6170326173636969>108.68 223.2 Q F0<636f6e>4.109 E -.15<7665>
--.4 G 1.249<72747320616c6c20746865207365>.15 F 1.249
-<676d656e747320696e206f6e652031302d6465>-.15 F 1.248
-<67726565207061746368206f6620746865>-.15 F F3<6d61708c6c65>4.128 E F0
-<28646566>3.928 E<61756c74>-.1 E F2<2f7573722f646963742f77>A<6f726c64>
--.1 E F0 3.748<2969>C<6e746f>-3.748 E F3<6173636969326d6170>108.33 235.2
-Q F0 1.302<696e70757420666f726d61742e>3.992 F F3<4c6174>6.882 E F0
-<616e64>4.482 E F3<6c6f6e>3.892 E F0 1.302<617265206d756c7469706c657320
-6f662031302c20746865206d696e696d756d20636f6f7264696e61746573206f66207468
-652070617463682e>4.042 F 1.303<4966206e6f>6.303 F F3<696e6465>108.01
-247.2 Q<78>-.2 E F0<69732073706563698c65642c>3.03 E F3<6d61708c6c65>2.5
-E F2<2e78>.18 E F0<697320756e64657273746f6f642e>2.5 E F1
-<53454520414c534f>72 264 Q F3<6d6170>108 276 Q F0<2835292c>.19 E F3
-<6d6170>2.5 E F0<283129>.19 E<31>535 768 Q 0 Cg EP
-%%Trailer
-end
-%%EOF
diff --git a/src/doug/doc/maint_record b/src/doug/doc/maint_record
deleted file mode 100755
index e23582f..0000000
--- a/src/doug/doc/maint_record
+++ /dev/null
@@ -1,48 +0,0 @@
-Mar 30,2004
- map.c, map.1
- diagnostics include a version identifier.
-Mar 19,2004
- lambert.c
- Correct erroneous limit when standard parallels coincide.
- Problem noted by alex.deckmyn at oma.be. Reject the limiting
- case of both standard parallels approaching the south pole.
- (Not easy to do right in the existing libmap framework.)
-Dec 17, 2003
- ascii2map, map2ascii
- Add programs for converting between binary and ASCII map data.
- Make corresponding changes to manual, makefile, and README.
-Nov 13, 2003
- man pages
- A Makefile in the doc subdirectory supplies some extra
- macro definitions beyond the usual -man macros. This
- trades away prettiness for robustness--assuming you have
- groff.
-Oct 16 2003
- map.c
- Option -b: check that next argument exists before trying to
- look at it. Stop accepting -b 0 as synonym for naked -b.
- eisenlohr.c
- New projection.
- zcoord.c, homing.c, map.h
- Make trigclamp() global in zcoord.c rather than static
- in homing.c.
- zcoord.c, elliptic.c
- Apply trigclamp() to defend against sin and cos outside [-1,1].
- Problem noted by minka at stat.cmu.edu.
- map.h, map.c, symbol.c, zcoord.c, aitoff.c, gilbert.c, hex.c, homing.c
- Rename sincos as trig to avoid collision with nonstandard
- but ubiquitous math-library function.
- hex.c, tetra.c
- Fix initialization to make projections serially reusable.
- Problem noted by minka at stat.cmu.edu.
- Makefile, map.sh, map.c
- Rework macro and environment names for consistency and simplicity.
- Makefile
- Some simplification and robustification.
- README
- Revisions for clarity and currency with other changes.
- Correct the usage of gv.
- Describe the "route" program.
- map.1
- Add eisenlohr; delete duplicate description of gilbert.
-
diff --git a/src/doug/doc/map.1 b/src/doug/doc/map.1
deleted file mode 100755
index dba8410..0000000
--- a/src/doug/doc/map.1
+++ /dev/null
@@ -1,720 +0,0 @@
-.so tmac.anx
-.TH MAP 1
-.SH NAME
-map \- draw maps on various projections
-.SH SYNOPSIS
-.B map
-.I projection
-[
-.I option ...
-]
-.SH DESCRIPTION
-.I Map
-prepares on the standard output a
-map suitable for display in PostScript.
-By default, maps are scaled to fit in a 6.5-inch square
-centered 1 inch from the top of an 8.5\(mu11-inch page.
-.PP
-The default data for
-.I map
-are world shorelines.
-Option
-.B -f
-accesses more detailed data
-classified by feature.
-.TP
-.BR -f " [ \fIfeature\fR ... ]"
-Features are ranked 1 (default) to 4 from major to minor.
-Higher-numbered ranks include all lower-numbered ones.
-Features are
-.RS
-.PD 0
-.TF country[1-3]
-.TP
-.BR shore [ 1 - 4 ]
-seacoasts, lakes, and islands; option
-.B -f
-always shows
-.B shore1
-.TP
-.BR ilake [ 1 - 2 ]
-intermittent lakes
-.TP
-.BR river [ 1 - 4 ]
-rivers
-.TP
-.BR iriver [ 1 - 3 ]
-intermittent rivers
-.TP
-.BR canal [ 1 - 3 ]
-.BR 3 =irrigation
-canals
-.TP
-.BR glacier
-.TP
-.BR iceshelf [ 12 ]
-.TP
-.BR reef
-.TP
-.BR saltpan [ 12 ]
-.TP
-.BR country [ 1 - 3 ]
-.BR 2 =disputed
-boundaries,
-.BR 3 =indefinite
-boundaries
-.TP
-.BR state
-states and provinces (US and Canada only)
-.RE
-.PD
-.PP
-In other options
-coordinates are in degrees, with north latitude
-and west longitude counted as positive.
-.TP 5n
-.BI -l " S N E W"
-Set the southern and northern latitude
-and the eastern and western longitude limits.
-Missing arguments are filled out from the list
-\-90, 90, \-180, 180,
-or lesser limits suitable to the
-projection at hand.
-.TP
-.BI -k " S N E W
-Set the scale as if for a map with limits
-.B -l
-.I "S N E W"\f1.
-Do not consider any
-.B -l
-or
-.B -w
-option in setting scale.
-.TP
-.BI -o " lat lon rot"
-Orient the map in a nonstandard position.
-Imagine a transparent gridded sphere around the globe.
-Turn the overlay about the North Pole
-so that the Prime Meridian (longitude 0)
-of the overlay coincides with meridian
-.I lon
-on the globe.
-Then tilt the North Pole of the
-overlay along its Prime Meridian to latitude
-.I lat
-on the globe.
-Finally again turn the
-overlay about its `North Pole' so
-that its Prime Meridian coincides with the previous position
-of meridian
-.IR rot .
-Project the map in
-the standard form appropriate to the overlay, but presenting
-information from the underlying globe.
-Missing arguments are filled out from the list
-90, 0, 0.
-In the absence of
-.BR - o ,
-the orientation is 90, 0,
-.IR m ,
-where
-.I m
-is the middle of the longitude range.
-.TP
-.BI -w " S N E W"
-Window the map by the specified latitudes
-and longitudes in the tilted, rotated coordinate system.
-Missing arguments are filled out from the list \-90, 90, \-180, 180.
-(It is wise to give an encompassing
-.B -l
-option with
-.BR -w .
-Otherwise for small windows computing time
-varies inversely with area!)
-.TP
-.BI -d " n"
-For speed, plot only every
-.IR n th
-point.
-.TP
-.B -r
-Reverse left and right
-(good for star charts and inside-out views).
-.ns
-.TP
-.B -v
-Verso.
-Switch to a normally suppressed sheet of the map, such as the
-back side of the earth in orthographic projection.
-.TP
-.B -s1
-.br
-.ns
-.TP
-.B -s2
-Superpose; outputs for a
-.B -s1
-map (no closing) and a
-.B -s2
-map (no opening) may be concatenated.
-.TP
-.BI -g " dlat dlon res"
-Grid spacings are
-.IR dlat ,
-.IR dlon .
-Zero spacing means no grid.
-Missing
-.I dlat
-is taken to be zero.
-Missing
-.I dlon
-is taken the same as
-.IR dlat .
-Grid lines are drawn to a resolution of
-.I res
-(adaptively determined by default).
-In the absence of
-.BR - g ,
-grid spacing is 10.
-.TP
-.BI -p " lat lon extent"
-Position the point
-.I lat, lon
-at the center of the plotting area.
-Scale the map so that the height (and width) of the
-nominal plotting area is
-.I extent
-times the size of one degree of latitude
-at the center.
-By default maps are scaled and positioned
-to fit within the plotting area.
-An
-.I extent
-overrides option
-.BR -k .
-.TP
-.BI -c " x y rot"
-After all other positioning and scaling operations
-have been performed, rotate the image
-.I rot
-degrees counterclockwise about the center
-and move the center to position
-.IR x ,
-.IR y
-in the nominal plotting area, whose coordinates
-run from \-1 to 1.
-Missing arguments are taken to be 0.
-.TP
-.BR -x
-Allow the map to extend outside the nominal plotting area.
-.TP
-.BR -m " [ \fIfile\fP ... ]"
-Use
-map data from named files.
-If no files are named, omit map data.
-Names that do not exist as pathnames are looked up in
-a standard directory, which contains, in addition to the
-data for
-.BR -f ,
-.RS
-.PD 0
-.TF counties
-.TP
-.B world
-World Data Bank I (default)
-.TP
-.B states
-US map from Census Bureau
-.TP
-.B counties
-US map from Census Bureau
-.RE
-.PD
-.IP
-The environment variable
-.B MAPDIR
-changes the standard directory.
-.TP
-.BI -b " \fR[\fPlat0 lon0 lat1 lon1\fR... ]"
-Suppress the drawing of the normal boundary
-(determined by the projection and options
-.BR -l
-and
-.BR -w ).
-Coordinates, if present, define the vertices of a
-polygon to which the map is clipped.
-If only two vertices are given, they are taken to be the
-diagonal of a rectangle.
-To draw the polygon, give its vertices as a
-.B -u
-track.
-.TP
-.BI -t " file ..."
-The
-.I files
-contain lists of points,
-given as latitude-longitude pairs in degrees.
-If the first file is named
-.LR \- ,
-the standard input is taken instead.
-The points of each list are connected by dot-dash tracks.
-.IP
-Points in a track file may be followed by label strings.
-A label breaks the track.
-A label may be prefixed by
-\fB"\fR,
-.LR : ,
-or
-.L !
-and is terminated by a newline.
-An unprefixed string or a string prefixed with
-.L
-"
-is displayed at the designated point.
-The first word of a
-.B :
-or
-.B !
-string names a special symbol (see option
-.BR -y ).
-An optional numerical second word is a scale factor
-for the size of the symbol, 1 by default.
-A
-.B :
-symbol is aligned with its top to the north; a
-.B !
-symbol is aligned vertically on the page.
-.TP
-.BI -u " file ..."
-Same as
-.BR -t ,
-except the tracks are
-unbroken lines.
-.TP
-.BI -C " color
-Set color (initially black). At each of the options
-.BR -b ,
-.BR -g ,
-.BR -m ,
-.BR -t ,
-and
-.BR -u
-the most recently set color is remembered and used to draw the
-associated data. The
-.I color
-is one of
-.BR black ,
-.BR red ,
-.BR green ,
-.BR blue ,
-or a PostScript HSB code, such as
-.LR .33,.5,1
-(a bright light greeen).
-The numbers range from 0 to 1 for
-hue (red to violet), saturation
-(unsaturated to full) and brightness (off to full).
-.TP
-.BI -y " file
-The
-.I file
-describes a plotting symbol as a sequence of
-strokes. A normal-size symbol has coordinates
-running from \-1 to 1.
-Location (0,0) falls on the plotting point when
-a symbol is placed by
-.B :
-or
-.B !
-in a track. (See option
-.BR -t .)
-The file contains lines of the following forms.
-.RS
-.PD 0
-.TF m\ name
-.TP
-.BI : " name
-name of symbol, must come first
-.TP
-.BI m " x y
-move to given point
-.TP
-.BI v " x y
-draw vector from previous point to here
-.RE
-.PD
-.SS Projections
-.rs
-.PP
-A menu of projections is produced in response to an unknown
-.IR projection .
-.br
-.PP
-Equatorial projections centered on the Prime Meridian
-(longitude 0).
-Parallels are straight horizontal lines.
-.PP
-.PD 0
-.TP 1.5i
-.B mercator
-equally spaced straight meridians, conformal,
-straight compass courses
-.TP
-.B sinusoidal
-equally spaced parallels,
-equal-area, same as
-.LR "bonne 0" .
-.TP
-.BI cylequalarea " lat0"
-equally spaced straight meridians, equal-area,
-true scale on
-.I lat0
-.TP
-.B cylindrical
-central projection on tangent cylinder
-.TP
-.BI rectangular " lat0"
-equally spaced parallels, equally spaced straight meridians, true scale on
-.I lat0
-.TP
-.BI gall " lat0"
-parallels spaced stereographically on prime meridian, equally spaced straight
-meridians, true scale on
-.I lat0
-.TP
-.B mollweide
-(homalographic) equal-area, hemisphere is a circle
-.TP
-.B gilbert
-globe mapped conformally on hemisphere, viewed orthographically
-.PD
-.br
-.PP
-Azimuthal projections centered on the North Pole.
-Parallels are concentric circles.
-Meridians are equally spaced radial lines.
-.PP
-.PD 0
-.TP 1.5i
-.B azequidistant
-equally spaced parallels,
-true distances from pole
-.TP
-.B azequalarea
-equal-area
-.TP
-.B gnomonic
-central projection on tangent plane,
-straight great circles
-.TP
-.BI perspective " dist"
-viewed along earth's axis
-.I dist
-earth radii from center of earth
-.TP
-.B orthographic
-viewed from infinity
-.TP
-.B stereographic
-conformal, projected from opposite pole
-.TP
-.B laue
-.IR radius " = tan(2\(mu" colatitude ),
-used in X-ray crystallography
-.TP
-.BI fisheye " n"
-stereographic seen from just inside medium with refractive index
-.I n
-.TP
-.BI newyorker " r"
-.IR radius " = log(" colatitude / r ):
-.I New Yorker
-map from viewing pedestal of radius
-.I r
-degrees
-.PD
-.br
-.PP
-Polar conic projections symmetric about the Prime Meridian.
-Parallels are segments of concentric circles.
-Except in the Bonne projection,
-meridians are equally spaced radial
-lines orthogonal to the parallels.
-.PP
-.PD 0
-.TP 1.5i
-.BI conic " lat0"
-central projection on cone tangent at
-.I lat0
-.TP
-.BI simpleconic " lat0 lat1"
-equally spaced parallels, true scale on
-.I lat0
-and
-.I lat1
-.TP
-.BI lambert " lat0 lat1"
-conformal, true scale on
-.I lat0
-and
-.I lat1
-.TP
-.BI albers " lat0 lat1"
-equal-area, true scale on
-.I lat0
-and
-.I lat1
-.TP
-.BI bonne " lat0"
-equally spaced parallels, equal-area,
-parallel
-.I lat0
-developed from tangent cone
-.PD
-.br
-.br
-.PP
-Projections with bilateral symmetry about
-the Prime Meridian
-and the equator.
-.PP
-.PD 0
-.TP 1.5i
-.B polyconic
-parallels developed from tangent cones,
-equally spaced along Prime Meridian
-.TP
-.B aitoff
-equal-area projection of globe onto 2-to-1
-ellipse, based on
-.I azequalarea
-.TP
-.B lagrange
-conformal, maps whole sphere into a circle
-.TP
-.BI bicentric " lon0"
-points plotted at true azimuth from two
-centers on the equator at longitudes
-.IR lon0 ,
-great circles are straight lines
-(a stretched
-.IR gnomonic
-)
-.TP
-.BI elliptic " lon0"
-points plotted at true distance from
-two centers on the equator at longitudes
-.I lon0
-.TP
-.B globular
-hemisphere is circle,
-circular arc meridians equally spaced on equator,
-circular arc parallels equally spaced on 0- and 90-degree meridians
-.TP
-.B vandergrinten
-sphere is circle,
-meridians as in
-.IR globular ,
-circular arc parallels resemble
-.I mercator
-.TP
-.B eisenlohr
-conformal with no singularities, shaped like polyconic
-.PD
-.br
-.PP
-Doubly periodic conformal projections.
-.TP 1.5i
-.B guyou
-W and E hemispheres are square
-.PD 0
-.TP
-.B square
-world is square with Poles
-at diagonally opposite corners
-.TP
-.B tetra
-map on tetrahedron with edge
-tangent to Prime Meridian at S Pole,
-unfolded into equilateral triangle
-.TP
-.B hex
-world is hexagon centered
-on N Pole, N and S hemispheres are equilateral
-triangles
-.PD
-.br
-.PP
-Miscellaneous projections.
-.PP
-.PD 0
-.TP 1.5i
-.BI harrison " dist angle"
-oblique perspective from above the North Pole,
-.I dist
-earth radii from center of earth, looking
-along the Date Line
-.I angle
-degrees off vertical
-.TP
-.BI trapezoidal " lat0 lat1"
-equally spaced parallels,
-straight meridians equally spaced along parallels,
-true scale at
-.I lat0
-and
-.I lat1
-on Prime Meridian
-.PD
-.br
-.B lune(lat,angle)
-conformal, polar cap above latitude
-.I lat
-maps to convex lune with given
-.I angle
-at 90E and 90W
-.br
-.PP
-Retroazimuthal projections.
-At every point the angle between vertical and a straight line to
-`Mecca', latitude
-.I lat0
-on the prime meridian,
-is the true bearing of Mecca.
-.PP
-.PD 0
-.TP 1.5i
-.BI mecca " lat0"
-equally spaced vertical meridians
-.TP
-.BI homing " lat0"
-distances to Mecca are true
-.PD
-.br
-.PP
-Maps based on the spheroid.
-Of geodetic quality, these projections do not make sense
-for tilted orientations.
-For descriptions, see corresponding maps above.
-.PP
-.PD 0
-.TP 1.5i
-.B sp_mercator
-.TP
-.BI sp_albers " lat0 lat1"
-.PD
-.SH EXAMPLES
-.TP
-.L
-map perspective 1.025 -o 40.75 74
-A view looking down on New York from 100 miles
-(0.025 of the 4000-mile earth radius) up.
-The job can be done faster by limiting the map so as not to `plot'
-the invisible part of the world:
-.LR "map perspective 1.025 -o 40.75 74 -l 20 60 30 100".
-A circular border can be forced by adding option
-.LR "-w 77.33" .
-(Latitude 77.33 falls just inside a polar cap of
-opening angle arccos(1/1.025) = 12.6804 degrees.)
-.TP
-.L
-map mercator -o 49.25 -106 180
-An `equatorial' map of the earth
-centered on New York.
-The pole of the map is placed 90 degrees away (40.75+49.25=90)
-on the
-other side of the earth.
-A 180 twist around the pole of the map arranges that the
-`Prime Meridian' of the map runs from the pole of the
-map over the North Pole to New York
-instead of down the back side of the earth.
-The same effect can be had from
-.L
-map mercator -o 130.75 74
-.TP
-.L
-map albers 28 45 -l 20 50 60 130 -m states
-A customary curved-latitude map of the United States.
-.TP
-.L
-map harrison 2 30 -l -90 90 120 240 -o 90 0 0
-A fan view covering 60 degrees on either
-side of the Date Line, as seen from one earth radius
-above the North Pole gazing at the
-earth's limb, which is 30 degrees off vertical.
-The
-.B -o
-option overrides the default
-.BR "-o 90 0 180" ,
-which would rotate
-the scene to behind the observer.
-.SH FILES
-.TF $MAPDIR/lib/map/[1-4]??
-.TP
-.B $MAPDIR/lib/[1-4]??
-World Data Bank II, for
-.B -f
-.TP
-.B $MAPDIR/lib/*
-maps for
-.B -m
-.TP
-.B $MAPDIR/lib/*.x
-map indexes
-.TP
-.B $MAPDIR/bin/map
-Map driver program
-.SH "SEE ALSO"
-.IR map (3),
-.IR map (5)
-.SH DIAGNOSTICS
-Diagnostics include a version identifier. Thus
-.I map
-with no arguments may be used to ascertain the version.
-.PP
-`Map seems to be empty'\(ema coarse survey found
-zero extent within the
-.B -l
-and
-.BR -w
-bounds; for maps of limited extent
-the grid resolution,
-.IR res ,
-or the limits may have to be refined.
-.SH BUGS
-Windows (option
-.BR -w )
-cannot cross the Date Line.
-.br
-Segments that cross a border are dropped, not clipped.
-.br
-Segments that traverse too far across a map may be
-dropped in the supposition that they were intended
-to wrap around at an edge. Intentionally long
-segments, as often occur in boundary tracks (see
-.BR -b ),
-are particularly susceptible to this treatment.
-There is no general fix, but sometimes the long
-segments can be broken into shorter pieces.
-.br
-The west-longitude-positive convention
-betrays Yankee chauvinism.
-.br
-.I Gilbert
-should be a map from sphere to sphere, independent of
-the mapping from sphere to plane.
-.br
-The outer boundary of
-.I elliptic
-is poorly drawn.
-.br
-.I Lambert
-with both standard parallels near the south pole
-is refused; it should approach stereographic.
-.SH "SEE ALSO
-.IR map (3),
-.IR map (5)
-.SH COPYRIGHT
-.PP
-Copyright (C) 1998, Lucent Technologies
-.br
-All rights reserved
diff --git a/src/doug/doc/map.1.ps b/src/doug/doc/map.1.ps
deleted file mode 100755
index 740f859..0000000
--- a/src/doug/doc/map.1.ps
+++ /dev/null
@@ -1,801 +0,0 @@
-%!PS-Adobe-3.0
-%%Creator: groff version 1.18.1
-%%CreationDate: Tue Mar 30 12:14:50 2004
-%%DocumentNeededResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Symbol
-%%DocumentSuppliedResources: procset grops 1.18 1
-%%Pages: 5
-%%PageOrder: Ascend
-%%Orientation: Portrait
-%%EndComments
-%%BeginProlog
-%%BeginResource: procset grops 1.18 1
-/setpacking where{
-pop
-currentpacking
-true setpacking
-}if
-/grops 120 dict dup begin
-/SC 32 def
-/A/show load def
-/B{0 SC 3 -1 roll widthshow}bind def
-/C{0 exch ashow}bind def
-/D{0 exch 0 SC 5 2 roll awidthshow}bind def
-/E{0 rmoveto show}bind def
-/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
-/G{0 rmoveto 0 exch ashow}bind def
-/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/I{0 exch rmoveto show}bind def
-/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
-/K{0 exch rmoveto 0 exch ashow}bind def
-/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/M{rmoveto show}bind def
-/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
-/O{rmoveto 0 exch ashow}bind def
-/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/Q{moveto show}bind def
-/R{moveto 0 SC 3 -1 roll widthshow}bind def
-/S{moveto 0 exch ashow}bind def
-/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/SF{
-findfont exch
-[exch dup 0 exch 0 exch neg 0 0]makefont
-dup setfont
-[exch/setfont cvx]cvx bind def
-}bind def
-/MF{
-findfont
-[5 2 roll
-0 3 1 roll
-neg 0 0]makefont
-dup setfont
-[exch/setfont cvx]cvx bind def
-}bind def
-/level0 0 def
-/RES 0 def
-/PL 0 def
-/LS 0 def
-/MANUAL{
-statusdict begin/manualfeed true store end
-}bind def
-/PLG{
-gsave newpath clippath pathbbox grestore
-exch pop add exch pop
-}bind def
-/BP{
-/level0 save def
-1 setlinecap
-1 setlinejoin
-72 RES div dup scale
-LS{
-90 rotate
-}{
-0 PL translate
-}ifelse
-1 -1 scale
-}bind def
-/EP{
-level0 restore
-showpage
-}bind def
-/DA{
-newpath arcn stroke
-}bind def
-/SN{
-transform
-.25 sub exch .25 sub exch
-round .25 add exch round .25 add exch
-itransform
-}bind def
-/DL{
-SN
-moveto
-SN
-lineto stroke
-}bind def
-/DC{
-newpath 0 360 arc closepath
-}bind def
-/TM matrix def
-/DE{
-TM currentmatrix pop
-translate scale newpath 0 0 .5 0 360 arc closepath
-TM setmatrix
-}bind def
-/RC/rcurveto load def
-/RL/rlineto load def
-/ST/stroke load def
-/MT/moveto load def
-/CL/closepath load def
-/Fr{
-setrgbcolor fill
-}bind def
-/Fk{
-setcmykcolor fill
-}bind def
-/Fg{
-setgray fill
-}bind def
-/FL/fill load def
-/LW/setlinewidth load def
-/Cr/setrgbcolor load def
-/Ck/setcmykcolor load def
-/Cg/setgray load def
-/RE{
-findfont
-dup maxlength 1 index/FontName known not{1 add}if dict begin
-{
-1 index/FID ne{def}{pop pop}ifelse
-}forall
-/Encoding exch def
-dup/FontName exch def
-currentdict end definefont pop
-}bind def
-/DEFS 0 def
-/EBEGIN{
-moveto
-DEFS begin
-}bind def
-/EEND/end load def
-/CNT 0 def
-/level1 0 def
-/PBEGIN{
-/level1 save def
-translate
-div 3 1 roll div exch scale
-neg exch neg exch translate
-0 setgray
-0 setlinecap
-1 setlinewidth
-0 setlinejoin
-10 setmiterlimit
-[]0 setdash
-/setstrokeadjust where{
-pop
-false setstrokeadjust
-}if
-/setoverprint where{
-pop
-false setoverprint
-}if
-newpath
-/CNT countdictstack def
-userdict begin
-/showpage{}def
-}bind def
-/PEND{
-clear
-countdictstack CNT sub{end}repeat
-level1 restore
-}bind def
-end def
-/setpacking where{
-pop
-setpacking
-}if
-%%EndResource
-%%IncludeResource: font Times-Roman
-%%IncludeResource: font Times-Bold
-%%IncludeResource: font Times-Italic
-%%IncludeResource: font Symbol
-grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
-def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron
-/Zcaron/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
-/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
-/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
-/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
-/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
-/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
-/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
-/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
-/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
-/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
-/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
-/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
-/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
-/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
-/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
-/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
-/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
-/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
-/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
-/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
-/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
-/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
-/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
-/Times-Italic at 0 ENC0/Times-Italic RE/Times-Bold at 0 ENC0/Times-Bold RE
-/Times-Roman at 0 ENC0/Times-Roman RE
-%%EndProlog
-%%Page: 1 1
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman at 0 SF 398.84<4d4150283129204d4150283129>72 48 R/F1
-10.95/Times-Bold at 0 SF -.219<4e41>72 84 S<4d45>.219 E F0
-<6d617020ad20647261>108 96 Q 2.5<776d>-.15 G<617073206f6e2076>-2.5 E
-<6172696f75732070726f6a656374696f6e73>-.25 E F1<53594e4f50534953>72
-112.8 Q/F2 10/Times-Bold at 0 SF<6d6170>108 124.8 Q/F3 10/Times-Italic at 0 SF
-<7072>3.75 E<6f6a656374696f6e>-.45 E F0<5b>2.74 E F3
-<6f7074696f6e202e2e2e>2.73 E F0<5d>5 E F1<4445534352495054494f4e>72
-141.6 Q F3<4d6170>108.68 153.6 Q F0 .435<7072657061726573206f6e20746865
-207374616e64617264206f75747075742061206d6170207375697461626c6520666f7220
-646973706c617920696e20506f73745363726970742e>3.126 F .435<427920646566>
-5.435 F .435<61756c742c206d61707320617265207363616c6564>-.1 F<746f208c74
-20696e206120362e352d696e6368207371756172652063656e7465726564203120696e63
-682066726f6d2074686520746f70206f6620616e20382e35>108 165.6 Q/F4 10
-/Symbol SF<b4>A F0<31312d696e636820706167652e>A<54686520646566>108 182.4
-Q<61756c74206461746120666f72>-.1 E F3<6d6170>2.88 E F0<6172652077>2.69 E
-<6f726c642073686f72656c696e65732e>-.1 E<4f7074696f6e>5 E F2<2d66>2.5 E
-F0<6163636573736573206d6f72652064657461696c6564206461746120636c61737369
-8c656420627920666561747572652e>2.5 E F2<2d66>108 199.2 Q F0<5b>2.5 E F3
-<666561747572>2.5 E<65>-.37 E F0<2e2e2e205d>2.5 E 1.772
-<4665617475726573206172652072616e6b>144 211.2 R 1.772
-<656420312028646566>-.1 F 1.772
-<61756c742920746f20342066726f6d206d616a6f7220746f206d696e6f72>-.1 F
-6.772<2e48>-.55 G<6967686572>-6.772 E 1.773
-<2d6e756d62657265642072616e6b7320696e636c75646520616c6c>-.2 F<6c6f>144
-223.2 Q<776572>-.25 E<2d6e756d6265726564206f6e65732e>-.2 E
-<466561747572657320617265>5 E F2<73686f72>144 235.2 Q<65>-.18 E F0<5b>A
-F2<31>A F0<2d>A F2<34>A F0<5d>A<736561636f617374732c206c616b>180 247.2 Q
-<65732c20616e642069736c616e64733b206f7074696f6e>-.1 E F2<2d66>2.5 E F0
-<616c>2.5 E -.1<7761>-.1 G<79732073686f>.1 E<7773>-.25 E F2<73686f72>2.5
-E<6531>-.18 E<696c616b>144 259.2 Q<65>-.1 E F0<5b>A F2<31>A F0<2d>A F2
-<32>A F0<5d>A<696e7465726d697474656e74206c616b>180 271.2 Q<6573>-.1 E F2
-<7269>144 283.2 Q -.1<7665>-.1 G<72>.1 E F0<5b>A F2<31>A F0<2d>A F2<34>A
-F0<5d>A<7269>180 295.2 Q -.15<7665>-.25 G<7273>.15 E F2<697269>144 307.2
-Q -.1<7665>-.1 G<72>.1 E F0<5b>A F2<31>A F0<2d>A F2<33>A F0<5d>A
-<696e7465726d697474656e74207269>180 319.2 Q -.15<7665>-.25 G<7273>.15 E
-F2<63616e616c>144 331.2 Q F0<5b>A F2<31>A F0<2d>A F2<33>A F0<5d>A F2<33>
-180 343.2 Q F0<3d6972726967>A<6174696f6e2063616e616c73>-.05 E F2
-<676c6163696572>144 355.2 Q<6963657368656c66>144 367.2 Q F0<5b>A F2
-<3132>A F0<5d>A F2 -.18<7265>144 379.2 S<6566>.18 E<73616c7470616e>144
-391.2 Q F0<5b>A F2<3132>A F0<5d>A F2<636f756e747279>144 403.2 Q F0<5b>A
-F2<31>A F0<2d>A F2<33>A F0<5d>A F2<32>180 415.2 Q F0
-<3d646973707574656420626f756e6461726965732c>A F2<33>2.5 E F0
-<3d696e64658c6e69746520626f756e646172696573>A F2<7374617465>144 427.2 Q
-F0<73746174657320616e642070726f>16.01 E
-<76696e6365732028555320616e642043616e616461206f6e6c7929>-.15 E<496e206f
-74686572206f7074696f6e7320636f6f7264696e617465732061726520696e206465>108
-444 Q<67726565732c2077697468206e6f727468206c6174697475646520616e64207765
-7374206c6f6e67697475646520636f756e74656420617320706f73697469>-.15 E -.15
-<7665>-.25 G<2e>.15 E F2<2d6c>108 460.8 Q F3 2.5<534e4557>2.5 G F0 1.072
-<5365742074686520736f75746865726e20616e64206e6f72746865726e206c61746974
-75646520616e6420746865206561737465726e20616e64207765737465726e206c6f6e67
-6974756465206c696d6974732e>133 472.8 R 1.071<4d697373696e67206172>6.071
-F<67752d>-.18 E .009<6d656e747320617265208c6c6c6564206f75742066726f6d20
-746865206c69737420ad39302c2039302c20ad3138302c203138302c206f72206c657373
-6572206c696d697473207375697461626c6520746f207468652070726f6a656374696f6e
-2061742068616e642e>133 484.8 R F2<2d6b>108 501.6 Q F3 2.5<534e4557>2.5 G
-F0 .619<53657420746865207363616c6520617320696620666f722061206d6170207769
-7468206c696d697473>133 513.6 R F2<2d6c>3.119 E F3 3.118<534e4557>3.448 G
-F0 5.618<2e44>C 3.118<6f6e>-5.618 G .618<6f7420636f6e736964657220616e>
--3.118 F<79>-.15 E F2<2d6c>3.118 E F0<6f72>3.118 E F2<2d77>3.118 E F0
-.618<6f7074696f6e20696e2073657474696e67>3.118 F<7363616c652e>133 525.6 Q
-F2<2d6f>108 542.4 Q F3<6c6174206c6f6e2072>2.5 E<6f74>-.45 E F0 1.12<4f72
-69656e7420746865206d617020696e2061206e6f6e7374616e6461726420706f73697469
-6f6e2e>133 554.4 R 1.12<496d6167696e652061207472616e73706172656e74206772
-6964646564207370686572652061726f756e642074686520676c6f62652e>6.12 F -.45
-<5475>133 566.4 S .657<726e20746865206f>.45 F -.15<7665>-.15 G .656<726c
-61792061626f757420746865204e6f72746820506f6c6520736f20746861742074686520
-5072696d65204d6572696469616e20286c6f6e676974756465203029206f662074686520
-6f>.15 F -.15<7665>-.15 G .656<726c617920636f696e2d>.15 F .388
-<63696465732077697468206d6572696469616e>133 578.4 R F3<6c6f6e>2.979 E F0
-.389<6f6e2074686520676c6f62652e>3.129 F .389
-<5468656e2074696c7420746865204e6f72746820506f6c65206f6620746865206f>
-5.389 F -.15<7665>-.15 G .389
-<726c617920616c6f6e6720697473205072696d65204d657269642d>.15 F .216
-<69616e20746f206c61746974756465>133 590.4 R F3<6c6174>2.806 E F0 .216
-<6f6e2074686520676c6f62652e>3.396 F .215<46696e616c6c79206167>5.215 F
-.215<61696e207475726e20746865206f>-.05 F -.15<7665>-.15 G .215<726c6179
-2061626f75742069747320604e6f72746820506f6c652720736f20746861742069747320
-5072696d65>.15 F .452
-<4d6572696469616e20636f696e636964657320776974682074686520707265>133
-602.4 R .452<76696f757320706f736974696f6e206f66206d6572696469616e>-.25 F
-F3 -.45<726f>2.952 G<74>.45 E F0 5.452<2e50>.68 G .452
-<726f6a65637420746865206d617020696e20746865207374616e6461726420666f726d>
--5.452 F .212<617070726f70726961746520746f20746865206f>133 614.4 R -.15
-<7665>-.15 G<726c6179>.15 E 2.712<2c62>-.65 G .212<75742070726573656e74
-696e6720696e666f726d6174696f6e2066726f6d2074686520756e6465726c79696e6720
-676c6f62652e>-2.912 F .211<4d697373696e67206172>5.211 F<67756d656e7473>
--.18 E .661<617265208c6c6c6564206f75742066726f6d20746865206c697374203930
-2c20302c20302e>133 626.4 R .661<496e2074686520616273656e6365206f66>5.661
-F F2<2d>3.161 E F0<6f>A F2<2c>A F0 .661
-<746865206f7269656e746174696f6e2069732039302c20302c>3.161 F F3<6d>3.161
-E F0 3.161<2c77>.32 G<68657265>-3.161 E F3<6d>3.541 E F0 .661
-<697320746865>3.481 F
-<6d6964646c65206f6620746865206c6f6e6769747564652072616e67652e>133 638.4
-Q F2<2d77>108 655.2 Q F3 2.5<534e4557>2.5 G F0 -.4<5769>133 667.2 S
-<6e646f>.4 E 3.763<7774>-.25 G 1.263<6865206d61702062792074686520737065
-63698c6564206c617469747564657320616e64206c6f6e6769747564657320696e207468
-652074696c7465642c20726f746174656420636f6f7264696e6174652073797374656d2e>
--3.763 F .521<4d697373696e67206172>133 679.2 R .521<67756d656e7473206172
-65208c6c6c6564206f75742066726f6d20746865206c69737420ad39302c2039302c20ad
-3138302c203138302e>-.18 F .521<284974206973207769736520746f206769>5.521
-F .822 -.15<76652061>-.25 H 3.022<6e65>.15 G<6e636f6d706173732d>-3.022 E
-<696e67>133 691.2 Q F2<2d6c>2.5 E F0<6f7074696f6e2077697468>2.5 E F2
-<2d77>2.5 E F0 5<2e4f>C
-<746865727769736520666f7220736d616c6c2077696e646f>-5 E
-<777320636f6d707574696e672074696d652076>-.25 E<617269657320696e>-.25 E
--.15<7665>-.4 G<7273656c79207769746820617265612129>.15 E F2<2d64>108 708
-Q F3<6e>2.5 E F0 -.15<466f>8.61 G 2.5<7273>.15 G
-<706565642c20706c6f74206f6e6c792065>-2.5 E -.15<7665>-.25 G<7279>.15 E
-F3<6e>2.5 E F0<746820706f696e742e>.24 E<31>535 768 Q 0 Cg EP
-%%Page: 2 2
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman at 0 SF 398.84<4d4150283129204d4150283129>72 48 R/F1 10
-/Times-Bold at 0 SF<2d72>108 84 Q F0<5265>17.23 E -.15<7665>-.25 G<72736520
-6c65667420616e642072696768742028676f6f6420666f72207374617220636861727473
-20616e6420696e736964652d6f757420766965>.15 E<7773292e>-.25 E F1<2d76>108
-100.8 Q F0 -1.11<5665>16.67 G 2.726<72736f2e20537769746368>1.11 F .226<
-746f2061206e6f726d616c6c792073757070726573736564207368656574206f66207468
-65206d61702c207375636820617320746865206261636b2073696465206f662074686520
-656172746820696e206f7274686f2d>2.726 F
-<677261706869632070726f6a656374696f6e2e>133 112.8 Q F1<2d7331>108 129.6
-Q<2d7332>108 141.6 Q F0
-<5375706572706f73653b206f75747075747320666f722061>12.78 E F1<2d7331>2.5
-E F0<6d617020286e6f20636c6f73696e672920616e642061>2.5 E F1<2d7332>2.5 E
-F0<6d617020286e6f206f70656e696e6729206d617920626520636f6e636174656e6174
-65642e>2.5 E F1<2d67>108 158.4 Q/F2 10/Times-Italic at 0 SF
-<646c617420646c6f6e2072>2.5 E<6573>-.37 E F0 .174
-<477269642073706163696e677320617265>133 170.4 R F2<646c6174>2.674 E F0
-<2c>.68 E F2<646c6f6e>2.674 E F0 5.174<2e5a>.24 G .174
-<65726f2073706163696e67206d65616e73206e6f20677269642e>-5.174 F
-<4d697373696e67>5.174 E F2<646c6174>3.024 E F0 .174<69732074616b>3.354 F
-.174<656e20746f206265207a65726f2e>-.1 F<4d697373696e67>5.175 E F2
-<646c6f6e>133.35 182.4 Q F0 .364<69732074616b>3.104 F .364
-<656e207468652073616d65206173>-.1 F F2<646c6174>2.864 E F0 5.363<2e47>
-.68 G .363<726964206c696e65732061726520647261>-5.363 F .363
-<776e20746f2061207265736f6c7574696f6e206f66>-.15 F F2 -.37<7265>2.863 G
-<73>.37 E F0<28616461707469>3.133 E -.15<7665>-.25 G .363
-<6c792064657465726d696e6564206279>.15 F<646566>133 194.4 Q 2.5
-<61756c74292e20496e>-.1 F<74686520616273656e6365206f66>2.5 E F1<2d>2.5 E
-F0<67>A F1<2c>A F0<677269642073706163696e672069732031302e>2.5 E F1<2d70>
-108 211.2 Q F2<6c6174206c6f6e2065>2.5 E<7874656e74>-.2 E F0 1.083
-<506f736974696f6e2074686520706f696e74>133 223.2 R F2 1.083
-<6c61742c206c6f6e>3.673 F F0 1.084
-<6174207468652063656e746572206f662074686520706c6f7474696e6720617265612e>
-3.823 F 1.084<5363616c6520746865206d617020736f20746861742074686520686569
-6768742028616e64>6.084 F .223<776964746829206f6620746865206e6f6d696e616c
-20706c6f7474696e672061726561206973>133 235.2 R F2 -.2<6578>2.723 G
-<74656e74>.2 E F0 .223<74696d6573207468652073697a65206f66206f6e65206465>
-3.403 F .222
-<67726565206f66206c61746974756465206174207468652063656e746572>-.15 F
-5.222<2e42>-.55 G<79>-5.222 E<646566>133 247.2 Q<61756c74206d6170732061
-7265207363616c656420616e6420706f736974696f6e656420746f208c74207769746869
-6e2074686520706c6f7474696e6720617265612e>-.1 E<416e>5 E F2 -.2<6578>2.5
-G<74656e74>.2 E F0 -.15<6f7665>3.18 G<727269646573206f7074696f6e>.15 E
-F1<2d6b>2.5 E F0<2e>A F1<2d63>108 264 Q F2 2.5<787972>2.5 G<6f74>-2.95 E
-F0 .545<416674657220616c6c206f7468657220706f736974696f6e696e6720616e6420
-7363616c696e67206f7065726174696f6e73206861>133 276 R .845 -.15<76652062>
--.2 H .545
-<65656e20706572666f726d65642c20726f746174652074686520696d616765>.15 F F2
--.45<726f>3.045 G<74>.45 E F0<6465>3.725 E<6772656573>-.15 E .636<636f75
-6e746572636c6f636b776973652061626f7574207468652063656e74657220616e64206d
-6f>133 288 R .936 -.15<76652074>-.15 H .636
-<68652063656e74657220746f20706f736974696f6e>.15 F F2<78>3.136 E F0<2c>
-.53 E F2<79>3.135 E F0 .635
-<696e20746865206e6f6d696e616c20706c6f7474696e6720617265612c>3.135 F
-<77686f736520636f6f7264696e617465732072756e2066726f6d20ad3120746f20312e>
-133 300 Q<4d697373696e67206172>5 E<67756d656e7473206172652074616b>-.18 E
-<656e20746f20626520302e>-.1 E F1<2d78>108 316.8 Q F0<416c6c6f>16.67 E
-2.5<7774>-.25 G<6865206d617020746f2065>-2.5 E<7874656e64206f757473696465
-20746865206e6f6d696e616c20706c6f7474696e6720617265612e>-.15 E F1<2d6d>
-108 333.6 Q F0<5b>2.5 E F2<8c6c65>2.5 E F0<2e2e2e205d>2.5 E .934
-<557365206d617020646174612066726f6d206e616d6564208c6c65732e>133 345.6 R
-.935<4966206e6f208c6c657320617265206e616d65642c206f6d6974206d6170206461
-74612e>5.935 F .935<4e616d6573207468617420646f206e6f742065>5.935 F .935
-<78697374206173>-.15 F<706174686e616d657320617265206c6f6f6b>133 357.6 Q
-<656420757020696e2061207374616e64617264206469726563746f7279>-.1 E 2.5
-<2c77>-.65 G<6869636820636f6e7461696e732c20696e206164646974696f6e20746f
-20746865206461746120666f72>-2.5 E F1<2d66>2.5 E F0<2c>A F1 -.1<776f>133
-369.6 S<726c64>.1 E F0 -.8<576f>11.1 G
-<726c6420446174612042616e6b20492028646566>.8 E<61756c7429>-.1 E F1
-<737461746573>133 381.6 Q F0
-<5553206d61702066726f6d2043656e73757320427572656175>12.12 E F1
-<636f756e74696573>133 393.6 Q F0
-<5553206d61702066726f6d2043656e73757320427572656175>169 405.6 Q
-<54686520656e>133 422.4 Q<7669726f6e6d656e742076>-.4 E<61726961626c65>
--.25 E F1<4d4150444952>2.5 E F0
-<6368616e67657320746865207374616e64617264206469726563746f7279>2.5 E<2e>
--.65 E F1<2d62>108 439.2 Q F0<5b>2.5 E F2
-<6c617430206c6f6e30206c617431206c6f6e31>A F0<2e2e2e205d>A .666
-<53757070726573732074686520647261>133 451.2 R .666<77696e67206f66207468
-65206e6f726d616c20626f756e64617279202864657465726d696e656420627920746865
-2070726f6a656374696f6e20616e64206f7074696f6e73>-.15 F F1<2d6c>3.166 E F0
-<616e64>3.166 E F1<2d77>3.166 E F0<292e>A .147<436f6f7264696e617465732c
-2069662070726573656e742c2064658c6e65207468652076>133 463.2 R .148<657274
-69636573206f66206120706f6c79676f6e20746f20776869636820746865206d61702069
-7320636c69707065642e>-.15 F .148<4966206f6e6c79207477>5.148 F 2.648
-<6f76>-.1 G<6572>-2.798 E<2d>-.2 E .034<746963657320617265206769>133
-475.2 R -.15<7665>-.25 G .034<6e2c20746865>.15 F 2.533<7961>-.15 G .033
-<72652074616b>-2.533 F .033<656e20746f2062652074686520646961676f6e616c20
-6f6620612072656374616e676c652e>-.1 F 1.633 -.8<546f2064>5.033 H<7261>.8
-E 2.533<7774>-.15 G .033<686520706f6c79676f6e2c206769>-2.533 F .333 -.15
-<76652069>-.25 H .033<74732076>.15 F<65727469636573>-.15 E<61732061>133
-487.2 Q F1<2d75>2.5 E F0<747261636b2e>2.5 E F1<2d74>108 504 Q F2
-<8c6c65202e2e2e>2.5 E F0<546865>133 516 Q F2<8c6c6573>4.727 E F0 .317
-<636f6e7461696e206c69737473206f6620706f696e74732c206769>3.087 F -.15
-<7665>-.25 G 2.818<6e61>.15 G 2.818<736c>-2.818 G .318
-<617469747564652d6c6f6e67697475646520706169727320696e206465>-2.818 F
-2.818<67726565732e204966>-.15 F .318
-<746865208c727374208c6c65206973206e616d6564>2.818 F F1<ad>133 528 Q F0
-2.5<2c74>C<6865207374616e6461726420696e7075742069732074616b>-2.5 E
-<656e20696e73746561642e>-.1 E<54686520706f696e7473206f662065616368206c69
-73742061726520636f6e6e656374656420627920646f742d6461736820747261636b732e>
-5 E .227
-<506f696e747320696e206120747261636b208c6c65206d617920626520666f6c6c6f>
-133 544.8 R .227<776564206279206c6162656c20737472696e67732e>-.25 F 2.727
-<416c>5.227 G .227<6162656c20627265616b732074686520747261636b2e>-2.727 F
-2.727<416c>5.227 G .227<6162656c206d6179206265207072652d>-2.727 F<8c78>
-133 556.8 Q .29<6564206279>-.15 F F1<22>2.79 E F0<2c>A F1<3a>2.79 E F0
-2.79<2c6f>C<72>-2.79 E F1<21>2.79 E F0 .29
-<616e64206973207465726d696e617465642062792061206e65>5.29 F 2.79
-<776c696e652e20416e>-.25 F<756e7072658c78>2.79 E .29
-<656420737472696e67206f72206120737472696e67207072658c78>-.15 F .29
-<65642077697468>-.15 F F1<22>2.79 E F0<6973>2.79 E 1.555
-<646973706c61796564206174207468652064657369676e6174656420706f696e742e>
-133 568.8 R 1.555<546865208c7273742077>6.555 F 1.555<6f7264206f662061>
--.1 F F1<3a>4.055 E F0<6f72>4.055 E F1<21>4.055 E F0 1.555
-<737472696e67206e616d65732061207370656369616c2073796d626f6c2028736565>
-6.555 F<6f7074696f6e>133 580.8 Q F1<2d79>3.906 E F0 3.906<292e20416e>B
-1.406<6f7074696f6e616c206e756d65726963616c207365636f6e642077>3.906 F
-1.407<6f72642069732061207363616c652066>-.1 F 1.407<6163746f7220666f7220
-7468652073697a65206f66207468652073796d626f6c2c2031206279>-.1 F<646566>
-133 592.8 Q 2.5<61756c742e2041>-.1 F F1<3a>2.5 E F0<73796d626f6c20697320
-616c69676e656420776974682069747320746f7020746f20746865206e6f7274683b2061>
-2.5 E F1<21>2.5 E F0<73796d626f6c20697320616c69676e65642076>5 E
-<6572746963616c6c79206f6e2074686520706167652e>-.15 E F1<2d75>108 609.6 Q
-F2<8c6c65202e2e2e>2.5 E F0<53616d65206173>133 621.6 Q F1<2d74>2.5 E F0
-2.5<2c65>C<78636570742074686520747261636b732061726520756e62726f6b>-2.65
-E<656e206c696e65732e>-.1 E F1<2d43>108 638.4 Q F2<636f6c6f72>2.5 E F0
-.492<53657420636f6c6f722028696e697469616c6c7920626c61636b292e>133 650.4
-R .492<41742065616368206f6620746865206f7074696f6e73>5.492 F F1<2d62>
-2.992 E F0<2c>A F1<2d67>2.992 E F0<2c>A F1<2d6d>2.991 E F0<2c>A F1<2d74>
-2.991 E F0 2.991<2c61>C<6e64>-2.991 E F1<2d75>2.991 E F0 .491
-<746865206d6f737420726563656e746c792073657420636f6c6f72206973>2.991 F .4
-<72656d656d626572656420616e64207573656420746f20647261>133 662.4 R 2.9
-<7774>-.15 G .4<6865206173736f63696174656420646174612e>-2.9 F<546865>5.4
-E F2<636f6c6f72>3.101 E F0 .401<6973206f6e65206f66>3.631 F F1
-<626c61636b>2.901 E F0<2c>A F1 -.18<7265>2.901 G<64>.18 E F0<2c>A F1
-<6772>2.901 E<65656e>-.18 E F0<2c>A F1<626c7565>2.901 E F0 2.901<2c6f>C
-2.901<7261>-2.901 G .161
-<506f73745363726970742048534220636f64652c2073756368206173>133 674.4 R F1
-<2e33332c2e352c31>2.661 E F0 .161
-<286120627269676874206c696768742067726565656e292e>2.661 F .16<546865206e
-756d626572732072616e67652066726f6d203020746f203120666f7220687565>5.161 F
-<2872656420746f2076696f6c6574292c2073617475726174696f6e2028756e73617475
-726174656420746f2066756c6c2920616e64206272696768746e65737320286f66>133
-686.4 Q 2.5<6674>-.25 G 2.5<6f66>-2.5 G<756c6c292e>-2.5 E F1<2d79>108
-703.2 Q F2<8c6c65>2.5 E F0<546865>133 715.2 Q F2<8c6c65>4.618 E F0 .209<
-646573637269626573206120706c6f7474696e672073796d626f6c206173206120736571
-75656e6365206f66207374726f6b>2.888 F 2.709<65732e2041>-.1 F .209
-<6e6f726d616c2d73697a652073796d626f6c2068617320636f6f7264696e61746573>
-2.709 F .296<72756e6e696e672066726f6d20ad3120746f20312e>133 727.2 R .296
-<4c6f636174696f6e2028302c30292066>5.296 F .296<616c6c73206f6e2074686520
-706c6f7474696e6720706f696e74207768656e20612073796d626f6c20697320706c6163
-6564206279>-.1 F F1<3a>2.795 E F0<6f72>2.795 E F1<21>2.795 E F0<696e>
-5.295 E<32>535 768 Q 0 Cg EP
-%%Page: 3 3
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman at 0 SF 398.84<4d4150283129204d4150283129>72 48 R 2.5
-<6174>133 84 S 2.5<7261636b2e2028536565>-2.5 F<6f7074696f6e>2.5 E/F1 10
-/Times-Bold at 0 SF<2d74>2.5 E F0 2.5<2e2920546865>B
-<8c6c6520636f6e7461696e73206c696e6573206f662074686520666f6c6c6f>2.5 E
-<77696e6720666f726d732e>-.25 E F1<3a>133 96 Q/F2 10/Times-Italic at 0 SF
-<6e616d65>2.5 E F0
-<6e616d65206f662073796d626f6c2c206d75737420636f6d65208c727374>8.51 E F1
-<6d>133 108 Q F2 2.5<7879>2.5 G F0<6d6f>11.29 E .3 -.15<76652074>-.15 H
-2.5<6f67>.15 G -2.15 -.25<69762065>-2.5 H 2.5<6e70>.25 G<6f696e74>-2.5 E
-F1<76>133 120 Q F2 2.5<7879>2.5 G F0<647261>14.62 E 2.5<7776>-.15 G
-<6563746f722066726f6d20707265>-2.65 E
-<76696f757320706f696e7420746f2068657265>-.25 E F1<5072>87 136.8 Q
-<6f6a656374696f6e73>-.18 E F0 2.5<416d>108 153.6 S<656e75206f662070726f
-6a656374696f6e732069732070726f647563656420696e20726573706f6e736520746f20
-616e20756e6b6e6f>-2.5 E<776e>-.25 E F2<7072>2.5 E<6f6a656374696f6e>-.45
-E F0<2e>.24 E .298<45717561746f7269616c2070726f6a656374696f6e732063656e
-7465726564206f6e20746865205072696d65204d6572696469616e20286c6f6e67697475
-64652030292e>108 170.4 R -.15<5061>5.299 G .299<72616c6c656c732061726520
-737472616967687420686f72697a6f6e74616c206c696e65732e>.15 F F1<6d6572>108
-187.2 Q<6361746f72>-.18 E F0<657175616c6c792073706163656420737472616967
-6874206d6572696469616e732c20636f6e666f726d616c2c20737472616967687420636f
-6d7061737320636f7572736573>68.76 E F1<73696e75736f6964616c>108 199.2 Q
-F0<657175616c6c792073706163656420706172616c6c656c732c20657175616c2d6172
-65612c2073616d65206173>65.2 E F1<626f6e6e65>2.5 E F0<30>A F1<2e>A
-<63796c657175616c6172>108 211.2 Q<6561>-.18 E F2<6c617430>2.5 E F0<6571
-75616c6c7920737061636564207374726169676874206d6572696469616e732c20657175
-616c2d617265612c2074727565207363616c65206f6e>35.68 E F2<6c617430>2.59 E
-F1<63796c696e64726963616c>108 223.2 Q F0
-<63656e7472616c2070726f6a656374696f6e206f6e2074616e67656e742063>62.44 E
-<796c696e646572>-.15 E F1 -.18<7265>108 235.2 S<6374616e67756c6172>.18 E
-F2<6c617430>2.5 E F0<657175616c6c792073706163656420706172616c6c656c732c
-20657175616c6c7920737061636564207374726169676874206d6572696469616e732c20
-74727565207363616c65206f6e>40.13 E F2<6c617430>2.59 E F1<67616c6c>108
-247.2 Q F2<6c617430>2.5 E F0 2.001<706172616c6c656c73207370616365642073
-746572656f67726170686963616c6c79206f6e207072696d65206d6572696469616e2c20
-657175616c6c7920737061636564207374726169676874>74.38 F
-<6d6572696469616e732c2074727565207363616c65206f6e>216 259.2 Q F2
-<6c617430>2.59 E F1<6d6f6c6c7765696465>108 271.2 Q F0<28686f6d616c6f6772
-61706869632920657175616c2d617265612c2068656d6973706865726520697320612063
-6972636c65>64.67 E F1<67696c62657274>108 283.2 Q F0<676c6f6265206d617070
-656420636f6e666f726d616c6c79206f6e2068656d697370686572652c20766965>79.67
-E<776564206f7274686f67726170686963616c6c79>-.25 E .707<417a696d75746861
-6c2070726f6a656374696f6e732063656e7465726564206f6e20746865204e6f72746820
-506f6c652e>108 300 R -.15<5061>5.707 G .707
-<72616c6c656c732061726520636f6e63656e7472696320636972636c65732e>.15 F
-.707<4d6572696469616e732061726520657175616c6c79>5.707 F
-<7370616365642072616469616c206c696e65732e>108 312 Q F1
-<617a6571756964697374616e74>108 328.8 Q F0<657175616c6c7920737061636564
-20706172616c6c656c732c20747275652064697374616e6365732066726f6d20706f6c65>
-50.77 E F1<617a657175616c6172>108 340.8 Q<6561>-.18 E F0
-<657175616c2d61726561>56.52 E F1<676e6f6d6f6e6963>108 352.8 Q F0<63656e
-7472616c2070726f6a656374696f6e206f6e2074616e67656e7420706c616e652c207374
-72616967687420677265617420636972636c6573>66.33 E F1<706572737065637469>
-108 364.8 Q -.1<7665>-.1 G F2<64697374>2.6 E F0<766965>42.93 E
-<77656420616c6f6e6720656172746827>-.25 E 2.5<7361>-.55 G<786973>-2.5 E
-F2<64697374>2.85 E F0
-<65617274682072616469692066726f6d2063656e746572206f66206561727468>3.18 E
-F1<6f7274686f67726170686963>108 376.8 Q F0<766965>51.89 E
-<7765642066726f6d20696e8c6e697479>-.25 E F1<73746572>108 388.8 Q
-<656f67726170686963>-.18 E F0<636f6e666f726d616c2c2070726f6a656374656420
-66726f6d206f70706f7369746520706f6c65>49.86 E F1<6c617565>108 400.8 Q F2
--.15<7261>90.22 G<64697573>.15 E F0 2.5<3d74>2.77 G<616e2832>-2.5 E/F3
-10/Symbol SF<b4>A F2<636f6c61746974756465>.2 E F0
-<292c207573656420696e20582d726179206372797374616c6c6f6772617068>.18 E
-<79>-.05 E F1<8c73686579>108 412.8 Q<65>-.1 E F2<6e>2.5 E F0<7374657265
-6f67726170686963207365656e2066726f6d206a75737420696e73696465206d65646975
-6d2077697468207265667261637469>71.71 E .3 -.15<76652069>-.25 H<6e6465>
-.15 E<78>-.15 E F2<6e>2.86 E F1<6e657779>108 424.8 Q<6f726b>-.25 E<6572>
--.1 E F2 55.86<7272>2.5 G<6164697573>-56.01 E F0 3.503<3d6c>3.773 G
-<6f6728>-3.503 E F2<636f6c61746974756465>.2 E F0<2f>.18 E F2<72>.05 E F0
-<293a>.73 E F2<4e65>4.203 E 3.503<7759>-.15 G<6f726b>-4.423 E<6572>-.1 E
-F0 1.003<6d61702066726f6d20766965>4.233 F 1.002
-<77696e6720706564657374616c206f6620726164697573>-.25 F F2<72>3.552 E F0
-<6465>216 436.8 Q<6772656573>-.15 E .61<506f6c617220636f6e69632070726f6a
-656374696f6e732073796d6d65747269632061626f757420746865205072696d65204d65
-72696469616e2e>108 453.6 R -.15<5061>5.61 G .61
-<72616c6c656c7320617265207365>.15 F .61
-<676d656e7473206f6620636f6e63656e7472696320636972636c65732e>-.15 F<4578
-6365707420696e2074686520426f6e6e652070726f6a656374696f6e2c206d6572696469
-616e732061726520657175616c6c79207370616365642072616469616c206c696e657320
-6f7274686f676f6e616c20746f2074686520706172616c6c656c732e>108 465.6 Q F1
-<636f6e6963>108 482.4 Q F2<6c617430>2.5 E F0<63656e7472616c2070726f6a65
-6374696f6e206f6e20636f6e652074616e67656e74206174>67.72 E F2<6c617430>
-2.59 E F1<73696d706c65636f6e6963>108 494.4 Q F2<6c617430206c617431>2.5 E
-F0<657175616c6c792073706163656420706172616c6c656c732c207472756520736361
-6c65206f6e>21.88 E F2<6c617430>2.59 E F0<616e64>2.97 E F2<6c617431>2.59
-E F1<6c616d62657274>108 506.4 Q F2<6c617430206c617431>2.5 E F0
-<636f6e666f726d616c2c2074727565207363616c65206f6e>38 E F2<6c617430>2.59
-E F0<616e64>2.97 E F2<6c617431>2.59 E F1<616c62657273>108 518.4 Q F2
-<6c617430206c617431>2.5 E F0
-<657175616c2d617265612c2074727565207363616c65206f6e>45.77 E F2<6c617430>
-2.59 E F0<616e64>2.97 E F2<6c617431>2.59 E F1<626f6e6e65>108 530.4 Q F2
-<6c617430>2.5 E F0<657175616c6c792073706163656420706172616c6c656c732c20
-657175616c2d617265612c20706172616c6c656c>63.82 E F2<6c617430>2.59 E F0
-<6465>2.97 E -.15<7665>-.25 G
-<6c6f7065642066726f6d2074616e67656e7420636f6e65>.15 E<50726f6a656374696f
-6e7320776974682062696c61746572616c2073796d6d657472792061626f757420746865
-205072696d65204d6572696469616e20616e64207468652065717561746f72>108 547.2
-Q<2e>-.55 E F1<706f6c79636f6e6963>108 564 Q F0<706172616c6c656c73206465>
-67.44 E -.15<7665>-.25 G<6c6f7065642066726f6d2074616e67656e7420636f6e65
-732c20657175616c6c792073706163656420616c6f6e67205072696d65204d6572696469
-616e>.15 E F1<6169746f6666>108 576 Q F0<657175616c2d617265612070726f6a65
-6374696f6e206f6620676c6f6265206f6e746f20322d746f2d3120656c6c697073652c20
-6261736564206f6e>85.23 E F2<617a657175616c6172>2.83 E<6561>-.37 E F1
-<6c616772616e6765>108 588 Q F0<636f6e666f726d616c2c206d6170732077686f6c
-652073706865726520696e746f206120636972636c65>70.78 E F1
-<626963656e74726963>108 600 Q F2<6c6f6e30>2.5 E F0 1.919<706f696e747320
-706c6f74746564206174207472756520617a696d7574682066726f6d207477>49.95 F
-4.418<6f63>-.1 G 1.918
-<656e74657273206f6e207468652065717561746f72206174206c6f6e67697475646573>
--4.418 F F2<6c6f6e30>216 612 Q F0 2.5<2c67>.47 G<7265617420636972636c65
-7320617265207374726169676874206c696e657320286120737472657463686564>-2.5
-E F2<676e6f6d6f6e6963>2.5 E F0<29>2.5 E F1<656c6c6970746963>108 624 Q F2
-<6c6f6e30>2.5 E F0 .125<706f696e747320706c6f7474656420617420747275652064
-697374616e63652066726f6d207477>58.83 F 2.625<6f63>-.1 G .126
-<656e74657273206f6e207468652065717561746f72206174206c6f6e67697475646573>
--2.625 F F2<6c6f6e30>2.716 E F1<676c6f62>108 636 Q<756c6172>-.2 E F0
-1.005<68656d6973706865726520697320636972636c652c2063697263756c6172206172
-63206d6572696469616e7320657175616c6c7920737061636564206f6e2065717561746f
-72>72.08 F 3.505<2c63>-.4 G<697263756c6172>-3.505 E<61726320706172616c6c
-656c7320657175616c6c7920737061636564206f6e20302d20616e642039302d6465>216
-648 Q<67726565206d6572696469616e73>-.15 E F1 -.1<7661>108 660 S
-<6e646572>.1 E<6772696e74656e>-.1 E F0 .448
-<73706865726520697320636972636c652c206d6572696469616e7320617320696e>
-47.09 F F2<676c6f62>2.948 E<756c6172>-.2 E F0 2.948<2c63>.73 G .448
-<697263756c61722061726320706172616c6c656c7320726573656d626c65>-2.948 F
-F2<6d6572>3.329 E<63612d>-.37 E<746f72>216 672 Q F1<656973656e6c6f6872>
-108 684 Q F0<636f6e666f726d616c2077697468206e6f2073696e67756c6172697469
-65732c20736861706564206c696b>69.11 E 2.5<6570>-.1 G<6f6c79636f6e6963>
--2.5 E<446f75626c7920706572696f64696320636f6e666f726d616c2070726f6a6563
-74696f6e732e>108 700.8 Q F1<677579>108 717.6 Q<6f75>-.25 E F0 2.5<5761>
-82.13 G<6e6420452068656d69737068657265732061726520737175617265>-2.5 E
-<33>535 768 Q 0 Cg EP
-%%Page: 4 4
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman at 0 SF 398.84<4d4150283129204d4150283129>72 48 R/F1 10
-/Times-Bold at 0 SF<7371756172>108 84 Q<65>-.18 E F0 -.1<776f>79.29 G<726c
-6420697320737175617265207769746820506f6c657320617420646961676f6e616c6c79
-206f70706f7369746520636f726e657273>.1 E F1<7465747261>108 96 Q F0 .011<
-6d6170206f6e207465747261686564726f6e207769746820656467652074616e67656e74
-20746f205072696d65204d6572696469616e206174205320506f6c652c20756e666f6c64
-656420696e746f>87.46 F<657175696c61746572616c20747269616e676c65>216 108
-Q F1<686578>108 120 Q F0 -.1<776f>93 G .246<726c64206973206865>.1 F .247
-<7861676f6e2063656e7465726564206f6e204e20506f6c652c204e20616e6420532068
-656d69737068657265732061726520657175696c61746572616c20747269616e2d>-.15
-F<676c6573>216 132 Q
-<4d697363656c6c616e656f75732070726f6a656374696f6e732e>108 148.8 Q F1
-<6861727269736f6e>108 165.6 Q/F2 10/Times-Italic at 0 SF
-<6469737420616e676c65>2.5 E F0 1.168<6f626c6971756520706572737065637469>
-29.66 F 1.468 -.15<76652066>-.25 H 1.168<726f6d2061626f>.15 F 1.468 -.15
-<76652074>-.15 H 1.168<6865204e6f72746820506f6c652c>.15 F F2<64697374>
-4.017 E F0 1.167<65617274682072616469692066726f6d2063656e746572206f66>
-4.347 F
-<65617274682c206c6f6f6b696e6720616c6f6e67207468652044617465204c696e65>
-216 177.6 Q F2<616e676c65>2.83 E F0<6465>2.68 E<6772656573206f66>-.15 E
-2.5<6676>-.25 G<6572746963616c>-2.65 E F1<74726170657a6f6964616c>108
-189.6 Q F2<6c617430206c617431>2.5 E F0 .914<657175616c6c7920737061636564
-20706172616c6c656c732c207374726169676874206d6572696469616e7320657175616c
-6c792073706163656420616c6f6e6720706172616c6c656c732c2074727565>23.55 F
-<7363616c65206174>216 201.6 Q F2<6c617430>2.59 E F0<616e64>2.97 E F2
-<6c617431>2.59 E F0<6f6e205072696d65204d6572696469616e>2.5 E F1
-<6c756e65286c61742c616e676c6529>216 213.6 Q F0 .009
-<636f6e666f726d616c2c20706f6c6172206361702061626f>2.51 F .309 -.15
-<7665206c>-.15 H<61746974756465>.15 E F2<6c6174>2.599 E F0 .009
-<6d61707320746f20636f6e>3.189 F .309 -.15<766578206c>-.4 H .009
-<756e652077697468>.15 F<6769>216 225.6 Q -.15<7665>-.25 G<6e>.15 E F2
-<616e676c65>2.83 E F0<61742039304520616e6420393057>2.68 E .694
-<526574726f617a696d757468616c2070726f6a656374696f6e732e>108 242.4 R .694
-<41742065>5.694 F -.15<7665>-.25 G .694
-<727920706f696e742074686520616e676c65206265747765656e2076>.15 F .694<65
-72746963616c20616e642061207374726169676874206c696e6520746f20604d65636361
-272c206c6174692d>-.15 F<74756465>108 254.4 Q F2<6c617430>2.59 E F0<6f6e
-20746865207072696d65206d6572696469616e2c20697320746865207472756520626561
-72696e67206f66204d656363612e>2.97 E F1<6d65636361>108 271.2 Q F2
-<6c617430>2.5 E F0<657175616c6c79207370616365642076>63.29 E
-<6572746963616c206d6572696469616e73>-.15 E F1<686f6d696e67>108 283.2 Q
-F2<6c617430>2.5 E F0
-<64697374616e63657320746f204d65636361206172652074727565>57.71 E 1.062
-<4d617073206261736564206f6e207468652073706865726f69642e>108 300 R 1.061
-<4f662067656f6465746963207175616c697479>6.061 F 3.561<2c74>-.65 G 1.061
-<686573652070726f6a656374696f6e7320646f206e6f74206d616b>-3.561 F 3.561
-<6573>-.1 G 1.061<656e736520666f722074696c746564206f7269656e74612d>
--3.561 F 2.5<74696f6e732e2046>108 312 R<6f72206465736372697074696f6e732c
-2073656520636f72726573706f6e64696e67206d6170732061626f>-.15 E -.15<7665>
--.15 G<2e>.15 E F1<73705f6d6572>108 328.8 Q<6361746f72>-.18 E
-<73705f616c62657273>108 340.8 Q F2<6c617430206c617431>2.5 E/F3 10.95
-/Times-Bold at 0 SF<4558414d504c4553>72 357.6 Q F1
-<6d617020706572737065637469>108 369.6 Q .2 -.1<76652031>-.1 H
-<2e303235202d6f2034302e3735203734>.1 E F0 2.768<4176>144 381.6 S<6965>
--2.768 E 2.768<776c>-.25 G .268<6f6f6b696e6720646f>-2.768 F .269
-<776e206f6e204e65>-.25 F 2.769<7759>-.25 G .269<6f726b2066726f6d20313030
-206d696c65732028302e303235206f662074686520343030302d6d696c65206561727468
-20726164697573292075702e>-3.869 F<546865>5.269 E .332
-<6a6f622063616e20626520646f6e652066>144 393.6 R .332<617374657220627920
-6c696d6974696e6720746865206d617020736f206173206e6f7420746f2060706c6f7427
-2074686520696e>-.1 F .331<76697369626c652070617274206f66207468652077>-.4
-F<6f726c643a>-.1 E F1<6d61702d>2.831 E F0<706572737065637469>144 405.6 Q
--.15<7665>-.25 G F1<312e303235>.15 E F0<2d6f>A F1<34302e3735>A F0<3734>A
-F1<2d6c>A F0<3230>A F1<3630>A F0<3330>A F1<313030>A F0 8.713<2e41>C
-3.713<63697263756c617220626f726465722063616e20626520666f7263656420627920
-616464696e67206f7074696f6e>-2.5 F F1<2d77>144 417.6 Q F0<37372e3333>A F1
-<2e>A F0 .474<284c617469747564652037372e33332066>5.474 F .473<616c6c7320
-6a75737420696e73696465206120706f6c617220636170206f66206f70656e696e672061
-6e676c6520617263636f7328312f312e30323529203d2031322e36383034>-.1 F<6465>
-144 429.6 Q<67726565732e29>-.15 E F1<6d6170206d6572>108 446.4 Q
-<6361746f72202d6f2034392e3235202d31303620313830>-.18 E F0 .206<416e2060
-65717561746f7269616c27206d6170206f66207468652065617274682063656e74657265
-64206f6e204e65>144 458.4 R 2.707<7759>-.25 G 2.707<6f726b2e20546865>
--3.807 F .207
-<706f6c65206f6620746865206d617020697320706c61636564203930206465>2.707 F
-<6772656573>-.15 E -2.3 -.15<61772061>144 470.4 T 3.597<7928>.15 G 1.097
-<34302e37352b34392e32353d393029206f6e20746865206f746865722073696465206f
-66207468652065617274682e>-3.597 F 3.596<4131>6.096 G 1.096
-<38302074776973742061726f756e642074686520706f6c65206f6620746865206d6170>
--3.596 F .57<617272616e67657320746861742074686520605072696d65204d657269
-6469616e27206f6620746865206d61702072756e732066726f6d2074686520706f6c6520
-6f6620746865206d6170206f>144 482.4 R -.15<7665>-.15 G 3.07<7274>.15 G
-.57<6865204e6f72746820506f6c65>-3.07 F .872<746f204e65>144 494.4 R 3.372
-<7759>-.25 G .872<6f726b20696e7374656164206f6620646f>-4.472 F .872
-<776e20746865206261636b2073696465206f66207468652065617274682e>-.25 F
-.871<5468652073616d65206566>5.871 F .871
-<666563742063616e206265206861642066726f6d>-.25 F F1<6d6170>3.371 E
-<6d6572>144 506.4 Q<6361746f72202d6f203133302e3735203734>-.18 E<6d617020
-616c62657273203238203435202d6c20323020353020363020313330202d6d2073746174
-6573>108 523.2 Q F0 2.5<4163>144 535.2 S<7573746f6d6172792063757276>-2.5
-E<65642d6c61746974756465206d6170206f662074686520556e69746564205374617465
-732e>-.15 E F1<6d6170206861727269736f6e2032203330202d6c202d393020393020
-31323020323430202d6f20393020302030>108 552 Q F0 3.793<4166>144 564 S
-1.293<616e20766965>-3.893 F 3.794<7763>-.25 G -.15<6f7665>-3.794 G 1.294
-<72696e67203630206465>.15 F 1.294<6772656573206f6e2065697468657220736964
-65206f66207468652044617465204c696e652c206173207365656e2066726f6d206f6e65
-20656172746820726164697573>-.15 F<61626f>144 576 Q 1.233 -.15<76652074>
--.15 H .933<6865204e6f72746820506f6c652067>.15 F .933
-<617a696e672061742074686520656172746827>-.05 F 3.432<736c>-.55 G .932
-<696d622c207768696368206973203330206465>-3.432 F .932<6772656573206f66>
--.15 F 3.432<6676>-.25 G 3.432<6572746963616c2e20546865>-3.582 F F1
-<2d6f>3.432 E F0<6f7074696f6e>3.432 E -.15<6f7665>144 588 S
-<7272696465732074686520646566>.15 E<61756c74>-.1 E F1
-<2d6f203930203020313830>2.5 E F0 2.5<2c77>C<686963682077>-2.5 E<6f756c64
-20726f7461746520746865207363656e6520746f20626568696e6420746865206f627365
-7276>-.1 E<6572>-.15 E<2e>-.55 E F3<46494c4553>72 604.8 Q F1
-<244d41504449522f6c69622f5b312d345d3f3f>108 616.8 Q F0 -.8<576f>144
-628.8 S<726c6420446174612042616e6b2049492c20666f72>.8 E F1<2d66>2.5 E
-<244d41504449522f6c69622f2a>108 645.6 Q F0<6d61707320666f72>144 657.6 Q
-F1<2d6d>2.5 E<244d41504449522f6c69622f2a2e78>108 674.4 Q F0
-<6d617020696e6465>144 686.4 Q -.15<7865>-.15 G<73>.15 E F1
-<244d41504449522f62696e2f6d6170>108 703.2 Q F0<4d617020647269>144 715.2
-Q -.15<7665>-.25 G 2.5<7270>.15 G<726f6772616d>-2.5 E<34>535 768 Q 0 Cg
-EP
-%%Page: 5 5
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman at 0 SF 398.84<4d4150283129204d4150283129>72 48 R/F1
-10.95/Times-Bold at 0 SF<53454520414c534f>72 84 Q/F2 10/Times-Italic at 0 SF
-<6d6170>108 96 Q F0<2833292c>.19 E F2<6d6170>2.5 E F0<283529>.19 E F1
-<444941>72 112.8 Q<474e4f5354494353>-.602 E F0 .105
-<446961676e6f737469637320696e636c75646520612076>108 124.8 R .105
-<657273696f6e206964656e74698c6572>-.15 F 5.105<2e54>-.55 G<687573>-5.105
-E F2<6d6170>2.985 E F0 .105<77697468206e6f206172>2.795 F .105<67756d656e
-7473206d6179206265207573656420746f2061736365727461696e207468652076>-.18
-F<657273696f6e2e>-.15 E .177<604d6170207365656d7320746f20626520656d7074
-79278a6120636f617273652073757276>108 141.6 R .477 -.15<65792066>-.15 H
-.177<6f756e64207a65726f2065>.15 F .177<7874656e742077697468696e20746865>
--.15 F/F3 10/Times-Bold at 0 SF<2d6c>2.677 E F0<616e64>2.677 E F3<2d77>
-2.677 E F0 .176<626f756e64733b20666f72206d617073206f66206c696d2d>2.677 F
-<697465642065>108 153.6 Q
-<7874656e74207468652067726964207265736f6c7574696f6e2c>-.15 E F2 -.37
-<7265>2.5 G<73>.37 E F0 2.5<2c6f>.27 G 2.5<7274>-2.5 G
-<6865206c696d697473206d6179206861>-2.5 E .3 -.15<76652074>-.2 H 2.5
-<6f62>.15 G 2.5<6572>-2.5 G<658c6e65642e>-2.5 E F1 -.11<4255>72 170.4 S
-<4753>.11 E F0 -.4<5769>108 182.4 S<6e646f>.4 E<777320286f7074696f6e>
--.25 E F3<2d77>2.5 E F0 2.5<2963>C
-<616e6e6f742063726f7373207468652044617465204c696e652e>-2.5 E<5365>108
-194.4 Q<676d656e747320746861742063726f7373206120626f72646572206172652064
-726f707065642c206e6f7420636c69707065642e>-.15 E<5365>108 206.4 Q .681
-<676d656e7473207468617420747261>-.15 F -.15<7665>-.2 G .681
-<72736520746f6f2066>.15 F .681<6172206163726f73732061206d6170206d617920
-62652064726f7070656420696e2074686520737570706f736974696f6e20746861742074
-6865>-.1 F 3.181<7977>-.15 G .682<65726520696e74656e64656420746f>-3.181
-F .182<777261702061726f756e6420617420616e20656467652e>108 218.4 R .182
-<496e74656e74696f6e616c6c79206c6f6e67207365>5.182 F .182<676d656e74732c
-206173206f6674656e206f6363757220696e20626f756e6461727920747261636b732028
-736565>-.15 F F3<2d62>2.681 E F0 .181<292c20617265207061727469632d>B
-.048<756c61726c79207375736365707469626c6520746f20746869732074726561746d
-656e742e>108 230.4 R .049
-<5468657265206973206e6f2067656e6572616c208c782c2062>5.049 F .049
-<757420736f6d6574696d657320746865206c6f6e67207365>-.2 F .049
-<676d656e74732063616e2062652062726f6b>-.15 F<656e>-.1 E
-<696e746f2073686f72746572207069656365732e>108 242.4 Q
-<54686520776573742d6c6f6e6769747564652d706f73697469>108 254.4 Q .3 -.15
-<76652063>-.25 H<6f6e>.15 E -.15<7665>-.4 G
-<6e74696f6e20626574726179732059>.15 E<616e6b>-1 E
-<6565206368617576696e69736d2e>-.1 E F2<47696c62657274>107.98 266.4 Q F0<
-73686f756c642062652061206d61702066726f6d2073706865726520746f207370686572
-652c20696e646570656e64656e74206f6620746865206d617070696e672066726f6d2073
-706865726520746f20706c616e652e>3.18 E
-<546865206f7574657220626f756e64617279206f66>108 278.4 Q F2
-<656c6c6970746963>2.69 E F0<697320706f6f726c7920647261>2.81 E<776e2e>
--.15 E F2<4c616d62657274>108.58 290.4 Q F0<7769746820626f7468207374616e
-6461726420706172616c6c656c73206e6561722074686520736f75746820706f6c652069
-7320726566757365643b2069742073686f756c6420617070726f6163682073746572656f
-677261706869632e>3.18 E F1<53454520414c534f>72 307.2 Q F2<6d6170>108
-319.2 Q F0<2833292c>.19 E F2<6d6170>2.5 E F0<283529>.19 E F1
-<434f50595249474854>72 336 Q F0<436f70>108 348 Q
-<7972696768742028432920313939382c204c7563656e742054>-.1 E
-<6563686e6f6c6f67696573>-.7 E<416c6c2072696768747320726573657276>108 360
-Q<6564>-.15 E<35>535 768 Q 0 Cg EP
-%%Trailer
-end
-%%EOF
diff --git a/src/doug/doc/map.3 b/src/doug/doc/map.3
deleted file mode 100755
index 0795c1b..0000000
--- a/src/doug/doc/map.3
+++ /dev/null
@@ -1,151 +0,0 @@
-.so tmac.anx
-.TH MAP 3
-.SH NAME
-orient, normalize \- map projections
-.SH SYNOPSIS
-.B orient(double lat, double lon, double rot)
-.PP
-.B normalize(struct place *p)
-.SH DESCRIPTION
-.PP
-The functions
-.I orient
-and
-.I normalize
-plus a collection of map projection generators
-are loaded by
-option
-.BR -lmap
-of
-.IR ld (1).
-Most of them
-calculate maps for a spherical earth.
-Each map projection is available in one standard
-form, into which data must be normalized
-for transverse
-or nonpolar projections.
-.PP
-Each standard projection is displayed with the Prime
-Meridian (longitude 0) being a straight vertical line, along which North
-is up.
-The orientation of nonstandard projections is specified by
-.I orient.
-Imagine a transparent gridded sphere around the globe.
-First turn the overlay about the North Pole
-so that the Prime Meridian (longitude 0)
-of the overlay coincides with meridian
-.I lon
-on the globe.
-Then tilt the North Pole of the
-overlay along its Prime Meridian to latitude
-.I lat
-on the globe.
-Finally again turn the
-overlay about its `North Pole' so
-that its Prime Meridian coincides with the previous position
-of (the overlay's) meridian
-.I rot.
-Project the desired map in
-the standard form appropriate to the overlay, but presenting
-information from the underlying globe.
-It is not useful to use
-.I orient
-without using
-.IR normalize .
-.PP
-.I Normalize
-converts latitude-longitude coordinates on the globe
-to coordinates on the overlaid grid.
-The coordinates and their sines and cosines
-are input to
-.I normalize
-in a
-.B place
-structure.
-Transformed coordinates and their sines and cosines
-are returned in the same structure.
-.PP
-.EX
-.nr xx \w'12345678'
-.ta \n(xxu +\n(xxu +\n(xxu +\n(xxu +\n(xxu +\n(xxu
- struct place {
- double radianlat, sinlat, coslat;
- double radianlon, sinlon, coslon;
- };
-.EE
-.PP
-The projection generators
-return a pointer to a function that converts normalized coordinates
-to
-.I x-y
-coordinates for the desired map, or
-0 if the required projection
-is not available.
-The returned function is exemplified by
-.I proj
-in this example:
-.PP
-.EX
-.ta \n(xxu +\n(xxu +\n(xxu +\n(xxu +\n(xxu +\n(xxu
- struct place pt;
- int (*proj)() = mercator();
- double x, y;
-.EE
-.PP
-.EX
- orient(45.0, 30.0, 180.0); /* set coordinate rotation */
-.EE
-.PP
-.EX
- . . . /* fill in the pt structure */
- normalize(&pt); /* rotate coordinates */
- if((*proj)(&pt, &x, &y) > 0) /* project onto x,y plane */
- plot(x, y);
-.EE
-.PP
-The projection function
-.B (*proj)()
-returns 1 for a good point,
-0 for a point on a wrong
-sheet (e.g. the back of the world in a perspective
-projection), and \-1 for a point that is deemed
-unplottable (e.g. points near the poles on a Mercator projection).
-.PP
-Scaling may be determined from the
-.I x-y
-coordinates of
-selected points.
-Latitudes and longitudes are measured in degrees for
-ease of specification for
-.I orient
-and the projection generators
-but in radians for ease of calculation
-for
-.I normalize
-and
-.I proj.
-In either case
-latitude is measured positive north of the equator,
-and longitude positive west of Greenwich.
-Radian longitude should be limited to the range
-.if t .I \-\(*p\(<=lon<\(*p.
-.if n .I -pi <= lon < pi.
-.PP
-Projection generators have the same names and the same
-arguments as the projections named in
-.IR map (1).
-All arguments are
-.BR double .
-.SH "SEE ALSO
-.IR map (1),
-.IR map (5),
-.SH BUGS
-Only one projection and one orientation can be active at a time.
-.br
-The west-longitude-positive convention
-betrays Yankee chauvinism.
-.SH COPYRIGHT
-.PP
-Copyright (C) 1998, Lucent Technologies
-.br
-All rights reserved
diff --git a/src/doug/doc/map.3.ps b/src/doug/doc/map.3.ps
deleted file mode 100755
index 181a02d..0000000
--- a/src/doug/doc/map.3.ps
+++ /dev/null
@@ -1,396 +0,0 @@
-%!PS-Adobe-3.0
-%%Creator: groff version 1.18.1
-%%CreationDate: Sat Dec 20 11:27:27 2003
-%%DocumentNeededResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Courier
-%%+ font Symbol
-%%DocumentSuppliedResources: procset grops 1.18 1
-%%+ font Symbol-Slanted
-%%Pages: 2
-%%PageOrder: Ascend
-%%Orientation: Portrait
-%%EndComments
-%%BeginProlog
-%%BeginResource: procset grops 1.18 1
-/setpacking where{
-pop
-currentpacking
-true setpacking
-}if
-/grops 120 dict dup begin
-/SC 32 def
-/A/show load def
-/B{0 SC 3 -1 roll widthshow}bind def
-/C{0 exch ashow}bind def
-/D{0 exch 0 SC 5 2 roll awidthshow}bind def
-/E{0 rmoveto show}bind def
-/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
-/G{0 rmoveto 0 exch ashow}bind def
-/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/I{0 exch rmoveto show}bind def
-/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
-/K{0 exch rmoveto 0 exch ashow}bind def
-/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/M{rmoveto show}bind def
-/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
-/O{rmoveto 0 exch ashow}bind def
-/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/Q{moveto show}bind def
-/R{moveto 0 SC 3 -1 roll widthshow}bind def
-/S{moveto 0 exch ashow}bind def
-/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/SF{
-findfont exch
-[exch dup 0 exch 0 exch neg 0 0]makefont
-dup setfont
-[exch/setfont cvx]cvx bind def
-}bind def
-/MF{
-findfont
-[5 2 roll
-0 3 1 roll
-neg 0 0]makefont
-dup setfont
-[exch/setfont cvx]cvx bind def
-}bind def
-/level0 0 def
-/RES 0 def
-/PL 0 def
-/LS 0 def
-/MANUAL{
-statusdict begin/manualfeed true store end
-}bind def
-/PLG{
-gsave newpath clippath pathbbox grestore
-exch pop add exch pop
-}bind def
-/BP{
-/level0 save def
-1 setlinecap
-1 setlinejoin
-72 RES div dup scale
-LS{
-90 rotate
-}{
-0 PL translate
-}ifelse
-1 -1 scale
-}bind def
-/EP{
-level0 restore
-showpage
-}bind def
-/DA{
-newpath arcn stroke
-}bind def
-/SN{
-transform
-.25 sub exch .25 sub exch
-round .25 add exch round .25 add exch
-itransform
-}bind def
-/DL{
-SN
-moveto
-SN
-lineto stroke
-}bind def
-/DC{
-newpath 0 360 arc closepath
-}bind def
-/TM matrix def
-/DE{
-TM currentmatrix pop
-translate scale newpath 0 0 .5 0 360 arc closepath
-TM setmatrix
-}bind def
-/RC/rcurveto load def
-/RL/rlineto load def
-/ST/stroke load def
-/MT/moveto load def
-/CL/closepath load def
-/Fr{
-setrgbcolor fill
-}bind def
-/Fk{
-setcmykcolor fill
-}bind def
-/Fg{
-setgray fill
-}bind def
-/FL/fill load def
-/LW/setlinewidth load def
-/Cr/setrgbcolor load def
-/Ck/setcmykcolor load def
-/Cg/setgray load def
-/RE{
-findfont
-dup maxlength 1 index/FontName known not{1 add}if dict begin
-{
-1 index/FID ne{def}{pop pop}ifelse
-}forall
-/Encoding exch def
-dup/FontName exch def
-currentdict end definefont pop
-}bind def
-/DEFS 0 def
-/EBEGIN{
-moveto
-DEFS begin
-}bind def
-/EEND/end load def
-/CNT 0 def
-/level1 0 def
-/PBEGIN{
-/level1 save def
-translate
-div 3 1 roll div exch scale
-neg exch neg exch translate
-0 setgray
-0 setlinecap
-1 setlinewidth
-0 setlinejoin
-10 setmiterlimit
-[]0 setdash
-/setstrokeadjust where{
-pop
-false setstrokeadjust
-}if
-/setoverprint where{
-pop
-false setoverprint
-}if
-newpath
-/CNT countdictstack def
-userdict begin
-/showpage{}def
-}bind def
-/PEND{
-clear
-countdictstack CNT sub{end}repeat
-level1 restore
-}bind def
-end def
-/setpacking where{
-pop
-setpacking
-}if
-%%EndResource
-%%IncludeResource: font Symbol
-%%IncludeResource: font Times-Roman
-%%IncludeResource: font Times-Bold
-%%IncludeResource: font Times-Italic
-%%IncludeResource: font Courier
-%%BeginResource: font Symbol-Slanted
-%%DocumentNeededResources: font Symbol
-/MakeTransformedFont{
-findfont dup maxlength dict begin
-{
-exch dup dup/FID ne exch/UniqueID ne and{
-exch def
-}{
-pop pop
-}ifelse
-}forall
-/FontBBox
-currentdict/FontBBox get
-4 array copy def
-FontBBox aload pop
-4 index transform 4 2 roll
-4 index transform 4 2 roll
-FontBBox astore pop
-FontMatrix exch matrix concatmatrix
-/FontMatrix exch def
-dup/FontName exch def
-currentdict end
-definefont pop
-}bind def
-/Symbol-Slanted
-[.89 0.0 15.5 dup sin exch cos div .89 0.0 0.0]
-/Symbol
-MakeTransformedFont
-%%EndResource
-grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
-def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron
-/Zcaron/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
-/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
-/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
-/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
-/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
-/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
-/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
-/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
-/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
-/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
-/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
-/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
-/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
-/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
-/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
-/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
-/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
-/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
-/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
-/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
-/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
-/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
-/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
-/Courier at 0 ENC0/Courier RE/Times-Italic at 0 ENC0/Times-Italic RE
-/Times-Bold at 0 ENC0/Times-Bold RE/Times-Roman at 0 ENC0/Times-Roman RE
-%%EndProlog
-%%Page: 1 1
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman at 0 SF 398.84<4d4150283329204d4150283329>72 48 R/F1
-10.95/Times-Bold at 0 SF -.219<4e41>72 84 S<4d45>.219 E F0
-<6f7269656e742c206e6f726d616c697a6520ad206d61702070726f6a656374696f6e73>
-108 96 Q F1<53594e4f50534953>72 112.8 Q/F2 10/Times-Bold at 0 SF<6f7269656e
-7428646f75626c65206c61742c20646f75626c65206c6f6e2c20646f75626c652072>108
-124.8 Q<6f7429>-.18 E
-<6e6f726d616c697a652873747275637420706c616365202a7029>108 141.6 Q F1
-<4445534352495054494f4e>72 158.4 Q F0 1.282<5468652066756e6374696f6e73>
-108 170.4 R/F3 10/Times-Italic at 0 SF<6f7269656e74>4.012 E F0<616e64>4.462
-E F3<6e6f726d616c697a65>4.142 E F0 1.281<706c7573206120636f6c6c65637469
-6f6e206f66206d61702070726f6a656374696f6e2067656e657261746f72732061726520
-6c6f61646564206279206f7074696f6e>3.962 F F2<2d6c6d6170>108 182.4 Q F0
-<6f66>2.69 E F3<6c64>2.69 E F0 2.69<2831292e204d6f7374>.77 F .19<6f6620
-7468656d2063616c63756c617465206d61707320666f7220612073706865726963616c20
-65617274682e>2.69 F .191
-<45616368206d61702070726f6a656374696f6e2069732061>5.191 F -.25<7661>-.2
-G .191<696c61626c6520696e206f6e65>.25 F<7374616e6461726420666f726d2c2069
-6e746f2077686963682064617461206d757374206265206e6f726d616c697a656420666f
-72207472616e7376>108 194.4 Q
-<65727365206f72206e6f6e706f6c61722070726f6a656374696f6e732e>-.15 E .739<
-45616368207374616e646172642070726f6a656374696f6e20697320646973706c617965
-64207769746820746865205072696d65204d6572696469616e20286c6f6e676974756465
-203029206265696e6720612073747261696768742076>108 211.2 R .739
-<6572746963616c206c696e652c>-.15 F 1.584
-<616c6f6e67207768696368204e6f7274682069732075702e>108 223.2 R 1.584<5468
-65206f7269656e746174696f6e206f66206e6f6e7374616e646172642070726f6a656374
-696f6e732069732073706563698c6564206279>6.584 F F3<6f7269656e742e>4.314 E
-F0 1.584<496d6167696e652061>6.584 F .547<7472616e73706172656e7420677269
-64646564207370686572652061726f756e642074686520676c6f62652e>108 235.2 R
-.547<4669727374207475726e20746865206f>5.547 F -.15<7665>-.15 G .547<726c
-61792061626f757420746865204e6f72746820506f6c6520736f20746861742074686520
-5072696d65>.15 F .204
-<4d6572696469616e20286c6f6e676974756465203029206f6620746865206f>108
-247.2 R -.15<7665>-.15 G .204
-<726c617920636f696e63696465732077697468206d6572696469616e>.15 F F3
-<6c6f6e>2.794 E F0 .205<6f6e2074686520676c6f62652e>2.944 F .205
-<5468656e2074696c7420746865204e6f72746820506f6c65206f66>5.205 F .816
-<746865206f>108 259.2 R -.15<7665>-.15 G .816<726c617920616c6f6e67206974
-73205072696d65204d6572696469616e20746f206c61746974756465>.15 F F3
-<6c6174>3.406 E F0 .816<6f6e2074686520676c6f62652e>3.996 F .815
-<46696e616c6c79206167>5.815 F .815<61696e207475726e20746865206f>-.05 F
--.15<7665>-.15 G .815<726c61792061626f757420697473>.15 F .207<604e6f7274
-6820506f6c652720736f207468617420697473205072696d65204d6572696469616e2063
-6f696e636964657320776974682074686520707265>108 271.2 R .207
-<76696f757320706f736974696f6e206f662028746865206f>-.25 F -.15<7665>-.15
-G<726c617927>.15 E .207<7329206d6572696469616e>-.55 F F3 -.45<726f>2.707
-G<742e>.45 E F0 .115<50726f6a656374207468652064657369726564206d61702069
-6e20746865207374616e6461726420666f726d20617070726f70726961746520746f2074
-6865206f>108 283.2 R -.15<7665>-.15 G<726c6179>.15 E 2.614<2c62>-.65 G
-.114
-<75742070726573656e74696e6720696e666f726d6174696f6e2066726f6d20746865>
--2.814 F<756e6465726c79696e6720676c6f62652e>108 295.2 Q
-<4974206973206e6f742075736566756c20746f20757365>5 E F3<6f7269656e74>2.73
-E F0<776974686f7574207573696e67>3.18 E F3<6e6f726d616c697a65>2.5 E F0
-<2e>.18 E F3<4e6f726d616c697a65>108.7 312 Q F0<636f6e>3.967 E -.15<7665>
--.4 G 1.288<727473206c617469747564652d6c6f6e67697475646520636f6f7264696e
-61746573206f6e2074686520676c6f626520746f20636f6f7264696e61746573206f6e20
-746865206f>.15 F -.15<7665>-.15 G 1.288<726c61696420677269642e>.15 F
-<546865>6.288 E 1.07<636f6f7264696e6174657320616e642074686569722073696e
-657320616e6420636f73696e65732061726520696e70757420746f>108 324 R F3
-<6e6f726d616c697a65>3.93 E F0 1.07<696e2061>3.75 F F2<706c616365>3.57 E
-F0 3.57<7374727563747572652e2054>3.57 F 1.07
-<72616e73666f726d656420636f6f7264692d>-.35 F<6e6174657320616e6420746865
-69722073696e657320616e6420636f73696e6573206172652072657475726e656420696e
-207468652073616d65207374727563747572652e>108 336 Q/F4 10/Courier at 0 SF
-<73747275637420706c616365207b>156 352.8 Q
-<646f75626c652072616469616e6c61742c2073696e6c61742c20636f736c61743b>204
-364.8 Q
-<646f75626c652072616469616e6c6f6e2c2073696e6c6f6e2c20636f736c6f6e3b>204
-376.8 Q<7d3b>156 388.8 Q F0 .344<5468652070726f6a656374696f6e2067656e65
-7261746f72732072657475726e206120706f696e74657220746f20612066756e6374696f
-6e207468617420636f6e>108 405.6 R -.15<7665>-.4 G .345
-<727473206e6f726d616c697a656420636f6f7264696e6174657320746f>.15 F F3
-<782d79>3.615 E F0<636f6f7264692d>3.165 E .235<6e6174657320666f72207468
-652064657369726564206d61702c206f7220302069662074686520726571756972656420
-70726f6a656374696f6e206973206e6f742061>108 417.6 R -.25<7661>-.2 G 2.734
-<696c61626c652e20546865>.25 F .234
-<72657475726e65642066756e6374696f6e2069732065>2.734 F -.15<7865>-.15 G
-<6d706c692d>.15 E<8c6564206279>108 429.6 Q F3<7072>3.75 E<6f6a>-.45 E F0
-<696e20746869732065>2.98 E<78616d706c653a>-.15 E F4
-<73747275637420706c6163652070743b>156 446.4 Q
-<696e7420282a70726f6a292829203d206d65726361746f7228293b>156 458.4 Q
-<646f75626c6520782c20793b>156 470.4 Q
-<6f7269656e742834352e302c2033302e302c203138302e30293b>156 487.2 Q
-<2f2a2073657420636f6f7264696e61746520726f746174696f6e202a2f>36 E 144 6
-<2e2e2e202f>156 504 T 6<2a66>-6 G
-<696c6c20696e2074686520707420737472756374757265202a2f>-6 E 96
-<6e6f726d616c697a6528267074293b202f2a>156 516 R
-<726f7461746520636f6f7264696e61746573202a2f>6 E
-<696628282a70726f6a29282670742c2026782c20267929203e203029>156 528 Q
-<2f2a2070726f6a656374206f6e746f20782c7920706c616e65202a2f>24 E
-<706c6f7428782c2079293b>204 540 Q F0 .108
-<5468652070726f6a656374696f6e2066756e6374696f6e>108 556.8 R F2<282a7072>
-2.608 E<6f6a292829>-.18 E F0 .108<72657475726e73203120666f72206120676f6f
-6420706f696e742c203020666f72206120706f696e74206f6e20612077726f6e67207368
-6565742028652e672e20746865206261636b206f66>2.608 F .925<7468652077>108
-568.8 R .925<6f726c6420696e206120706572737065637469>-.1 F 1.225 -.15
-<76652070>-.25 H .925<726f6a656374696f6e292c20616e6420ad3120666f72206120
-706f696e742074686174206973206465656d656420756e706c6f747461626c652028652e
-672e20706f696e7473206e65617220746865>.15 F
-<706f6c6573206f6e2061204d65726361746f722070726f6a656374696f6e292e>108
-580.8 Q .418
-<5363616c696e67206d61792062652064657465726d696e65642066726f6d20746865>
-108 597.6 R F3<782d79>3.688 E F0 .418
-<636f6f7264696e61746573206f662073656c656374656420706f696e74732e>3.238 F
-.418<4c617469747564657320616e64206c6f6e6769747564657320617265206d65612d>
-5.418 F .426<737572656420696e206465>108 609.6 R .426
-<677265657320666f722065617365206f662073706563698c636174696f6e20666f72>
--.15 F F3<6f7269656e74>3.156 E F0 .425
-<616e64207468652070726f6a656374696f6e2067656e657261746f72732062>3.606 F
-.425<757420696e2072616469616e7320666f722065617365206f66>-.2 F 1.015
-<63616c63756c6174696f6e20666f72>108 621.6 R F3<6e6f726d616c697a65>3.875
-E F0<616e64>3.695 E F3<7072>4.765 E<6f6a2e>-.45 E F0 1.016<496e20656974
-6865722063617365206c61746974756465206973206d6561737572656420706f73697469>
-6.015 F 1.316 -.15<7665206e>-.25 H 1.016
-<6f727468206f66207468652065717561746f72>.15 F 3.516<2c61>-.4 G<6e64>
--3.516 E<6c6f6e67697475646520706f73697469>108 633.6 Q .3 -.15<76652077>
--.25 H<657374206f6620477265656e776963682e>.15 E<52616469616e206c6f6e6769
-747564652073686f756c64206265206c696d6974656420746f207468652072616e6765>5
-E F3<ad>2.14 E/F5 10/Symbol-Slanted SF<70>A/F6 10/Symbol SF<a3>A F3
-<6c6f6e3c>A F5<70>A F3<2e>A F0 1.014
-<50726f6a656374696f6e2067656e657261746f7273206861>108 650.4 R 1.314 -.15
-<76652074>-.2 H 1.013
-<68652073616d65206e616d657320616e64207468652073616d65206172>.15 F 1.013
-<67756d656e7473206173207468652070726f6a656374696f6e73206e616d656420696e>
--.18 F F3<6d6170>3.513 E F0<2831292e>.19 E<416c6c206172>108 662.4 Q
-<67756d656e747320617265>-.18 E F2<646f75626c65>2.5 E F0<2e>A F1
-<53454520414c534f>72 679.2 Q F3<6d6170>108 691.2 Q F0<2831292c>.19 E F3
-<6d6170>2.5 E F0<2835292c>.19 E<31>535 768 Q 0 Cg EP
-%%Page: 2 2
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman at 0 SF 398.84<4d4150283329204d4150283329>72 48 R/F1
-10.95/Times-Bold at 0 SF -.11<4255>72 84 S<4753>.11 E F0<4f6e6c79206f6e6520
-70726f6a656374696f6e20616e64206f6e65206f7269656e746174696f6e2063616e2062
-652061637469>108 96 Q .3 -.15<76652061>-.25 H 2.5<746174>.15 G<696d652e>
--2.5 E<54686520776573742d6c6f6e6769747564652d706f73697469>108 108 Q .3
--.15<76652063>-.25 H<6f6e>.15 E -.15<7665>-.4 G
-<6e74696f6e20626574726179732059>.15 E<616e6b>-1 E
-<6565206368617576696e69736d2e>-.1 E F1<434f50595249474854>72 124.8 Q F0
-<436f70>108 136.8 Q<7972696768742028432920313939382c204c7563656e742054>
--.1 E<6563686e6f6c6f67696573>-.7 E<416c6c2072696768747320726573657276>
-108 148.8 Q<6564>-.15 E<32>535 768 Q 0 Cg EP
-%%Trailer
-end
-%%EOF
diff --git a/src/doug/doc/map.5 b/src/doug/doc/map.5
deleted file mode 100755
index 6f8e733..0000000
--- a/src/doug/doc/map.5
+++ /dev/null
@@ -1,89 +0,0 @@
-.so tmac.anx
-.TH MAP 5
-.SH NAME
-map \- digitized map formats
-.SH DESCRIPTION
-Files used by
-.IR map (1)
-are a sequence of structures of the form:
-.PP
-.EX
-struct {
- signed char patchlatitude;
- signed char patchlongitude;
- short n;
- union {
- struct {
- short latitude;
- short longitude;
- } point[n];
- struct {
- short latitude;
- short longitude;
- struct {
- signed char latdiff;
- signed char londiff;
- } point[\-n];
- } highres;
- } segment;
-};
-.EE
-.PP
-Fields
-.L patchlatitude
-and
-.L patchlongitude
-tell to what
-10-degree by 10-degree
-patch of the earth's surface a segment belongs.
-Their values range from \-9 to 8 and from \-18 to 17,
-respectively, and indicate the coordinates of the
-southeast corner of the patch in units of 10 degrees.
-.PP
-Each segment of
-.RB | n |
-points is connected; consecutive segments
-are not necessarily related.
-Latitude and longitude
-are measured in units of 0.0001 radian.
-If
-.B n
-is negative, then
-differences to the first and succeeding points
-are measured in units of 0.00001 radian.
-Latitude is counted positive to the north and
-longitude positive to the west.
-.PP
-The patches are ordered lexicographically by
-.L patchlatitude
-then
-.LR patchlongitude .
-A printable
-index to the first segment of each patch
-in a file named
-.I data
-is kept in an associated file named
-.IB data .x .
-Each line of an index file contains
-.L patchlatitude,
-.L patchlongitude
-and the byte position
-of the patch
-in the map file.
-Both the map file and the index file are ordered by
-patch latitude and longitude.
-.PP
-Shorts are stored in little-endian order, low byte first,
-regardless of computer architecture.
-To assure portability,
-.I map
-accesses them bytewise.
-.SH "SEE ALSO"
-.IR map (1),
-.IR map (3),
-.IR ascii2map (1)
-.SH COPYRIGHT
-.PP
-Copyright (C) 1998, Lucent Technologies
-.br
-All rights reserved
diff --git a/src/doug/doc/map.5.ps b/src/doug/doc/map.5.ps
deleted file mode 100755
index 69e322d..0000000
--- a/src/doug/doc/map.5.ps
+++ /dev/null
@@ -1,299 +0,0 @@
-%!PS-Adobe-3.0
-%%Creator: groff version 1.18.1
-%%CreationDate: Sat Dec 20 11:27:27 2003
-%%DocumentNeededResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%+ font Courier
-%%DocumentSuppliedResources: procset grops 1.18 1
-%%Pages: 1
-%%PageOrder: Ascend
-%%Orientation: Portrait
-%%EndComments
-%%BeginProlog
-%%BeginResource: procset grops 1.18 1
-/setpacking where{
-pop
-currentpacking
-true setpacking
-}if
-/grops 120 dict dup begin
-/SC 32 def
-/A/show load def
-/B{0 SC 3 -1 roll widthshow}bind def
-/C{0 exch ashow}bind def
-/D{0 exch 0 SC 5 2 roll awidthshow}bind def
-/E{0 rmoveto show}bind def
-/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
-/G{0 rmoveto 0 exch ashow}bind def
-/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/I{0 exch rmoveto show}bind def
-/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
-/K{0 exch rmoveto 0 exch ashow}bind def
-/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/M{rmoveto show}bind def
-/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
-/O{rmoveto 0 exch ashow}bind def
-/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/Q{moveto show}bind def
-/R{moveto 0 SC 3 -1 roll widthshow}bind def
-/S{moveto 0 exch ashow}bind def
-/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/SF{
-findfont exch
-[exch dup 0 exch 0 exch neg 0 0]makefont
-dup setfont
-[exch/setfont cvx]cvx bind def
-}bind def
-/MF{
-findfont
-[5 2 roll
-0 3 1 roll
-neg 0 0]makefont
-dup setfont
-[exch/setfont cvx]cvx bind def
-}bind def
-/level0 0 def
-/RES 0 def
-/PL 0 def
-/LS 0 def
-/MANUAL{
-statusdict begin/manualfeed true store end
-}bind def
-/PLG{
-gsave newpath clippath pathbbox grestore
-exch pop add exch pop
-}bind def
-/BP{
-/level0 save def
-1 setlinecap
-1 setlinejoin
-72 RES div dup scale
-LS{
-90 rotate
-}{
-0 PL translate
-}ifelse
-1 -1 scale
-}bind def
-/EP{
-level0 restore
-showpage
-}bind def
-/DA{
-newpath arcn stroke
-}bind def
-/SN{
-transform
-.25 sub exch .25 sub exch
-round .25 add exch round .25 add exch
-itransform
-}bind def
-/DL{
-SN
-moveto
-SN
-lineto stroke
-}bind def
-/DC{
-newpath 0 360 arc closepath
-}bind def
-/TM matrix def
-/DE{
-TM currentmatrix pop
-translate scale newpath 0 0 .5 0 360 arc closepath
-TM setmatrix
-}bind def
-/RC/rcurveto load def
-/RL/rlineto load def
-/ST/stroke load def
-/MT/moveto load def
-/CL/closepath load def
-/Fr{
-setrgbcolor fill
-}bind def
-/Fk{
-setcmykcolor fill
-}bind def
-/Fg{
-setgray fill
-}bind def
-/FL/fill load def
-/LW/setlinewidth load def
-/Cr/setrgbcolor load def
-/Ck/setcmykcolor load def
-/Cg/setgray load def
-/RE{
-findfont
-dup maxlength 1 index/FontName known not{1 add}if dict begin
-{
-1 index/FID ne{def}{pop pop}ifelse
-}forall
-/Encoding exch def
-dup/FontName exch def
-currentdict end definefont pop
-}bind def
-/DEFS 0 def
-/EBEGIN{
-moveto
-DEFS begin
-}bind def
-/EEND/end load def
-/CNT 0 def
-/level1 0 def
-/PBEGIN{
-/level1 save def
-translate
-div 3 1 roll div exch scale
-neg exch neg exch translate
-0 setgray
-0 setlinecap
-1 setlinewidth
-0 setlinejoin
-10 setmiterlimit
-[]0 setdash
-/setstrokeadjust where{
-pop
-false setstrokeadjust
-}if
-/setoverprint where{
-pop
-false setoverprint
-}if
-newpath
-/CNT countdictstack def
-userdict begin
-/showpage{}def
-}bind def
-/PEND{
-clear
-countdictstack CNT sub{end}repeat
-level1 restore
-}bind def
-end def
-/setpacking where{
-pop
-setpacking
-}if
-%%EndResource
-%%IncludeResource: font Times-Roman
-%%IncludeResource: font Times-Bold
-%%IncludeResource: font Times-Italic
-%%IncludeResource: font Courier
-grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
-def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron
-/Zcaron/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
-/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
-/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
-/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
-/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
-/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
-/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
-/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
-/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
-/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
-/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
-/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
-/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
-/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
-/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
-/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
-/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
-/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
-/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
-/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
-/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
-/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
-/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
-/Courier at 0 ENC0/Courier RE/Times-Italic at 0 ENC0/Times-Italic RE
-/Times-Bold at 0 ENC0/Times-Bold RE/Times-Roman at 0 ENC0/Times-Roman RE
-%%EndProlog
-%%Page: 1 1
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman at 0 SF 398.84<4d4150283529204d4150283529>72 48 R/F1
-10.95/Times-Bold at 0 SF -.219<4e41>72 84 S<4d45>.219 E F0
-<6d617020ad206469676974697a6564206d617020666f726d617473>108 96 Q F1
-<4445534352495054494f4e>72 112.8 Q F0<46696c65732075736564206279>108
-124.8 Q/F2 10/Times-Italic at 0 SF<6d6170>2.5 E F0<283129206172652061207365
-7175656e6365206f662073747275637475726573206f662074686520666f726d3a>.19 E
-/F3 10/Courier at 0 SF<737472756374207b>108 141.6 Q
-<7369676e656420636861722070617463686c617469747564653b>144 153.6 Q
-<7369676e656420636861722070617463686c6f6e6769747564653b>144 165.6 Q
-<73686f7274206e3b>144 177.6 Q<756e696f6e207b>144 189.6 Q
-<737472756374207b>180 201.6 Q<73686f7274206c617469747564653b>216 213.6 Q
-<73686f7274206c6f6e6769747564653b>216 225.6 Q 6<7d70>180 237.6 S
-<6f696e745b6e5d3b>-6 E<737472756374207b>180 249.6 Q
-<73686f7274206c617469747564653b>216 261.6 Q
-<73686f7274206c6f6e6769747564653b>216 273.6 Q<737472756374207b>216 285.6
-Q<7369676e65642063686172206c6174646966663b>252 297.6 Q
-<7369676e65642063686172206c6f6e646966663b>252 309.6 Q 6<7d70>216 321.6 S
-<6f696e745bad6e5d3b>-6 E 6<7d68>180 333.6 S<6967687265733b>-6 E 6<7d73>
-144 345.6 S<65676d656e743b>-6 E<7d3b>108 357.6 Q F0<4669656c6473>108
-374.4 Q/F4 10/Times-Bold at 0 SF<70617463686c61746974756465>2.72 E F0
-<616e64>2.72 E F4<70617463686c6f6e676974756465>2.72 E F0 .22
-<74656c6c20746f20776861742031302d6465>2.72 F .22
-<677265652062792031302d6465>-.15 F .22
-<67726565207061746368206f662074686520656172746827>-.15 F 2.72<7373>-.55
-G<757266>-2.72 E .22<6163652061>-.1 F<7365>108 386.4 Q .382
-<676d656e742062656c6f6e67732e>-.15 F .382<54686569722076>5.382 F .383<61
-6c7565732072616e67652066726f6d20ad3920746f203820616e642066726f6d20ad3138
-20746f2031372c207265737065637469>-.25 F -.15<7665>-.25 G<6c79>.15 E
-2.883<2c61>-.65 G .383<6e6420696e6469636174652074686520636f6f72>-2.883 F
-<2d>-.2 E<64696e61746573206f662074686520736f7574686561737420636f726e6572
-206f662074686520706174636820696e20756e697473206f66203130206465>108 398.4
-Q<67726565732e>-.15 E 1.302<45616368207365>108 415.2 R 1.302
-<676d656e74206f66207c>-.15 F F4<6e>A F0 3.802<7c70>C 1.302
-<6f696e747320697320636f6e6e65637465643b20636f6e736563757469>-3.802 F
-1.601 -.15<76652073>-.25 H -.15<6567>.15 G 1.301
-<6d656e747320617265206e6f74206e65636573736172696c792072656c617465642e>
-.15 F 1.301<4c6174697475646520616e64>6.301 F .255<6c6f6e6769747564652061
-7265206d6561737572656420696e20756e697473206f6620302e30303031207261646961
-6e2e>108 427.2 R<4966>5.255 E F4<6e>2.756 E F0 .256<6973206e65>2.756 F
--.05<6761>-.15 G<7469>.05 E -.15<7665>-.25 G 2.756<2c74>.15 G .256
-<68656e20646966>-2.756 F .256
-<666572656e63657320746f20746865208c72737420616e6420737563636565642d>-.25
-F .437<696e6720706f696e747320617265206d6561737572656420696e20756e697473
-206f6620302e30303030312072616469616e2e>108 439.2 R .437
-<4c6174697475646520697320636f756e74656420706f73697469>5.437 F .737 -.15
-<76652074>-.25 H 2.937<6f74>.15 G .437
-<6865206e6f72746820616e64206c6f6e676974756465>-2.937 F<706f73697469>108
-451.2 Q .3 -.15<76652074>-.25 H 2.5<6f74>.15 G<686520776573742e>-2.5 E
-.33<546865207061746368657320617265206f726465726564206c65>108 468 R .331
-<7869636f67726170686963616c6c79206279>-.15 F F4
-<70617463686c61746974756465>2.831 E F0<7468656e>2.831 E F4
-<70617463686c6f6e676974756465>2.831 E F0 5.331<2e41>C .331
-<7072696e7461626c6520696e6465>-2.5 F 2.831<7874>-.15 G 2.831<6f74>-2.831
-G<6865>-2.831 E .349<8c727374207365>108 480 R .349
-<676d656e74206f66206561636820706174636820696e2061208c6c65206e616d6564>
--.15 F F2<64617461>3.199 E F0 .349<6973206b>3.109 F .348
-<65707420696e20616e206173736f636961746564208c6c65206e616d6564>-.1 F F2
-<64617461>2.848 E F4<2e78>.26 E F2<2e>.23 E F0 .348
-<45616368206c696e65206f6620616e>5.348 F<696e6465>108 492 Q 2.998<788c>
--.15 G .498<6c6520636f6e7461696e73>-2.998 F F4 .498
-<70617463686c617469747564652c2070617463686c6f6e676974756465>2.998 F F0
-.499<616e6420746865206279746520706f736974696f6e206f66207468652070617463
-6820696e20746865206d6170208c6c652e>2.999 F<426f7468>5.499 E
-<746865206d6170208c6c6520616e642074686520696e6465>108 504 Q 2.5<788c>
--.15 G<6c6520617265206f726465726564206279207061746368206c61746974756465
-20616e64206c6f6e6769747564652e>-2.5 E .342<53686f727473206172652073746f
-72656420696e206c6974746c652d656e6469616e206f72646572>108 520.8 R 2.842
-<2c6c>-.4 G .842 -.25<6f772062>-2.842 H .342<797465208c7273742c207265>
-.25 F -.05<6761>-.15 G .342
-<72646c657373206f6620636f6d7075746572206172636869746563747572652e>.05 F
-1.942 -.8<546f2061>5.342 H .342<737375726520706f7274612d>.8 F
-<62696c697479>108 532.8 Q<2c>-.65 E F2<6d6170>2.88 E F0
-<6163636573736573207468656d2062797465>2.69 E<776973652e>-.25 E F1
-<53454520414c534f>72 549.6 Q F2<6d6170>108 561.6 Q F0<2831292c>.19 E F2
-<6d6170>2.5 E F0<2833292c>.19 E F2<6173636969326d6170>2.5 E F0<283129>
-.19 E F1<434f50595249474854>72 578.4 Q F0<436f70>108 590.4 Q
-<7972696768742028432920313939382c204c7563656e742054>-.1 E
-<6563686e6f6c6f67696573>-.7 E<416c6c2072696768747320726573657276>108
-602.4 Q<6564>-.15 E<31>535 768 Q 0 Cg EP
-%%Trailer
-end
-%%EOF
diff --git a/src/doug/doc/route.1 b/src/doug/doc/route.1
deleted file mode 100755
index 0732792..0000000
--- a/src/doug/doc/route.1
+++ /dev/null
@@ -1,44 +0,0 @@
-.TH ROUTE 1
-.SH NAME
-route \- identify great circle between two points
-.SH SYNOPSIS
-.B route
-[
-.B -t
-]
-.SH DESCRIPTION
-.I Route
-repeatedly
-reads two latitude-longitude pairs (white-space punctuation)
-from standard input. With no option,
-it places on standard output
-.B -o
-options for
-.IR map (1)
-that will place the equator of the tilted, rotated
-coordinate system along the great circle from point
-A to point B (west to east) and from B to A.
-With each option it also gives
-the coordinates of the two
-points in the new coordinate system, thus giving
-the extent of a strip map of the great circle route
-(useful for setting limits with the
-.B -w
-option to
-.IR map ).
-.PP
-Under option
-.B -t
-.I route
-produces a sequence of points along the great circle,
-useful for a
-.B -t
-track for
-.IR map .
-.SH "SEE ALSO
-.IR map (1)
-.SH COPYRIGHT
-.PP
-Copyright (C) 1998, Lucent Technologies
-.br
-All rights reserved
diff --git a/src/doug/doc/route.1.ps b/src/doug/doc/route.1.ps
deleted file mode 100755
index c803c76..0000000
--- a/src/doug/doc/route.1.ps
+++ /dev/null
@@ -1,255 +0,0 @@
-%!PS-Adobe-3.0
-%%Creator: groff version 1.18.1
-%%CreationDate: Sat Dec 20 11:27:27 2003
-%%DocumentNeededResources: font Times-Roman
-%%+ font Times-Bold
-%%+ font Times-Italic
-%%DocumentSuppliedResources: procset grops 1.18 1
-%%Pages: 1
-%%PageOrder: Ascend
-%%Orientation: Portrait
-%%EndComments
-%%BeginProlog
-%%BeginResource: procset grops 1.18 1
-/setpacking where{
-pop
-currentpacking
-true setpacking
-}if
-/grops 120 dict dup begin
-/SC 32 def
-/A/show load def
-/B{0 SC 3 -1 roll widthshow}bind def
-/C{0 exch ashow}bind def
-/D{0 exch 0 SC 5 2 roll awidthshow}bind def
-/E{0 rmoveto show}bind def
-/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
-/G{0 rmoveto 0 exch ashow}bind def
-/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/I{0 exch rmoveto show}bind def
-/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
-/K{0 exch rmoveto 0 exch ashow}bind def
-/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/M{rmoveto show}bind def
-/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
-/O{rmoveto 0 exch ashow}bind def
-/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/Q{moveto show}bind def
-/R{moveto 0 SC 3 -1 roll widthshow}bind def
-/S{moveto 0 exch ashow}bind def
-/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
-/SF{
-findfont exch
-[exch dup 0 exch 0 exch neg 0 0]makefont
-dup setfont
-[exch/setfont cvx]cvx bind def
-}bind def
-/MF{
-findfont
-[5 2 roll
-0 3 1 roll
-neg 0 0]makefont
-dup setfont
-[exch/setfont cvx]cvx bind def
-}bind def
-/level0 0 def
-/RES 0 def
-/PL 0 def
-/LS 0 def
-/MANUAL{
-statusdict begin/manualfeed true store end
-}bind def
-/PLG{
-gsave newpath clippath pathbbox grestore
-exch pop add exch pop
-}bind def
-/BP{
-/level0 save def
-1 setlinecap
-1 setlinejoin
-72 RES div dup scale
-LS{
-90 rotate
-}{
-0 PL translate
-}ifelse
-1 -1 scale
-}bind def
-/EP{
-level0 restore
-showpage
-}bind def
-/DA{
-newpath arcn stroke
-}bind def
-/SN{
-transform
-.25 sub exch .25 sub exch
-round .25 add exch round .25 add exch
-itransform
-}bind def
-/DL{
-SN
-moveto
-SN
-lineto stroke
-}bind def
-/DC{
-newpath 0 360 arc closepath
-}bind def
-/TM matrix def
-/DE{
-TM currentmatrix pop
-translate scale newpath 0 0 .5 0 360 arc closepath
-TM setmatrix
-}bind def
-/RC/rcurveto load def
-/RL/rlineto load def
-/ST/stroke load def
-/MT/moveto load def
-/CL/closepath load def
-/Fr{
-setrgbcolor fill
-}bind def
-/Fk{
-setcmykcolor fill
-}bind def
-/Fg{
-setgray fill
-}bind def
-/FL/fill load def
-/LW/setlinewidth load def
-/Cr/setrgbcolor load def
-/Ck/setcmykcolor load def
-/Cg/setgray load def
-/RE{
-findfont
-dup maxlength 1 index/FontName known not{1 add}if dict begin
-{
-1 index/FID ne{def}{pop pop}ifelse
-}forall
-/Encoding exch def
-dup/FontName exch def
-currentdict end definefont pop
-}bind def
-/DEFS 0 def
-/EBEGIN{
-moveto
-DEFS begin
-}bind def
-/EEND/end load def
-/CNT 0 def
-/level1 0 def
-/PBEGIN{
-/level1 save def
-translate
-div 3 1 roll div exch scale
-neg exch neg exch translate
-0 setgray
-0 setlinecap
-1 setlinewidth
-0 setlinejoin
-10 setmiterlimit
-[]0 setdash
-/setstrokeadjust where{
-pop
-false setstrokeadjust
-}if
-/setoverprint where{
-pop
-false setoverprint
-}if
-newpath
-/CNT countdictstack def
-userdict begin
-/showpage{}def
-}bind def
-/PEND{
-clear
-countdictstack CNT sub{end}repeat
-level1 restore
-}bind def
-end def
-/setpacking where{
-pop
-setpacking
-}if
-%%EndResource
-%%IncludeResource: font Times-Roman
-%%IncludeResource: font Times-Bold
-%%IncludeResource: font Times-Italic
-grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72
-def/PL 841.89 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron
-/Zcaron/scaron/zcaron/Ydieresis/trademark/quotesingle/Euro/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
-/.notdef/.notdef/.notdef/space/exclam/quotedbl/numbersign/dollar/percent
-/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen
-/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon
-/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O
-/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/circumflex
-/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y
-/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase/guillemotleft
-/guillemotright/bullet/florin/fraction/perthousand/dagger/daggerdbl
-/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
-/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
-/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen
-/brokenbar/section/dieresis/copyright/ordfeminine/guilsinglleft
-/logicalnot/minus/registered/macron/degree/plusminus/twosuperior
-/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior
-/ordmasculine/guilsinglright/onequarter/onehalf/threequarters
-/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE
-/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex
-/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
-/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn
-/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla
-/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis
-/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash
-/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def
-/Times-Italic at 0 ENC0/Times-Italic RE/Times-Bold at 0 ENC0/Times-Bold RE
-/Times-Roman at 0 ENC0/Times-Roman RE
-%%EndProlog
-%%Page: 1 1
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman at 0 SF -.4<524f>72 48 S 376.32<5554452831292052>.4 F
-<4f555445283129>-.4 E/F1 10.95/Times-Bold at 0 SF -.219<4e41>72 84 S<4d45>
-.219 E F0<726f75746520ad206964656e7469667920677265617420636972636c652062
-65747765656e207477>108 96 Q 2.5<6f70>-.1 G<6f696e7473>-2.5 E F1
-<53594e4f50534953>72 112.8 Q/F2 10/Times-Bold at 0 SF -.18<726f>108 124.8 S
-<757465>.18 E F0<5b>2.5 E F2<2d74>2.5 E F0<5d>2.5 E F1
-<4445534352495054494f4e>72 141.6 Q/F3 10/Times-Italic at 0 SF<526f757465>
-108.63 153.6 Q F0 1.095<72657065617465646c79207265616473207477>3.775 F
-3.595<6f6c>-.1 G 1.094<617469747564652d6c6f6e67697475646520706169727320
-2877686974652d73706163652070756e6374756174696f6e292066726f6d207374616e64
-61726420696e7075742e>-3.595 F -.4<5769>6.094 G<7468>.4 E .141<6e6f206f70
-74696f6e2c20697420706c61636573206f6e207374616e64617264206f7574707574>108
-165.6 R F2<2d6f>2.641 E F0 .142<6f7074696f6e7320666f72>2.641 F F3
-<6d6170>2.642 E F0 .142<28312920746861742077696c6c20706c6163652074686520
-65717561746f72206f66207468652074696c7465642c20726f7461746564>.19 F .183<
-636f6f7264696e6174652073797374656d20616c6f6e6720746865206772656174206369
-72636c652066726f6d20706f696e74204120746f20706f696e7420422028776573742074
-6f20656173742920616e642066726f6d204220746f20412e>108 177.6 R -.4<5769>
-5.183 G .183<74682065616368>.4 F .137
-<6f7074696f6e20697420616c736f206769>108 189.6 R -.15<7665>-.25 G 2.638
-<7374>.15 G .138<686520636f6f7264696e61746573206f6620746865207477>-2.638
-F 2.638<6f70>-.1 G .138<6f696e747320696e20746865206e65>-2.638 F 2.638
-<7763>-.25 G .138<6f6f7264696e6174652073797374656d2c2074687573206769>
--2.638 F .138<76696e67207468652065>-.25 F .138<7874656e74206f66>-.15 F
-2.5<6173>108 201.6 S<74726970206d6170206f662074686520677265617420636972
-636c6520726f757465202875736566756c20666f722073657474696e67206c696d697473
-207769746820746865>-2.5 E F2<2d77>2.5 E F0<6f7074696f6e20746f>2.5 E F3
-<6d6170>2.5 E F0<292e>.19 E<556e646572206f7074696f6e>108 218.4 Q F2
-<2d74>2.5 E F3 -.45<726f>2.5 G<757465>.45 E F0<70726f647563657320612073
-657175656e6365206f6620706f696e747320616c6f6e6720746865206772656174206369
-72636c652c2075736566756c20666f722061>2.68 E F2<2d74>2.5 E F0
-<747261636b20666f72>2.5 E F3<6d6170>2.5 E F0<2e>.19 E F1
-<53454520414c534f>72 235.2 Q F3<6d6170>108 247.2 Q F0<283129>.19 E F1
-<434f50595249474854>72 264 Q F0<436f70>108 276 Q
-<7972696768742028432920313939382c204c7563656e742054>-.1 E
-<6563686e6f6c6f67696573>-.7 E<416c6c2072696768747320726573657276>108 288
-Q<6564>-.15 E<31>535 768 Q 0 Cg EP
-%%Trailer
-end
-%%EOF
diff --git a/src/doug/doc/tmac.anx b/src/doug/doc/tmac.anx
deleted file mode 100755
index f96f6af..0000000
--- a/src/doug/doc/tmac.anx
+++ /dev/null
@@ -1,18 +0,0 @@
-.fp 5 CW
-.de L
-.B \\$1 \\$2 \\$3
-..
-.de LR
-.BR \\$1 \\$2 \\$3 \\$4 \\$5 \\$6
-..
-.de RL
-.RB \\$1 \\$2 \\$3 \\$4 \\$5 \\$6
-..
-.de EX
-.if t .ft 5
-.nf
-..
-.de EE
-.ft 1
-.fi
-..
diff --git a/src/doug/index.c b/src/doug/index.c
deleted file mode 100755
index 7480535..0000000
--- a/src/doug/index.c
+++ /dev/null
@@ -1,96 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
- /* p0+=0; shuts off warnings */
-static proj Yaitoff(double p0,double p1){p0+=0;p1+=0;return aitoff();}
-static proj Yalbers(double p0,double p1){return albers(p0,p1);}
-static proj Yazequalarea(double p0,double p1){p0+=0;p1+=0;return azequalarea();}
-static proj Yazequidistant(double p0,double p1){p0+=0;p1+=0;return azequidistant();}
-static proj Ybicentric(double p0,double p1){p1+=0;return bicentric(p0);}
-static proj Ybonne(double p0,double p1){p1+=0;return bonne(p0);}
-static proj Yconic(double p0,double p1){p1+=0;return conic(p0);}
-static proj Ycylequalarea(double p0,double p1){p1+=0;return cylequalarea(p0);}
-static proj Ycylindrical(double p0,double p1){p0+=0;p1+=0;return cylindrical();}
-static proj Yeisenlohr(double p0,double p1){p0+=0;p1+=0;return eisenlohr();}
-static proj Yelliptic(double p0,double p1){p1+=0;return elliptic(p0);}
-static proj Yfisheye(double p0,double p1){p1+=0;return fisheye(p0);}
-static proj Ygall(double p0,double p1){p1+=0;return gall(p0);}
-static proj Ygilbert(double p0,double p1){p0+=0;p1+=0;return gilbert();}
-static proj Yglobular(double p0,double p1){p0+=0;p1+=0;return globular();}
-static proj Ygnomonic(double p0,double p1){p0+=0;p1+=0;return gnomonic();}
-static proj Yguyou(double p0,double p1){p0+=0;p1+=0;return guyou();}
-static proj Yharrison(double p0,double p1){return harrison(p0,p1);}
-static proj Yhex(double p0,double p1){p0+=0;p1+=0;return hex();}
-static proj Yhoming(double p0,double p1){p1+=0;return homing(p0);}
-static proj Ylagrange(double p0,double p1){p0+=0;p1+=0;return lagrange();}
-static proj Ylambert(double p0,double p1){return lambert(p0,p1);}
-static proj Ylaue(double p0,double p1){p0+=0;p1+=0;return laue();}
-static proj Ylune(double p0,double p1){return lune(p0,p1);}
-static proj Ymecca(double p0,double p1){p1+=0;return mecca(p0);}
-static proj Ymercator(double p0,double p1){p0+=0;p1+=0;return mercator();}
-static proj Ymollweide(double p0,double p1){p0+=0;p1+=0;return mollweide();}
-static proj Ynewyorker(double p0,double p1){p1+=0;return newyorker(p0);}
-static proj Yorthographic(double p0,double p1){p0+=0;p1+=0;return orthographic();}
-static proj Yperspective(double p0,double p1){p1+=0;return perspective(p0);}
-static proj Ypolyconic(double p0,double p1){p0+=0;p1+=0;return polyconic();}
-static proj Yrectangular(double p0,double p1){p1+=0;return rectangular(p0);}
-static proj Ysimpleconic(double p0,double p1){return simpleconic(p0,p1);}
-static proj Ysinusoidal(double p0,double p1){p0+=0;p1+=0;return sinusoidal();}
-static proj Ysp_albers(double p0,double p1){return sp_albers(p0,p1);}
-static proj Ysp_mercator(double p0,double p1){p0+=0;p1+=0;return sp_mercator();}
-static proj Ysquare(double p0,double p1){p0+=0;p1+=0;return square();}
-static proj Ystereographic(double p0,double p1){p0+=0;p1+=0;return stereographic();}
-static proj Ytetra(double p0,double p1){p0+=0;p1+=0;return tetra();}
-static proj Ytrapezoidal(double p0,double p1){return trapezoidal(p0,p1);}
-static proj Yvandergrinten(double p0,double p1){p0+=0;p1+=0;return vandergrinten();}
-
-struct pindex pindex[] = { /* index of projections */
- {"aitoff", Yaitoff, 0, picut, 0, 0, 0},
- {"albers", Yalbers, 2, picut, 3, 0, 0},
- {"azequalarea", Yazequalarea, 0, nocut, 1, 0, 0},
- {"azequidistant", Yazequidistant, 0, nocut, 1, 0, 0},
- {"bicentric", Ybicentric, 1, nocut, 0, 0, 0},
- {"bonne", Ybonne, 1, picut, 0, 0, 0},
- {"conic", Yconic, 1, picut, 0, 0, 0},
- {"cylequalarea", Ycylequalarea, 1, picut, 3, 0, 0},
- {"cylindrical", Ycylindrical, 0, picut, 0, 0, 0},
- {"eisenlohr", Yeisenlohr, 0, picut, 0, 0, 0},
- {"elliptic", Yelliptic, 1, nocut, 0, 0, 0},
- {"fisheye", Yfisheye, 1, nocut, 0, 0, 0},
- {"gall", Ygall, 1, picut, 3, 0, 0},
- {"gilbert", Ygilbert, 0, picut, 0, 0, 0},
- {"globular", Yglobular, 0, picut, 0, 0, 0},
- {"gnomonic", Ygnomonic, 0, nocut, 0, 0, plimb},
- {"guyou", Yguyou, 0, guycut, 0, 0, 0},
- {"harrison", Yharrison, 2, nocut, 0, 0, plimb},
- {"hex", Yhex, 0, hexcut, 0, 0, 0},
- {"homing", Yhoming, 1, nocut, 3, 0, hlimb},
- {"lagrange", Ylagrange,0,picut,0, 0, 0},
- {"lambert", Ylambert, 2, picut, 0, 0, 0},
- {"laue", Ylaue, 0, nocut, 0, 0, 0},
- {"lune", Ylune, 2, nocut, 0, 0, 0},
- {"mecca", Ymecca, 1, picut, 3, 0, mlimb},
- {"mercator", Ymercator, 0, picut, 3, 0, 0},
- {"mollweide", Ymollweide, 0, picut, 0, 0, 0},
- {"newyorker", Ynewyorker, 1, nocut, 0, 0, 0},
- {"orthographic", Yorthographic, 0, nocut, 0, 0, olimb},
- {"perspective", Yperspective, 1, nocut, 0, 0, plimb},
- {"polyconic", Ypolyconic, 0, picut, 0, 0, 0},
- {"rectangular", Yrectangular, 1, picut, 3, 0, 0},
- {"simpleconic", Ysimpleconic, 2, picut, 3, 0, 0},
- {"sinusoidal", Ysinusoidal, 0, picut, 0, 0, 0},
- {"sp_albers", Ysp_albers, 2, picut, 3, 1, 0},
- {"sp_mercator", Ysp_mercator, 0, picut, 0, 1, 0},
- {"square", Ysquare, 0, picut, 0, 0, 0},
- {"stereographic", Ystereographic, 0, nocut, 0, 0, 0},
- {"tetra", Ytetra, 0, tetracut, 0, 0, 0},
- {"trapezoidal", Ytrapezoidal, 2, picut, 3, 0, 0},
- {"vandergrinten", Yvandergrinten, 0, picut, 0, 0, 0},
- {0}
-};
diff --git a/src/doug/iplot.h b/src/doug/iplot.h
deleted file mode 100755
index d887c61..0000000
--- a/src/doug/iplot.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-/* Plotting functions for v8 and v9 systems */
-/* This file is an alternative to plot.h */
-
-#define SOLID "solid"
-#define DOTTED "dotted"
-#define DASHED "dashed"
-#define DOTDASH "dotdash"
-
-/* open the plotting output */
-#define openpl() printf("o\n")
-
-/* close the plotting output */
-#define closepl() printf("cl\n")
-
-/* make sure the page or screen is clear */
-#define erase() printf("e\n")
-
-/* plot a point at _x,_y, which becomes current */
-#define point(_x,_y) printf("poi %d %d\n", _x,_y)
-
-/* coordinates to be assigned to lower left and upper right
- corners of (square) plotting area */
-#define range(_x,_y,_X,_Y) printf("ra %d %d %d %d\n", _x,_y,_X,_Y)
-
-/* place text, first letter at current point, which does not change */
-#define text(_s) {if(*(_s) == ' ')printf("t \"%s\"\n",_s); else printf("t %s\n", _s); }
-
-/* draw line from current point to _x,_y, which becomes current */
-#define vec(_x,_y) printf("v %d %d\n", _x,_y)
-
-/* _x,_y becomes current point */
-#define move(_x, _y) printf("m %d %d\n", _x, _y)
-
-/* specify style for drawing lines: "dotted", "solid", "dotdash" */
-#define pen(_s) printf("pe %s\n", _s)
-
-#define comment(_s,_t)
-
-#define BLACK "black"
-#define RED "red"
-#define GREEN "green"
-#define BLUE "blue"
-
-static struct {
- char *name;
- char *hsbcode;
-} colors[] = {
- BLACK, "0 0 0",
- RED, "0 1 1",
- GREEN, ".33 1 1",
- BLUE, ".67 1 1"
-};
-
-static void
-color(char *s)
-{
- char *t;
- int i;
- for(i=0; i<sizeof(colors)/sizeof(*colors); i++)
- if(strcmp(s, colors[i].name) == 0)
- s = colors[i].hsbcode;
- while(t = strchr(s, ','))
- *t = ' ';
- printf("co \"%s\"\n",s);
-}
-
-#define colorcode(s) s
diff --git a/src/doug/libmap/Makefile b/src/doug/libmap/Makefile
deleted file mode 100755
index d12a1a6..0000000
--- a/src/doug/libmap/Makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-
-# .o's ordered for a nonrandom library
-OBJ= aitoff.o albers.o azequalarea.o elliptic.o azequidist.o \
-bicentric.o bonne.o conic.o cylequalarea.o cylindrical.o eisenlohr.o fisheye.o \
-gall.o gilbert.o guyou.o harrison.o hex.o homing.o lagrange.o lambert.o \
-laue.o lune.o mercator.o mollweide.o newyorker.o polyconic.o simpleconic.o \
-sinusoidal.o tetra.o perspective.o orthographic.o trapezoidal.o \
-rectangular.o twocirc.o cuts.o ccubrt.o cubrt.o elco2.o complex.o zcoord.o
-
-# ignore error on systems without ranlib
-
-libmap.a: ../map.h $(OBJ)
- ar cr libmap.a $(OBJ)
- ranlib libmap.a 2>/dev/null || true
-
-clean:
- rm -f *.o libmap.a
-
-.SUFFIXES.: .c .o
-.c.o:
- $(CC) $(CFLAGS) -I.. -c $*.c
diff --git a/src/doug/libmap/aitoff.c b/src/doug/libmap/aitoff.c
deleted file mode 100755
index 467eb36..0000000
--- a/src/doug/libmap/aitoff.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-#define Xaitwist Xaitpole.nlat
-static struct place Xaitpole;
-
-static int
-Xaitoff(struct place *place, double *x, double *y)
-{
- struct place p;
- copyplace(place,&p);
- p.wlon.l /= 2.;
- trig(&p.wlon);
- norm(&p,&Xaitpole,&Xaitwist);
- Xazequalarea(&p,x,y);
- *x *= 2.;
- return(1);
-}
-
-proj
-aitoff(void)
-{
- latlon(0.,0.,&Xaitpole);
- return(Xaitoff);
-}
diff --git a/src/doug/libmap/albers.c b/src/doug/libmap/albers.c
deleted file mode 100755
index 795eae2..0000000
--- a/src/doug/libmap/albers.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-/* For Albers formulas see Deetz and Adams "Elements of Map Projection", */
-/* USGS Special Publication No. 68, GPO 1921 */
-
-static double r0sq, r1sq, d2, n, den, sinb1, sinb2;
-static struct coord plat1, plat2;
-static int southpole;
-
-static double num(double s)
-{
- if(d2==0)
- return(1);
- s = d2*s*s;
- return(1+s*(2./3+s*(3./5+s*(4./7+s*5./9))));
-}
-
-/* Albers projection for a spheroid, good only when N pole is fixed */
-
-static int
-Xspalbers(struct place *place, double *x, double *y)
-{
- double r = sqrt(r0sq-2*(1-d2)*place->nlat.s*num(place->nlat.s)/n);
- double t = n*place->wlon.l;
- *y = r*cos(t);
- *x = -r*sin(t);
- if(!southpole)
- *y = -*y;
- else
- *x = -*x;
- return(1);
-}
-
-/* lat1, lat2: std parallels; e2: squared eccentricity */
-
-static proj albinit(double lat1, double lat2, double e2)
-{
- double r1,r2;
- double t;
- for(;;) {
- if(lat1 < -90)
- lat1 = -180 - lat1;
- if(lat2 > 90)
- lat2 = 180 - lat2;
- if(lat1 <= lat2)
- break;
- t = lat1; lat1 = lat2; lat2 = t;
- }
- if(lat2-lat1 < 1) {
- if(lat1 > 89)
- return(azequalarea());
- return(0);
- }
- if(fabs(lat2+lat1) < 1)
- return(cylequalarea(lat1));
- d2 = e2;
- den = num(1.);
- deg2rad(lat1,&plat1);
- deg2rad(lat2,&plat2);
- sinb1 = plat1.s*num(plat1.s)/den;
- sinb2 = plat2.s*num(plat2.s)/den;
- n = (plat1.c*plat1.c/(1-e2*plat1.s*plat1.s) -
- plat2.c*plat2.c/(1-e2*plat2.s*plat2.s)) /
- (2*(1-e2)*den*(sinb2-sinb1));
- r1 = plat1.c/(n*sqrt(1-e2*plat1.s*plat1.s));
- r2 = plat2.c/(n*sqrt(2-e2*plat2.s*plat2.s));
- r1sq = r1*r1;
- r0sq = r1sq + 2*(1-e2)*den*sinb1/n;
- southpole = lat1<0 && plat2.c>plat1.c;
- return(Xspalbers);
-}
-
-proj
-sp_albers(double lat1, double lat2)
-{
- return(albinit(lat1,lat2,EC2));
-}
-
-proj
-albers(double lat1, double lat2)
-{
- return(albinit(lat1,lat2,0.));
-}
-
-static double scale = 1;
-static double twist = 0;
-
-void
-albscale(double x, double y, double lat, double lon)
-{
- struct place place;
- double alat, alon, x1,y1;
- scale = 1;
- twist = 0;
- invalb(x,y,&alat,&alon);
- twist = lon - alon;
- deg2rad(lat,&place.nlat);
- deg2rad(lon,&place.wlon);
- Xspalbers(&place,&x1,&y1);
- scale = sqrt((x1*x1+y1*y1)/(x*x+y*y));
-}
-
-void
-invalb(double x, double y, double *lat, double *lon)
-{
- int i;
- double sinb_den, sinp;
- x *= scale;
- y *= scale;
- *lon = atan2(-x,fabs(y))/(RAD*n) + twist;
- sinb_den = (r0sq - x*x - y*y)*n/(2*(1-d2));
- sinp = sinb_den;
- for(i=0; i<5; i++)
- sinp = sinb_den/num(sinp);
- *lat = asin(sinp)/RAD;
-}
diff --git a/src/doug/libmap/azequalarea.c b/src/doug/libmap/azequalarea.c
deleted file mode 100755
index 02a852d..0000000
--- a/src/doug/libmap/azequalarea.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-int
-Xazequalarea(struct place *place, double *x, double *y)
-{
- double r;
- r = sqrt(1. - place->nlat.s);
- *x = - r * place->wlon.s;
- *y = - r * place->wlon.c;
- return(1);
-}
-
-proj
-azequalarea(void)
-{
- return(Xazequalarea);
-}
diff --git a/src/doug/libmap/azequidist.c b/src/doug/libmap/azequidist.c
deleted file mode 100755
index ac868a3..0000000
--- a/src/doug/libmap/azequidist.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-int
-Xazequidistant(struct place *place, double *x, double *y)
-{
- double colat;
- colat = PI/2 - place->nlat.l;
- *x = -colat * place->wlon.s;
- *y = -colat * place->wlon.c;
- return(1);
-}
-
-proj
-azequidistant(void)
-{
- return(Xazequidistant);
-}
diff --git a/src/doug/libmap/bicentric.c b/src/doug/libmap/bicentric.c
deleted file mode 100755
index 51a6c5c..0000000
--- a/src/doug/libmap/bicentric.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-static struct coord center;
-
-static int
-Xbicentric(struct place *place, double *x, double *y)
-{
- if(place->wlon.c<=.01||place->nlat.c<=.01)
- return(-1);
- *x = -center.c*place->wlon.s/place->wlon.c;
- *y = place->nlat.s/(place->nlat.c*place->wlon.c);
- return(*x**x+*y**y<=9);
-}
-
-proj
-bicentric(double l)
-{
- l = fabs(l);
- if(l>89)
- return(0);
- deg2rad(l,¢er);
- return(Xbicentric);
-}
diff --git a/src/doug/libmap/bonne.c b/src/doug/libmap/bonne.c
deleted file mode 100755
index 396f5f6..0000000
--- a/src/doug/libmap/bonne.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-static struct coord stdpar;
-static double r0;
-
-static int
-Xbonne(struct place *place, double *x, double *y)
-{
- double r, alpha;
- r = r0 - place->nlat.l;
- if(r<.001)
- if(fabs(stdpar.c)<1e-10)
- alpha = place->wlon.l;
- else if(fabs(place->nlat.c)==0)
- alpha = 0;
- else
- alpha = place->wlon.l/(1+
- stdpar.c*stdpar.c*stdpar.c/place->nlat.c/3);
- else
- alpha = place->wlon.l * place->nlat.c / r;
- *x = - r*sin(alpha);
- *y = - r*cos(alpha);
- return(1);
-}
-
-proj
-bonne(double par)
-{
- if(fabs(par*RAD) < .01)
- return(Xsinusoidal);
- deg2rad(par, &stdpar);
- r0 = stdpar.c/stdpar.s + stdpar.l;
- return(Xbonne);
-}
diff --git a/src/doug/libmap/ccubrt.c b/src/doug/libmap/ccubrt.c
deleted file mode 100755
index abe185b..0000000
--- a/src/doug/libmap/ccubrt.c
+++ /dev/null
@@ -1,18 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-void
-ccubrt(double zr, double zi, double *wr, double *wi)
-{
- double r, theta;
- theta = atan2(zi,zr);
- r = cubrt(hypot(zr,zi));
- *wr = r*cos(theta/3);
- *wi = r*sin(theta/3);
-}
diff --git a/src/doug/libmap/complex.c b/src/doug/libmap/complex.c
deleted file mode 100755
index 4213ecf..0000000
--- a/src/doug/libmap/complex.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-/*complex divide, defensive against overflow from
- * * and /, but not from + and -
- * assumes underflow yields 0.0
- * uses identities:
- * (a + bi)/(c + di) = ((a + bd/c) + (b - ad/c)i)/(c + dd/c)
- * (a + bi)/(c + di) = (b - ai)/(d - ci)
-*/
-void
-cdiv(double a, double b, double c, double d, double *u, double *v)
-{
- double r,t;
- if(fabs(c)<fabs(d)) {
- t = -c; c = d; d = t;
- t = -a; a = b; b = t;
- }
- r = d/c;
- t = c + r*d;
- *u = (a + r*b)/t;
- *v = (b - r*a)/t;
-}
-
-void
-cmul(double c1, double c2, double d1, double d2, double *e1, double *e2)
-{
- *e1 = c1*d1 - c2*d2;
- *e2 = c1*d2 + c2*d1;
-}
-
-void
-csq(double c1, double c2, double *e1, double *e2)
-{
- *e1 = c1*c1 - c2*c2;
- *e2 = c1*c2*2;
-}
-
-/* complex square root
- * assumes underflow yields 0.0
- * uses these identities:
- * sqrt(x+-iy) = sqrt(r(cos(t)+-i*sin(t))
- * = sqrt(r)(cos(t/2)+-i*sin(t/2))
- * cos(t/2) = sin(t)/2sin(t/2) = sqrt((1+cos(t)/2)
- * sin(t/2) = sin(t)/2cos(t/2) = sqrt((1-cos(t)/2)
-*/
-void
-csqrt(double c1, double c2, double *e1, double *e2)
-{
- double r,s;
- double x,y;
- x = fabs(c1);
- y = fabs(c2);
- if(x>=y) {
- if(x==0) {
- *e1 = *e2 = 0;
- return;
- }
- r = x;
- s = y/x;
- } else {
- r = y;
- s = x/y;
- }
- r *= sqrt(1+ s*s);
- if(c1>0) {
- *e1 = sqrt((r+c1)/2);
- *e2 = c2/(2* *e1);
- } else {
- *e2 = sqrt((r-c1)/2);
- if(c2<0)
- *e2 = -*e2;
- *e1 = c2/(2* *e2);
- }
-}
-
-void cpow(double c1, double c2, double *d1, double *d2, double pwr)
-{
- double theta = pwr*atan2(c2,c1);
- double r = pow(hypot(c1,c2), pwr);
- *d1 = r*cos(theta);
- *d2 = r*sin(theta);
-}
diff --git a/src/doug/libmap/conic.c b/src/doug/libmap/conic.c
deleted file mode 100755
index d6feee9..0000000
--- a/src/doug/libmap/conic.c
+++ /dev/null
@@ -1,32 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-static struct coord stdpar;
-
-static int
-Xconic(struct place *place, double *x, double *y)
-{
- double r;
- if(fabs(place->nlat.l-stdpar.l) > 80.*RAD)
- return(-1);
- r = stdpar.c/stdpar.s - tan(place->nlat.l - stdpar.l);
- *x = - r*sin(place->wlon.l * stdpar.s);
- *y = - r*cos(place->wlon.l * stdpar.s);
- if(r>3) return(0);
- return(1);
-}
-
-proj
-conic(double par)
-{
- if(fabs(par) <.1)
- return(Xcylindrical);
- deg2rad(par, &stdpar);
- return(Xconic);
-}
diff --git a/src/doug/libmap/cubrt.c b/src/doug/libmap/cubrt.c
deleted file mode 100755
index 95543aa..0000000
--- a/src/doug/libmap/cubrt.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-double
-cubrt(double a)
-{
- double x,y,x1;
- if(a==0)
- return(0.);
- y = 1;
- if(a<0) {
- y = -y;
- a = -a;
- }
- while(a<1) {
- a *= 8;
- y /= 2;
- }
- while(a>1) {
- a /= 8;
- y *= 2;
- }
- x = 1;
- do {
- x1 = x;
- x = (2*x1+a/(x1*x1))/3;
- } while(fabs(x-x1)>10.e-15);
- return(x*y);
-}
diff --git a/src/doug/libmap/cuts.c b/src/doug/libmap/cuts.c
deleted file mode 100755
index db4fb40..0000000
--- a/src/doug/libmap/cuts.c
+++ /dev/null
@@ -1,44 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-extern void abort(void);
-
-/* these routines duplicate names found in map.c. they are
-called from routines in hex.c, guyou.c, and tetra.c, which
-are in turn invoked directly from map.c. this bad organization
-arises from data hiding; only these three files know stuff
-that's necessary for the proper handling of the unusual cuts
-involved in these projections.
-
-the calling routines are not advertised as part of the library,
-and the library duplicates should never get loaded, however they
-are included to make the libary self-standing.*/
-
-int
-picut(struct place *g, struct place *og, double *cutlon)
-{
- g=g; og=og; cutlon=cutlon; /* avoid warnings */
- abort();
- return 0;
-}
-
-int
-ckcut(struct place *g1, struct place *g2, double lon)
-{
- g1=g1; g2=g2; lon=lon;
- abort();
- return 0;
-}
-
-double
-reduce(double x)
-{
- x=x;
- abort();
- return 0;
-}
diff --git a/src/doug/libmap/cylequalarea.c b/src/doug/libmap/cylequalarea.c
deleted file mode 100755
index b1193ce..0000000
--- a/src/doug/libmap/cylequalarea.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-static double a;
-
-static int
-Xcylequalarea(struct place *place, double *x, double *y)
-{
- *x = - place->wlon.l * a;
- *y = place->nlat.s;
- return(1);
-}
-
-proj
-cylequalarea(double par)
-{
- struct coord stdp0;
- if(par > 89.0)
- return(0);
- deg2rad(par, &stdp0);
- a = stdp0.c*stdp0.c;
- return(Xcylequalarea);
-}
diff --git a/src/doug/libmap/cylindrical.c b/src/doug/libmap/cylindrical.c
deleted file mode 100755
index 5a2fe2f..0000000
--- a/src/doug/libmap/cylindrical.c
+++ /dev/null
@@ -1,24 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-int
-Xcylindrical(struct place *place, double *x, double *y)
-{
- if(fabs(place->nlat.l) > 80.*RAD)
- return(-1);
- *x = - place->wlon.l;
- *y = place->nlat.s / place->nlat.c;
- return(1);
-}
-
-proj
-cylindrical(void)
-{
- return(Xcylindrical);
-}
diff --git a/src/doug/libmap/eisenlohr.c b/src/doug/libmap/eisenlohr.c
deleted file mode 100755
index de6bbe7..0000000
--- a/src/doug/libmap/eisenlohr.c
+++ /dev/null
@@ -1,24 +0,0 @@
-#include "map.h"
-
-int
-Xeisenlohr(struct place *p, double *x, double *y)
-{
- double s1 = -sin(p->wlon.l/2);
- double c1 = cos(p->wlon.l/2);
- double s2 = sin(p->nlat.l/2);
- double c2 = cos(p->nlat.l/2);
- double t = s2/(c2+sqrt(2*p->nlat.c)*c1);
- double c = sqrt(2/(1+t*t));
- double q = sqrt(p->nlat.c/2);
- double v = sqrt((c2+q*(c1+s1))/(c2+q*(c1-s1)));
- double vi = 1/v;
- *x = -2*log(v) + c*(v-vi);
- *y = -2*atan(t) + c*t*(v+vi);
- return 1;
-}
-
-proj
-eisenlohr()
-{
- return Xeisenlohr;
-}
diff --git a/src/doug/libmap/elco2.c b/src/doug/libmap/elco2.c
deleted file mode 100755
index 4321073..0000000
--- a/src/doug/libmap/elco2.c
+++ /dev/null
@@ -1,137 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-/* elliptic integral routine, R.Bulirsch,
- * Numerische Mathematik 7(1965) 78-90
- * calculate integral from 0 to x+iy of
- * (a+b*t^2)/((1+t^2)*sqrt((1+t^2)*(1+kc^2*t^2)))
- * yields about D valid figures, where CC=10e-D
- * for a*b>=0, except at branchpoints x=0,y=+-i,+-i/kc;
- * there the accuracy may be reduced.
- * fails for kc=0 or x<0
- * return(1) for success, return(0) for fail
- *
- * special case a=b=1 is equivalent to
- * standard elliptic integral of first kind
- * from 0 to atan(x+iy) of
- * 1/sqrt(1-k^2*(sin(t))^2) where k^2=1-kc^2
-*/
-
-#define ROOTINF 10.e18
-#define CC 1.e-6
-
-int
-elco2(double x, double y, double kc, double a, double b, double *u, double *v)
-{
- double c,d,dn1,dn2,e,e1,e2,f,f1,f2,h,k,m,m1,m2,sy;
- double d1[13],d2[13];
- int i,l;
- if(kc==0||x<0)
- return(0);
- sy = y>0? 1: y==0? 0: -1;
- y = fabs(y);
- csq(x,y,&c,&e2);
- d = kc*kc;
- k = 1-d;
- e1 = 1+c;
- cdiv2(1+d*c,d*e2,e1,e2,&f1,&f2);
- f2 = -k*x*y*2/f2;
- csqr(f1,f2,&dn1,&dn2);
- if(f1<0) {
- f1 = dn1;
- dn1 = -dn2;
- dn2 = -f1;
- }
- if(k<0) {
- dn1 = fabs(dn1);
- dn2 = fabs(dn2);
- }
- c = 1+dn1;
- cmul(e1,e2,c,dn2,&f1,&f2);
- cdiv(x,y,f1,f2,&d1[0],&d2[0]);
- h = a-b;
- d = f = m = 1;
- kc = fabs(kc);
- e = a;
- a += b;
- l = 4;
- for(i=1;;i++) {
- m1 = (kc+m)/2;
- m2 = m1*m1;
- k *= f/(m2*4);
- b += e*kc;
- e = a;
- cdiv2(kc+m*dn1,m*dn2,c,dn2,&f1,&f2);
- csqr(f1/m1,k*dn2*2/f2,&dn1,&dn2);
- cmul(dn1,dn2,x,y,&f1,&f2);
- x = fabs(f1);
- y = fabs(f2);
- a += b/m1;
- l *= 2;
- c = 1 +dn1;
- d *= k/2;
- cmul(x,y,x,y,&e1,&e2);
- k *= k;
-
- cmul(c,dn2,1+e1*m2,e2*m2,&f1,&f2);
- cdiv(d*x,d*y,f1,f2,&d1[i],&d2[i]);
- if(k<=CC)
- break;
- kc = sqrt(m*kc);
- f = m2;
- m = m1;
- }
- f1 = f2 = 0;
- for(;i>=0;i--) {
- f1 += d1[i];
- f2 += d2[i];
- }
- x *= m1;
- y *= m1;
- cdiv2(1-y,x,1+y,-x,&e1,&e2);
- e2 = x*2/e2;
- d = a/(m1*l);
- *u = atan2(e2,e1);
- if(*u<0)
- *u += PI;
- a = d*sy/2;
- *u = d*(*u) + f1*h;
- *v = (-1-log(e1*e1+e2*e2))*a + f2*h*sy + a;
- return(1);
-}
-
-void
-cdiv2(double c1, double c2, double d1, double d2, double *e1, double *e2)
-{
- double t;
- if(fabs(d2)>fabs(d1)) {
- t = d1, d1 = d2, d2 = t;
- t = c1, c1 = c2, c2 = t;
- }
- if(fabs(d1)>ROOTINF)
- *e2 = ROOTINF*ROOTINF;
- else
- *e2 = d1*d1 + d2*d2;
- t = d2/d1;
- *e1 = (c1+t*c2)/(d1+t*d2); /* (c1*d1+c2*d2)/(d1*d1+d2*d2) */
-}
-
-/* complex square root of |x|+iy */
-void
-csqr(double c1, double c2, double *e1, double *e2)
-{
- double r2;
- r2 = c1*c1 + c2*c2;
- if(r2<=0) {
- *e1 = *e2 = 0;
- return;
- }
- *e1 = sqrt((sqrt(r2) + fabs(c1))/2);
- *e2 = c2/(*e1*2);
-}
diff --git a/src/doug/libmap/elliptic.c b/src/doug/libmap/elliptic.c
deleted file mode 100755
index 68735f8..0000000
--- a/src/doug/libmap/elliptic.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-static struct coord center;
-
-static int
-Xelliptic(struct place *place, double *x, double *y)
-{
- double r1,r2;
- r1 = acos(trigclamp(
- place->nlat.c*(place->wlon.c*center.c
- - place->wlon.s*center.s)));
- r2 = acos(trigclamp(
- place->nlat.c*(place->wlon.c*center.c
- + place->wlon.s*center.s)));
- *x = -(r1*r1 - r2*r2)/(4*center.l);
- *y = (r1*r1+r2*r2)/2 - (center.l*center.l+*x**x);
- if(*y < 0)
- *y = 0;
- *y = sqrt(*y);
- if(place->nlat.l<0)
- *y = -*y;
- return(1);
-}
-
-proj
-elliptic(double l)
-{
- l = fabs(l);
- if(l>89)
- return(0);
- if(l<1)
- return(Xazequidistant);
- deg2rad(l,¢er);
- return(Xelliptic);
-}
diff --git a/src/doug/libmap/fisheye.c b/src/doug/libmap/fisheye.c
deleted file mode 100755
index c37db04..0000000
--- a/src/doug/libmap/fisheye.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-/* refractive fisheye, not logarithmic */
-
-static double n;
-
-static int
-Xfisheye(struct place *place, double *x, double *y)
-{
- double r;
- double u = sin(PI/4-place->nlat.l/2)/n;
- if(fabs(u) > .97)
- return -1;
- r = tan(asin(u));
- *x = -r*place->wlon.s;
- *y = -r*place->wlon.c;
- return 1;
-}
-
-proj
-fisheye(double par)
-{
- n = par;
- return n<.1? 0: Xfisheye;
-}
diff --git a/src/doug/libmap/gall.c b/src/doug/libmap/gall.c
deleted file mode 100755
index ec38693..0000000
--- a/src/doug/libmap/gall.c
+++ /dev/null
@@ -1,34 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-static double scale;
-
-static int
-Xgall(struct place *place, double *x, double *y)
-{
- /* two ways to compute tan(place->nlat.l/2) */
- if(fabs(place->nlat.s)<.1)
- *y = sin(place->nlat.l/2)/cos(place->nlat.l/2);
- else
- *y = (1-place->nlat.c)/place->nlat.s;
- *x = -scale*place->wlon.l;
- return 1;
-}
-
-proj
-gall(double par)
-{
- double coshalf;
- if(fabs(par)>80)
- return 0;
- par *= RAD;
- coshalf = cos(par/2);
- scale = cos(par)/(2*coshalf*coshalf);
- return Xgall;
-}
diff --git a/src/doug/libmap/gilbert.c b/src/doug/libmap/gilbert.c
deleted file mode 100755
index ca1d798..0000000
--- a/src/doug/libmap/gilbert.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-int
-Xgilbert(struct place *p, double *x, double *y)
-{
-/* the interesting part - map the sphere onto a hemisphere */
- struct place q;
- q.nlat.s = tan(0.5*(p->nlat.l));
- if(q.nlat.s > 1) q.nlat.s = 1;
- if(q.nlat.s < -1) q.nlat.s = -1;
- q.nlat.c = sqrt(1 - q.nlat.s*q.nlat.s);
- q.wlon.l = p->wlon.l/2;
- trig(&q.wlon);
-/* the dull part: present the hemisphere orthogrpahically */
- *y = q.nlat.s;
- *x = -q.wlon.s*q.nlat.c;
- return(1);
-}
-
-proj
-gilbert(void)
-{
- return(Xgilbert);
-}
-
-/* derivation of the interesting part:
- map the sphere onto the plane by stereographic projection;
- map the plane onto a half plane by sqrt;
- map the half plane back to the sphere by stereographic
- projection
-
- n,w are original lat and lon
- r is stereographic radius
- primes are transformed versions
-
- r = cos(n)/(1+sin(n))
- r' = sqrt(r) = cos(n')/(1+sin(n'))
-
- r'^2 = (1-sin(n')^2)/(1+sin(n')^2) = cos(n)/(1+sin(n))
-
- this is a linear equation for sin n', with solution
-
- sin n' = (1+sin(n)-cos(n))/(1+sin(n)+cos(n))
-
- use standard formula: tan x/2 = (1-cos x)/sin x = sin x/(1+cos x)
- to show that the right side of the last equation is tan(n/2)
-*/
-
-
diff --git a/src/doug/libmap/guyou.c b/src/doug/libmap/guyou.c
deleted file mode 100755
index fbd25cb..0000000
--- a/src/doug/libmap/guyou.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-static struct place gywhem, gyehem;
-static struct coord gytwist;
-static double gyconst, gykc, gyside;
-
-
-static void
-dosquare(double z1, double z2, double *x, double *y)
-{
- double w1,w2;
- w1 = z1 -1;
- if(fabs(w1*w1+z2*z2)>.000001) {
- cdiv(z1+1,z2,w1,z2,&w1,&w2);
- w1 *= gyconst;
- w2 *= gyconst;
- if(w1<0)
- w1 = 0;
- elco2(w1,w2,gykc,1.,1.,x,y);
- } else {
- *x = gyside;
- *y = 0;
- }
-}
-
-int
-Xguyou(struct place *place, double *x, double *y)
-{
- int ew; /*which hemisphere*/
- double z1,z2;
- struct place pl;
- ew = place->wlon.l<0;
- copyplace(place,&pl);
- norm(&pl,ew?&gyehem:&gywhem,&gytwist);
- Xstereographic(&pl,&z1,&z2);
- dosquare(z1/2,z2/2,x,y);
- if(!ew)
- *x -= gyside;
- return(1);
-}
-
-proj
-guyou(void)
-{
- double junk;
- gykc = 1/(3+2*sqrt(2.));
- gyconst = -(1+sqrt(2.));
- elco2(-gyconst,0.,gykc,1.,1.,&gyside,&junk);
- gyside *= 2;
- latlon(0.,90.,&gywhem);
- latlon(0.,-90.,&gyehem);
- deg2rad(0.,&gytwist);
- return(Xguyou);
-}
-
-int
-guycut(struct place *g, struct place *og, double *cutlon)
-{
- int c;
- c = picut(g,og,cutlon);
- if(c!=1)
- return(c);
- *cutlon = 0.;
- if(g->nlat.c<.7071||og->nlat.c<.7071)
- return(ckcut(g,og,0.));
- return(1);
-}
-
-static int
-Xsquare(struct place *place, double *x, double *y)
-{
- double z1,z2;
- double r, theta;
- struct place p;
- copyplace(place,&p);
- if(place->nlat.l<0) {
- p.nlat.l = -p.nlat.l;
- p.nlat.s = -p.nlat.s;
- }
- if(p.nlat.l<FUZZ && fabs(p.wlon.l)>PI-FUZZ){
- *y = -gyside/2;
- *x = p.wlon.l>0?0:gyside;
- return(1);
- }
- Xstereographic(&p,&z1,&z2);
- r = sqrt(sqrt(hypot(z1,z2)/2));
- theta = atan2(z1,-z2)/4;
- dosquare(r*sin(theta),-r*cos(theta),x,y);
- if(place->nlat.l<0)
- *y = -gyside - *y;
- return(1);
-}
-
-proj
-square(void)
-{
- guyou();
- return(Xsquare);
-}
diff --git a/src/doug/libmap/harrison.c b/src/doug/libmap/harrison.c
deleted file mode 100755
index c0494ab..0000000
--- a/src/doug/libmap/harrison.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-static double v3,u2,u3,a,b; /*v=view,p=obj,u=unit.y*/
-
-static int
-Xharrison(struct place *place, double *x, double *y)
-{
- double p1 = -place->nlat.c*place->wlon.s;
- double p2 = -place->nlat.c*place->wlon.c;
- double p3 = place->nlat.s;
- double d = b + u3*p2 - u2*p3;
- double t;
- if(d < .01)
- return -1;
- t = a/d;
- if(v3*place->nlat.s < 1.)
- return -1;
- *y = t*p2*u2 + (v3-t*(v3-p3))*u3;
- *x = t*p1;
- if(t < 0)
- return 0;
- if(*x * *x + *y * *y > 16)
- return -1;
- return 1;
-}
-
-proj
-harrison(double r, double alpha)
-{
- u2 = cos(alpha*RAD);
- u3 = sin(alpha*RAD);
- v3 = r;
- b = r*u2;
- a = 1 + b;
- if(r<1.001 || a<sqrt(r*r-1))
- return 0;
- return Xharrison;
-}
diff --git a/src/doug/libmap/hex.c b/src/doug/libmap/hex.c
deleted file mode 100755
index ba89f8e..0000000
--- a/src/doug/libmap/hex.c
+++ /dev/null
@@ -1,128 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-#define BIG 1.e15
-#define HFUZZ .0001
-
-static double hcut[3] ;
-static double kr[3] = { .5, -1., .5 };
-static double ki0[3] = { -1., 0., 1. };
-static double ki[3]; /*ki0*sqrt(3)/2*/
-static double cr[3];
-static double ci[3];
-static struct place hem;
-static struct coord twist;
-static double rootroot3, hkc;
-static double w2;
-static double rootk;
-
-static void
-reflect(int i, double wr, double wi, double *x, double *y)
-{
- double pr,pi,l;
- pr = cr[i]-wr;
- pi = ci[i]-wi;
- l = 2*(kr[i]*pr + ki[i]*pi);
- *x = wr + l*kr[i];
- *y = wi + l*ki[i];
-}
-
-static int
-Xhex(struct place *place, double *x, double *y)
-{
- int ns;
- int i;
- double zr,zi;
- double sr,si,tr,ti,ur,ui,vr,vi,yr,yi;
- struct place p;
- copyplace(place,&p);
- ns = place->nlat.l >= 0;
- if(!ns) {
- p.nlat.l = -p.nlat.l;
- p.nlat.s = -p.nlat.s;
- }
- if(p.nlat.l<HFUZZ) {
- for(i=0;i<3;i++)
- if(fabs(reduce(p.wlon.l-hcut[i]))<HFUZZ) {
- if(i==2) {
- *x = 2*cr[0] - cr[1];
- *y = 0;
- } else {
- *x = cr[1];
- *y = 2*ci[2*i];
- }
- return(1);
- }
- p.nlat.l = HFUZZ;
- trig(&p.nlat);
- }
- norm(&p,&hem,&twist);
- Xstereographic(&p,&zr,&zi);
- zr /= 2;
- zi /= 2;
- cdiv(1-zr,-zi,1+zr,zi,&sr,&si);
- csq(sr,si,&tr,&ti);
- ccubrt(1+3*tr,3*ti,&ur,&ui);
- csqrt(ur-1,ui,&vr,&vi);
- cdiv(rootroot3+vr,vi,rootroot3-vr,-vi,&yr,&yi);
- yr /= rootk;
- yi /= rootk;
- elco2(fabs(yr),yi,hkc,1.,1.,x,y);
- if(yr < 0)
- *x = w2 - *x;
- if(!ns) reflect(hcut[0]>place->wlon.l?0:
- hcut[1]>=place->wlon.l?1:
- 2,*x,*y,x,y);
- return(1);
-}
-
-proj
-hex(void)
-{
- int i;
- double t;
- double root3;
- double c,d;
- struct place p;
- hcut[2] = PI;
- hcut[1] = hcut[2]/3;
- hcut[0] = -hcut[1];
- root3 = sqrt(3.);
- rootroot3 = sqrt(root3);
- t = 15 -8*root3;
- hkc = t*(1-sqrt(1-1/(t*t)));
- elco2(BIG,0.,hkc,1.,1.,&w2,&t);
- w2 *= 2;
- rootk = sqrt(hkc);
- latlon(90.,90.,&hem);
- latlon(90.,0.,&p);
- Xhex(&p,&c,&t);
- latlon(0.,0.,&p);
- Xhex(&p,&d,&t);
- for(i=0;i<3;i++) {
- ki[i] = ki0[i]*root3/2;
- cr[i] = c + (c-d)*kr[i];
- ci[i] = (c-d)*ki[i];
- }
- deg2rad(0.,&twist);
- return(Xhex);
-}
-
-int
-hexcut(struct place *g, struct place *og, double *cutlon)
-{
- int t,i;
- if(g->nlat.l>=-HFUZZ&&og->nlat.l>=-HFUZZ)
- return(1);
- for(i=0;i<3;i++) {
- t = ckcut(g,og,*cutlon=hcut[i]);
- if(t!=1) return(t);
- }
- return(1);
-}
diff --git a/src/doug/libmap/homing.c b/src/doug/libmap/homing.c
deleted file mode 100755
index 5912134..0000000
--- a/src/doug/libmap/homing.c
+++ /dev/null
@@ -1,120 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-static struct coord p0; /* standard parallel */
-
-int first;
-
-static struct coord az; /* azimuth of p0 seen from place */
-static struct coord rad; /* angular dist from place to p0 */
-
-static int
-azimuth(struct place *place)
-{
- if(place->nlat.c < FUZZ) {
- az.l = PI/2 + place->nlat.l - place->wlon.l;
- trig(&az);
- rad.l = fabs(place->nlat.l - p0.l);
- if(rad.l > PI)
- rad.l = 2*PI - rad.l;
- trig(&rad);
- return 1;
- }
- rad.c = trigclamp(p0.s*place->nlat.s + /* law of cosines */
- p0.c*place->nlat.c*place->wlon.c);
- rad.s = sqrt(1 - rad.c*rad.c);
- if(fabs(rad.s) < .001) {
- az.s = 0;
- az.c = 1;
- } else {
- az.s = trigclamp(p0.c*place->wlon.s/rad.s); /* sines */
- az.c = trigclamp((p0.s - rad.c*place->nlat.s)
- /(rad.s*place->nlat.c));
- }
- rad.l = atan2(rad.s, rad.c);
- return 1;
-}
-
-static int
-Xmecca(struct place *place, double *x, double *y)
-{
- if(!azimuth(place))
- return 0;
- *x = -place->wlon.l;
- *y = fabs(az.s)<.02? -az.c*rad.s/p0.c: *x*az.c/az.s;
- return fabs(*y)>2? -1:
- rad.c<0? 0:
- 1;
-}
-
-proj
-mecca(double par)
-{
- first = 1;
- if(fabs(par)>80.)
- return(0);
- deg2rad(par,&p0);
- return(Xmecca);
-}
-
-static int
-Xhoming(struct place *place, double *x, double *y)
-{
- if(!azimuth(place))
- return 0;
- *x = -rad.l*az.s;
- *y = -rad.l*az.c;
- return place->wlon.c<0? 0: 1;
-}
-
-proj
-homing(double par)
-{
- first = 1;
- if(fabs(par)>80.)
- return(0);
- deg2rad(par,&p0);
- return(Xhoming);
-}
-
-int
-hlimb(double *lat, double *lon, double res)
-{
- if(first) {
- *lon = -90;
- *lat = -90;
- first = 0;
- return 0;
- }
- *lat += res;
- if(*lat <= 90)
- return 1;
- if(*lon == 90)
- return -1;
- *lon = 90;
- *lat = -90;
- return 0;
-}
-
-int
-mlimb(double *lat, double *lon, double res)
-{
- int ret = !first;
- if(fabs(p0.s) < .01)
- return -1;
- if(first) {
- *lon = -180;
- first = 0;
- } else
- *lon += res;
- if(*lon > 180)
- return -1;
- *lat = atan(-cos(*lon*RAD)/p0.s*p0.c)/RAD;
- return ret;
-}
diff --git a/src/doug/libmap/lagrange.c b/src/doug/libmap/lagrange.c
deleted file mode 100755
index f86b816..0000000
--- a/src/doug/libmap/lagrange.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-static int
-Xlagrange(struct place *place, double *x, double *y)
-{
- double z1,z2;
- double w1,w2,t1,t2;
- struct place p;
- copyplace(place,&p);
- if(place->nlat.l<0) {
- p.nlat.l = -p.nlat.l;
- p.nlat.s = -p.nlat.s;
- }
- Xstereographic(&p,&z1,&z2);
- csqrt(-z2/2,z1/2,&w1,&w2);
- cdiv(w1-1,w2,w1+1,w2,&t1,&t2);
- *y = -t1;
- *x = t2;
- if(place->nlat.l<0)
- *y = -*y;
- return(1);
-}
-
-proj
-lagrange(void)
-{
- return(Xlagrange);
-}
diff --git a/src/doug/libmap/lambert.c b/src/doug/libmap/lambert.c
deleted file mode 100755
index c0e8d69..0000000
--- a/src/doug/libmap/lambert.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-static struct coord stdp0, stdp1;
-static double k;
-
-static int
-Xlambert(struct place *place, double *x, double *y)
-{
- double r;
- if(place->nlat.l < -80.*RAD)
- return(-1);
- if(place->nlat.l > 89.*RAD)
- r = 0; /* slovenly */
- else
- r = stdp0.c*exp(0.5*k*log(
- (1+stdp0.s)*(1-place->nlat.s)/((1-stdp0.s)*(1+place->nlat.s))));
- if(stdp1.l<0.)
- r = -r;
- *x = - r*sin(k * place->wlon.l);
- *y = - r*cos(k * place->wlon.l);
- return(1);
-}
-
-proj
-lambert(double par0, double par1)
-{
- double temp;
- if(fabs(par0)>fabs(par1)){
- temp = par0;
- par0 = par1;
- par1 = temp;
- }
- deg2rad(par0, &stdp0);
- deg2rad(par1, &stdp1);
- if(fabs(par1+par0)<.1)
- return(mercator());
- if(fabs(par1)>89.5) {
- if(par0>89.5)
- return(perspective(-1.));
- else if(par0<-89.5)
- return 0; /* S pole stereographic */
- else
- return 0;
- }
- if(fabs(par1-par0)<.1)
- k = stdp0.s;
- else
- k = 2*log(stdp1.c/stdp0.c)/log(
- (1+stdp0.s)*(1-stdp1.s)/((1-stdp0.s)*(1+stdp1.s)));
- return(Xlambert);
-}
diff --git a/src/doug/libmap/laue.c b/src/doug/libmap/laue.c
deleted file mode 100755
index e17ae0f..0000000
--- a/src/doug/libmap/laue.c
+++ /dev/null
@@ -1,29 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-
-static int
-Xlaue(struct place *place, double *x, double *y)
-{
- double r;
- if(place->nlat.l<PI/4+FUZZ)
- return(-1);
- r = tan(PI-2*place->nlat.l);
- if(r>3)
- return(-1);
- *x = - r * place->wlon.s;
- *y = - r * place->wlon.c;
- return(1);
-}
-
-proj
-laue(void)
-{
- return(Xlaue);
-}
diff --git a/src/doug/libmap/lune.c b/src/doug/libmap/lune.c
deleted file mode 100755
index 43428a1..0000000
--- a/src/doug/libmap/lune.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-int Xstereographic(struct place *place, double *x, double *y);
-
-static struct place eastpole;
-static struct place westpole;
-static double eastx, easty;
-static double westx, westy;
-static double scale;
-static double pwr;
-
-/* conformal map w = ((1+z)^A - (1-z)^A)/((1+z)^A + (1-z)^A),
- where A<1, maps unit circle onto a convex lune with x= +-1
- mapping to vertices of angle A*PI at w = +-1 */
-
-/* there are cuts from E and W poles to S pole,
- in absence of a cut routine, error is returned for
- points outside a polar cap through E and W poles */
-
-static int Xlune(struct place *place, double *x, double *y)
-{
- double stereox, stereoy;
- double z1x, z1y, z2x, z2y;
- double w1x, w1y, w2x, w2y;
- double numx, numy, denx, deny;
- if(place->nlat.l < eastpole.nlat.l-FUZZ)
- return -1;
- Xstereographic(place, &stereox, &stereoy);
- stereox *= scale;
- stereoy *= scale;
- z1x = 1 + stereox;
- z1y = stereoy;
- z2x = 1 - stereox;
- z2y = -stereoy;
- cpow(z1x,z1y,&w1x,&w1y,pwr);
- cpow(z2x,z2y,&w2x,&w2y,pwr);
- numx = w1x - w2x;
- numy = w1y - w2y;
- denx = w1x + w2x;
- deny = w1y + w2y;
- cdiv(numx, numy, denx, deny, x, y);
- return 1;
-}
-
-proj
-lune(double lat, double theta)
-{
- deg2rad(lat, &eastpole.nlat);
- deg2rad(-90.,&eastpole.wlon);
- deg2rad(lat, &westpole.nlat);
- deg2rad(90. ,&westpole.wlon);
- Xstereographic(&eastpole, &eastx, &easty);
- Xstereographic(&westpole, &westx, &westy);
- if(fabs(easty)>FUZZ || fabs(westy)>FUZZ ||
- fabs(eastx+westx)>FUZZ)
- abort();
- scale = 1/eastx;
- pwr = theta/180;
- return Xlune;
-}
diff --git a/src/doug/libmap/mercator.c b/src/doug/libmap/mercator.c
deleted file mode 100755
index 13aa787..0000000
--- a/src/doug/libmap/mercator.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-static int
-Xmercator(struct place *place, double *x, double *y)
-{
- if(fabs(place->nlat.l) > 80.*RAD)
- return(-1);
- *x = -place->wlon.l;
- *y = 0.5*log((1+place->nlat.s)/(1-place->nlat.s));
- return(1);
-}
-
-proj
-mercator(void)
-{
- return(Xmercator);
-}
-
-static double ecc = ECC;
-
-static int
-Xspmercator(struct place *place, double *x, double *y)
-{
- if(Xmercator(place,x,y) < 0)
- return(-1);
- *y += 0.5*ecc*log((1-ecc*place->nlat.s)/(1+ecc*place->nlat.s));
- return(1);
-}
-
-proj
-sp_mercator(void)
-{
- return(Xspmercator);
-}
diff --git a/src/doug/libmap/mollweide.c b/src/doug/libmap/mollweide.c
deleted file mode 100755
index 05b9fca..0000000
--- a/src/doug/libmap/mollweide.c
+++ /dev/null
@@ -1,30 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-static int
-Xmollweide(struct place *place, double *x, double *y)
-{
- double z;
- double w;
- z = place->nlat.l;
- if(fabs(z)<89.9*RAD)
- do { /*newton for 2z+sin2z=pi*sin(lat)*/
- w = (2*z+sin(2*z)-PI*place->nlat.s)/(2+2*cos(2*z));
- z -= w;
- } while(fabs(w)>=.00001);
- *y = sin(z);
- *x = - (2/PI)*cos(z)*place->wlon.l;
- return(1);
-}
-
-proj
-mollweide(void)
-{
- return(Xmollweide);
-}
diff --git a/src/doug/libmap/newyorker.c b/src/doug/libmap/newyorker.c
deleted file mode 100755
index 06072a7..0000000
--- a/src/doug/libmap/newyorker.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-static double a;
-
-static int
-Xnewyorker(struct place *place, double *x, double *y)
-{
- double r = PI/2 - place->nlat.l;
- double s;
- if(r<.001) /* cheat to plot center */
- s = 0;
- else if(r<a)
- return -1;
- else
- s = log(r/a);
- *x = -s * place->wlon.s;
- *y = -s * place->wlon.c;
- return(1);
-}
-
-proj
-newyorker(double a0)
-{
- a = a0*RAD;
- return(Xnewyorker);
-}
diff --git a/src/doug/libmap/orthographic.c b/src/doug/libmap/orthographic.c
deleted file mode 100755
index 64e38dd..0000000
--- a/src/doug/libmap/orthographic.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-
-int
-Xorthographic(struct place *place, double *x, double *y)
-{
- *x = - place->nlat.c * place->wlon.s;
- *y = - place->nlat.c * place->wlon.c;
- return(place->nlat.l<0.? 0 : 1);
-}
-
-proj
-orthographic(void)
-{
- return(Xorthographic);
-}
-
-int
-olimb(double *lat, double *lon, double res)
-{
- static int first = 1;
- if(first) {
- *lat = 0;
- *lon = -180;
- first = 0;
- return 0;
- }
- *lon += res;
- if(*lon <= 180)
- return 1;
- first = 1;
- return -1;
-}
diff --git a/src/doug/libmap/perspective.c b/src/doug/libmap/perspective.c
deleted file mode 100755
index 8e13be8..0000000
--- a/src/doug/libmap/perspective.c
+++ /dev/null
@@ -1,89 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-#define ORTHRAD 1000
-static double viewpt;
-
-static int
-Xperspective(struct place *place, double *x, double *y)
-{
- double r;
- if(viewpt<=1+FUZZ && fabs(place->nlat.s)<=viewpt+.01)
- return(-1);
- r = place->nlat.c*(viewpt - 1.)/(viewpt - place->nlat.s);
- *x = - r*place->wlon.s;
- *y = - r*place->wlon.c;
- if(r>4.)
- return(-1);
- if((fabs(viewpt)>1 && place->nlat.s<1/viewpt) ||
- (fabs(viewpt)<=1 && place->nlat.s<viewpt))
- return 0;
- return(1);
-}
-
-proj
-perspective(double radius)
-{
- viewpt = radius;
- if(viewpt >= ORTHRAD)
- return(Xorthographic);
- if(fabs(viewpt-1.)<.0001)
- return(0);
- return(Xperspective);
-}
-
- /* called from various conformal projections,
- but not from stereographic itself */
-int
-Xstereographic(struct place *place, double *x, double *y)
-{
- double v = viewpt;
- int retval;
- viewpt = -1;
- retval = Xperspective(place, x, y);
- viewpt = v;
- return retval;
-}
-
-proj
-stereographic(void)
-{
- viewpt = -1.;
- return(Xperspective);
-}
-
-proj
-gnomonic(void)
-{
- viewpt = 0.;
- return(Xperspective);
-}
-
-int
-plimb(double *lat, double *lon, double res)
-{
- static int first = 1;
- if(viewpt >= ORTHRAD)
- return olimb(lat, lon, res);
- if(first) {
- first = 0;
- *lon = -180;
- if(fabs(viewpt) < .01)
- *lat = 0;
- else if(fabs(viewpt)<=1)
- *lat = asin(viewpt)/RAD;
- else
- *lat = asin(1/viewpt)/RAD;
- } else
- *lon += res;
- if(*lon <= 180)
- return 1;
- first = 1;
- return -1;
-}
diff --git a/src/doug/libmap/polyconic.c b/src/doug/libmap/polyconic.c
deleted file mode 100755
index 626b5ea..0000000
--- a/src/doug/libmap/polyconic.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-int
-Xpolyconic(struct place *place, double *x, double *y)
-{
- double r, alpha;
- double lat2, lon2;
- if(fabs(place->nlat.l) > .01) {
- r = place->nlat.c / place->nlat.s;
- alpha = place->wlon.l * place->nlat.s;
- *y = place->nlat.l + r*(1 - cos(alpha));
- *x = - r*sin(alpha);
- } else {
- lon2 = place->wlon.l * place->wlon.l;
- lat2 = place->nlat.l * place->nlat.l;
- *y = place->nlat.l * (1+(lon2/2)*(1-(8+lon2)*lat2/12));
- *x = - place->wlon.l * (1-lat2*(3+lon2)/6);
- }
- return(1);
-}
-
-proj
-polyconic(void)
-{
- return(Xpolyconic);
-}
diff --git a/src/doug/libmap/rectangular.c b/src/doug/libmap/rectangular.c
deleted file mode 100755
index 8367956..0000000
--- a/src/doug/libmap/rectangular.c
+++ /dev/null
@@ -1,27 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-static double scale;
-
-static int
-Xrectangular(struct place *place, double *x, double *y)
-{
- *x = -scale*place->wlon.l;
- *y = place->nlat.l;
- return(1);
-}
-
-proj
-rectangular(double par)
-{
- scale = cos(par*RAD);
- if(scale<.1)
- return 0;
- return(Xrectangular);
-}
diff --git a/src/doug/libmap/simpleconic.c b/src/doug/libmap/simpleconic.c
deleted file mode 100755
index 46aecb2..0000000
--- a/src/doug/libmap/simpleconic.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-static double r0, a;
-
-static int
-Xsimpleconic(struct place *place, double *x, double *y)
-{
- double r = r0 - place->nlat.l;
- double t = a*place->wlon.l;
- *x = -r*sin(t);
- *y = -r*cos(t);
- return 1;
-}
-
-proj
-simpleconic(double par0, double par1)
-{
- struct coord lat0;
- struct coord lat1;
- deg2rad(par0,&lat0);
- deg2rad(par1,&lat1);
- if(fabs(lat0.l+lat1.l)<.01)
- return rectangular(par0);
- if(fabs(lat0.l-lat1.l)<.01) {
- a = lat0.s/lat0.l;
- r0 = lat0.c/lat0.s + lat0.l;
- } else {
- a = (lat1.c-lat0.c)/(lat0.l-lat1.l);
- r0 = ((lat0.c+lat1.c)/a + lat1.l + lat0.l)/2;
- }
- return Xsimpleconic;
-}
diff --git a/src/doug/libmap/sinusoidal.c b/src/doug/libmap/sinusoidal.c
deleted file mode 100755
index 5b67c3e..0000000
--- a/src/doug/libmap/sinusoidal.c
+++ /dev/null
@@ -1,22 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-int
-Xsinusoidal(struct place *place, double *x, double *y)
-{
- *x = - place->wlon.l * place->nlat.c;
- *y = place->nlat.l;
- return(1);
-}
-
-proj
-sinusoidal(void)
-{
- return(Xsinusoidal);
-}
diff --git a/src/doug/libmap/tetra.c b/src/doug/libmap/tetra.c
deleted file mode 100755
index e93f6de..0000000
--- a/src/doug/libmap/tetra.c
+++ /dev/null
@@ -1,214 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-/*
- * conformal map of earth onto tetrahedron
- * the stages of mapping are
- * (a) stereo projection of tetrahedral face onto
- * isosceles curvilinear triangle with 3 120-degree
- * angles and one straight side
- * (b) map of this triangle onto half plane cut along
- * 3 rays from the roots of unity to infinity
- * formula (z^4+2*3^.5*z^2-1)/(z^4-2*3^.5*z^2-1)
- * (c) do 3 times for each sector of plane:
- * map of |arg z|<=pi/6, cut along z>1 into
- * triangle |arg z|<=pi/6, Re z<=const,
- * with upper side of cut going into upper half of
- * of vertical side of triangle and lowere into lower
- * formula int from 0 to z dz/sqrt(1-z^3)
- *
- * int from u to 1 3^.25*du/sqrt(1-u^3) =
- F(acos((rt3-1+u)/(rt3+1-u)),sqrt(1/2+rt3/4))
- * int from 1 to u 3^.25*du/sqrt(u^3-1) =
- * F(acos((rt3+1-u)/(rt3-1+u)),sqrt(1/2-rt3/4))
- * this latter formula extends analytically down to
- * u=0 and is the basis of this routine, with the
- * argument of complex elliptic integral elco2
- * being tan(acos...)
- * the formula F(pi-x,k) = 2*F(pi/2,k)-F(x,k) is
- * used to cross over into the region where Re(acos...)>pi/2
- * f0 and fpi are suitably scaled complete integrals
-*/
-
-#define TFUZZ 0.00001
-
-static struct place tpole[4]; /* point of tangency of tetrahedron face*/
-static double tpoleinit[4][2] = {
- { 1., 0. },
- { 1., 180. },
- { -1., 90. },
- { -1., -90 }
-};
-static struct tproj {
- double tlat,tlon; /* center of stereo projection*/
- double ttwist; /* rotatn before stereo*/
- double trot; /*rotate after projection*/
- struct place projpl; /*same as tlat,tlon*/
- struct coord projtw; /*same as ttwist*/
- struct coord postrot; /*same as trot*/
-} tproj[4][4] = {
-{/*00*/ {0.},
- /*01*/ {90., 0., 90., -90.},
- /*02*/ {0., 45., -45., 150.},
- /*03*/ {0., -45., -135., 30.}
-},
-{/*10*/ {90., 0., -90., 90.},
- /*11*/ {0.},
- /*12*/ {0., 135., -135., -150.},
- /*13*/ {0., -135., -45., -30.}
-},
-{/*20*/ {0., 45., 135., -30.},
- /*21*/ {0., 135., 45., -150.},
- /*22*/ {0.},
- /*23*/ {-90., 0., 180., 90.}
-},
-{/*30*/ {0., -45., 45., -150.},
- /*31*/ {0., -135., 135., -30.},
- /*32*/ {-90., 0., 0., 90.},
- /*33*/ {0.}
-}};
-
-static double tx0[4] = { /*where to move facet after final rotation*/
- 0., 0., -1., 1. /*-1,1 to be sqrt(3)*/
-};
-static double ty0[4] = {
- 0., 2., -1., -1.
-};
-static double tx[4];
-static double ty[4];
-static double root3;
-static double rt3inv;
-static double two_rt3;
-static double tkc,tk,tcon;
-static double f0r,f0i,fpir,fpii;
-
-static void
-twhichp(struct place *g, int *p, int *q)
-{
- int i,j,k;
- double cosdist[4];
- struct place *tp;
- for(i=0;i<4;i++) {
- tp = &tpole[i];
- cosdist[i] = g->nlat.s*tp->nlat.s +
- g->nlat.c*tp->nlat.c*(
- g->wlon.s*tp->wlon.s +
- g->wlon.c*tp->wlon.c);
- }
- j = 0;
- for(i=1;i<4;i++)
- if(cosdist[i] > cosdist[j])
- j = i;
- *p = j;
- k = j==0?1:0;
- for(i=0;i<4;i++)
- if(i!=j&&cosdist[i]>cosdist[k])
- k = i;
- *q = k;
-}
-
-int
-Xtetra(struct place *place, double *x, double *y)
-{
- int i,j;
- struct place pl;
- register struct tproj *tpp;
- double vr, vi;
- double br, bi;
- double zr,zi,z2r,z2i,z4r,z4i,sr,si,tr,ti;
- twhichp(place,&i,&j);
- copyplace(place,&pl);
- norm(&pl,&tproj[i][j].projpl,&tproj[i][j].projtw);
- Xstereographic(&pl,&vr,&vi);
- zr = vr/2;
- zi = vi/2;
- if(zr<=TFUZZ)
- zr = TFUZZ;
- csq(zr,zi,&z2r,&z2i);
- csq(z2r,z2i,&z4r,&z4i);
- z2r *= two_rt3;
- z2i *= two_rt3;
- cdiv(z4r+z2r-1,z4i+z2i,z4r-z2r-1,z4i-z2i,&sr,&si);
- csqrt(sr-1,si,&tr,&ti);
- cdiv(tcon*tr,tcon*ti,root3+1-sr,-si,&br,&bi);
- if(br<0) {
- br = -br;
- bi = -bi;
- if(!elco2(br,bi,tk,1.,1.,&vr,&vi))
- return 0;
- vr = fpir - vr;
- vi = fpii - vi;
- } else
- if(!elco2(br,bi,tk,1.,1.,&vr,&vi))
- return 0;
- if(si>=0) {
- tr = f0r - vi;
- ti = f0i + vr;
- } else {
- tr = f0r + vi;
- ti = f0i - vr;
- }
- tpp = &tproj[i][j];
- *x = tr*tpp->postrot.c +
- ti*tpp->postrot.s + tx[i];
- *y = ti*tpp->postrot.c -
- tr*tpp->postrot.s + ty[i];
- return(1);
-}
-
-int
-tetracut(struct place *g, struct place *og, double *cutlon)
-{
- int i,j,k;
- if((g->nlat.s<=-rt3inv&&og->nlat.s<=-rt3inv) &&
- (ckcut(g,og,*cutlon=0.)==2||ckcut(g,og,*cutlon=PI)==2))
- return(2);
- twhichp(g,&i,&k);
- twhichp(og,&j,&k);
- if(i==j||i==0||j==0)
- return(1);
- return(0);
-}
-
-proj
-tetra(void)
-{
- int i;
- int j;
- register struct place *tp;
- register struct tproj *tpp;
- double t;
- root3 = sqrt(3.);
- rt3inv = 1/root3;
- two_rt3 = 2*root3;
- tkc = sqrt(.5-.25*root3);
- tk = sqrt(.5+.25*root3);
- tcon = 2*sqrt(root3);
- elco2(tcon/(root3-1),0.,tkc,1.,1.,&f0r,&f0i);
- elco2(1.e15,0.,tk,1.,1.,&fpir,&fpii);
- fpir *= 2;
- fpii *= 2;
- for(i=0;i<4;i++) {
- tx[i] = tx0[i]*f0r*root3;
- ty[i] = ty0[i]*f0r;
- tp = &tpole[i];
- t = tp->nlat.s = tpoleinit[i][0]/root3;
- tp->nlat.c = sqrt(1 - t*t);
- tp->nlat.l = atan2(tp->nlat.s,tp->nlat.c);
- deg2rad(tpoleinit[i][1],&tp->wlon);
- for(j=0;j<4;j++) {
- tpp = &tproj[i][j];
- latlon(tpp->tlat,tpp->tlon,&tpp->projpl);
- deg2rad(tpp->ttwist,&tpp->projtw);
- deg2rad(tpp->trot,&tpp->postrot);
- }
- }
- return(Xtetra);
-}
-
diff --git a/src/doug/libmap/trapezoidal.c b/src/doug/libmap/trapezoidal.c
deleted file mode 100755
index e3d4693..0000000
--- a/src/doug/libmap/trapezoidal.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-static struct coord stdpar0, stdpar1;
-static double k;
-static double yeq;
-
-static int
-Xtrapezoidal(struct place *place, double *x, double *y)
-{
- *y = yeq + place->nlat.l;
- *x = *y*k*place->wlon.l;
- return 1;
-}
-
-proj
-trapezoidal(double par0, double par1)
-{
- if(fabs(fabs(par0)-fabs(par1))<.1)
- return rectangular(par0);
- deg2rad(par0,&stdpar0);
- deg2rad(par1,&stdpar1);
- if(fabs(par1-par0) < .1)
- k = stdpar1.s;
- else
- k = (stdpar1.c-stdpar0.c)/(stdpar0.l-stdpar1.l);
- yeq = -stdpar1.l - stdpar1.c/k;
- return Xtrapezoidal;
-}
diff --git a/src/doug/libmap/twocirc.c b/src/doug/libmap/twocirc.c
deleted file mode 100755
index 733cc17..0000000
--- a/src/doug/libmap/twocirc.c
+++ /dev/null
@@ -1,85 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-static double
-quadratic(double a, double b, double c)
-{
- double disc = b*b - 4*a*c;
- return disc<0? 0: (-b-sqrt(disc))/(2*a);
-}
-
-/* for projections with meridians being circles centered
-on the x axis and parallels being circles centered on the y
-axis. Find the intersection of the meridian thru (m,0), (90,0),
-with the parallel thru (0,p), (p1,p2) */
-
-static int
-twocircles(double m, double p, double p1, double p2, double *x, double *y)
-{
- double a; /* center of meridian circle, a>0 */
- double b; /* center of parallel circle, b>0 */
- double t,bb;
- if(m > 0) {
- twocircles(-m,p,p1,p2,x,y);
- *x = -*x;
- } else if(p < 0) {
- twocircles(m,-p,p1,-p2,x,y);
- *y = -*y;
- } else if(p < .01) {
- *x = m;
- t = m/p1;
- *y = p + (p2-p)*t*t;
- } else if(m > -.01) {
- *y = p;
- *x = m - m*p*p;
- } else {
- b = p>=1? 1: p>.99? 0.5*(p+1 + p1*p1/(1-p)):
- 0.5*(p*p-p1*p1-p2*p2)/(p-p2);
- a = .5*(m - 1/m);
- t = m*m-p*p+2*(b*p-a*m);
- bb = b*b;
- *x = quadratic(1+a*a/bb, -2*a + a*t/bb,
- t*t/(4*bb) - m*m + 2*a*m);
- *y = (*x*a+t/2)/b;
- }
- return 1;
-}
-
-static int
-Xglobular(struct place *place, double *x, double *y)
-{
- twocircles(-2*place->wlon.l/PI,
- 2*place->nlat.l/PI, place->nlat.c, place->nlat.s, x, y);
- return 1;
-}
-
-proj
-globular(void)
-{
- return Xglobular;
-}
-
-static int
-Xvandergrinten(struct place *place, double *x, double *y)
-{
- double t = 2*place->nlat.l/PI;
- double abst = fabs(t);
- double pval = abst>=1? 1: abst/(1+sqrt(1-t*t));
- double p2 = 2*pval/(1+pval);
- twocircles(-place->wlon.l/PI, pval, sqrt(1-p2*p2), p2, x, y);
- if(t < 0)
- *y = -*y;
- return 1;
-}
-
-proj
-vandergrinten(void)
-{
- return Xvandergrinten;
-}
diff --git a/src/doug/libmap/zcoord.c b/src/doug/libmap/zcoord.c
deleted file mode 100755
index a124f0c..0000000
--- a/src/doug/libmap/zcoord.c
+++ /dev/null
@@ -1,149 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-static double cirmod(double);
-
-static struct place pole; /* map pole is tilted to here */
-static struct coord twist; /* then twisted this much */
-static struct place ipole; /* inverse transfrom */
-static struct coord itwist;
-
-void
-orient(double lat, double lon, double theta)
-{
- lat = cirmod(lat);
- if(lat>90.) {
- lat = 180. - lat;
- lon -= 180.;
- theta -= 180.;
- } else if(lat < -90.) {
- lat = -180. - lat;
- lon -= 180.;
- theta -= 180;
- }
- latlon(lat,lon,&pole);
- deg2rad(theta, &twist);
- latlon(lat,180.-theta,&ipole);
- deg2rad(180.-lon, &itwist);
-}
-
-void
-latlon(double lat, double lon, struct place *p)
-{
- lat = cirmod(lat);
- if(lat>90.) {
- lat = 180. - lat;
- lon -= 180.;
- } else if(lat < -90.) {
- lat = -180. - lat;
- lon -= 180.;
- }
- deg2rad(lat,&p->nlat);
- deg2rad(lon,&p->wlon);
-}
-
-void
-deg2rad(double theta, struct coord *coord)
-{
- theta = cirmod(theta);
- coord->l = theta*RAD;
- if(theta==90) {
- coord->s = 1;
- coord->c = 0;
- } else if(theta== -90) {
- coord->s = -1;
- coord->c = 0;
- } else
- trig(coord);
-}
-
-static double
-cirmod(double theta)
-{
- while(theta >= 180.)
- theta -= 360;
- while(theta<-180.)
- theta += 360.;
- return(theta);
-}
-
-double
-trigclamp(double x)
-{
- return x>1? 1: x<-1? -1: x;
-}
-
-void
-trig(struct coord *coord)
-{
- coord->s = sin(coord->l);
- coord->c = cos(coord->l);
-}
-
-void
-normalize(struct place *gg)
-{
- norm(gg,&pole,&twist);
-}
-
-void
-invert(struct place *g)
-{
- norm(g,&ipole,&itwist);
-}
-
-void
-norm(struct place *gg, struct place *pp, struct coord *tw)
-{
- register struct place *g; /*geographic coords */
- register struct place *p; /* new pole in old coords*/
- struct place m; /* standard map coords*/
- g = gg;
- p = pp;
- if(p->nlat.s == 1.) {
- if(p->wlon.l+tw->l == 0.)
- return;
- g->wlon.l -= p->wlon.l+tw->l;
- } else {
- if(p->wlon.l != 0) {
- g->wlon.l -= p->wlon.l;
- trig(&g->wlon);
- }
- m.nlat.s = trigclamp(
- p->nlat.s * g->nlat.s
- + p->nlat.c * g->nlat.c * g->wlon.c);
- m.nlat.c = sqrt(1. - m.nlat.s * m.nlat.s);
- m.nlat.l = atan2(m.nlat.s, m.nlat.c);
- m.wlon.s = g->nlat.c * g->wlon.s;
- m.wlon.c = trigclamp(
- p->nlat.c * g->nlat.s
- - p->nlat.s * g->nlat.c * g->wlon.c);
- m.wlon.l = atan2(m.wlon.s, - m.wlon.c)
- - tw->l;
- *g = m;
- }
- trig(&g->wlon);
- if(g->wlon.l>PI)
- g->wlon.l -= 2*PI;
- else if(g->wlon.l<-PI)
- g->wlon.l += 2*PI;
-}
-
-void
-printp(struct place *g)
-{
-printf("%.3f %.3f %.3f %.3f %.3f %.3f\n",
-g->nlat.l,g->nlat.s,g->nlat.c,g->wlon.l,g->wlon.s,g->wlon.c);
-}
-
-void
-copyplace(struct place *g1, struct place *g2)
-{
- *g2 = *g1;
-}
diff --git a/src/doug/map.c b/src/doug/map.c
deleted file mode 100755
index 341cd81..0000000
--- a/src/doug/map.c
+++ /dev/null
@@ -1,1265 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-#include "plot.h"
-
-#define NVERT 20 /* max number of vertices in a -b polygon */
-#define HALFWIDTH 8192 /* output scaled to fit in -HALFWIDTH,HALFWIDTH */
-#define LONGLINES (HALFWIDTH*4) /* permissible segment lengths */
-#define SHORTLINES (HALFWIDTH/8)
-#define SCALERATIO 10 /* of abs to rel data (see map(5)) */
-#define RESOL 2. /* coarsest resolution for tracing grid (degrees) */
-#define TWO_THRD 0.66666666666666667
-
-int normproj(double, double, double *, double *);
-int posproj(double, double, double *, double *);
-int picut(struct place *, struct place *, double *);
-double reduce(double);
-short getshort(FILE *);
-char *mapindex(char *);
-proj projection;
-
-#ifndef MAPDIR
-#define MAPDIR "/usr/lib/map/lib"
-#endif
-
-static char *version = "map version 2004.03.30";
-
-static char *mapdir = MAPDIR; /* default map directory */
-struct file {
- char *name;
- char *color;
- char *style;
- double weight;
-};
-static struct file dfltfile = {
- "world", BLACK, SOLID /* default map */
-};
-static struct file *file = &dfltfile; /* list of map files */
-static int nfile = 1; /* length of list */
-static char *currcolor = BLACK; /* current color */
-static char *gridcolor = BLACK;
-static char *bordcolor = BLACK;
-
-static double currweight = 0; /* line weight, use default */
-static double gridweight = 0;
-static double bordweight = 0;
-
-static char *currstyle = SOLID; /* line style */
-static char *gridstyle = DOTTED;
-static char *bordstyle = SOLID;
-
-extern struct pindex pindex[];
-int halfwidth = HALFWIDTH;
-
-static int (*cut)(struct place *, struct place *, double *);
-static int (*limb)(double*, double*, double);
-static void dolimb(void);
-static int onlimb;
-static int poles;
-static double orientation[3] = { 90., 0., 0. }; /* -o option */
-static int oriented; /* nonzero if -o option occurred */
-static int upright; /* 1 if orientation[0]==90, -1 if -90, else 0*/
-static int delta = 1; /* -d setting */
-static double limits[4] = { /* -l parameters */
- -90., 90., -180., 180.
-};
-static double klimits[4] = { /* -k parameters */
- -90., 90., -180., 180.
-};
-static int limcase;
-static double rlimits[4]; /* limits expressed in radians */
-static double lolat, hilat, lolon, hilon;
-static double window[4] = { /* option -w */
- -90., 90., -180., 180.
-};
-static int windowed; /* nozero if option -w */
-static struct vert { double x, y; } v[NVERT+2]; /*clipping polygon*/
-static struct edge { double a, b, c; } e[NVERT]; /* coeffs for linear inequality */
-static int nvert; /* number of vertices in clipping polygon */
-
-static double rwindow[4]; /* window, expressed in radians */
-static double params[2]; /* projection params */
-/* bounds on output values before scaling; found by coarse survey */
-static double xmin = 100.;
-static double xmax = -100.;
-static double ymin = 100.;
-static double ymax = -100.;
-static double xcent, ycent;
-static double xoff, yoff;
-double xrange, yrange;
-static int left = -HALFWIDTH;
-static int right = HALFWIDTH;
-static int bottom = -HALFWIDTH;
-static int top = HALFWIDTH;
-static int longlines = SHORTLINES; /* drop longer segments */
-static int shortlines = SHORTLINES;
-static int bflag = 1; /* 0 for option -b */
-static int s1flag = 0; /* 1 for option -s1 */
-static int s2flag = 0; /* 1 for option -s2 */
-static int rflag = 0; /* 1 for option -r */
-static int kflag = 0; /* 1 if option -k occurred */
-static int xflag = 0; /* 1 for option -x */
-static int sflag = 0; /* 1 for option -L */
- int vflag = 1; /* -1 if option -v occurred */
-static double position[3]; /* option -p */
-static double center[3] = {0., 0., 0.}; /* option -c */
-static struct coord crot; /* option -c */
-static double grid[3] = { 10., 10., RESOL }; /* option -g */
-static double dlat, dlon; /* resolution for tracing grid in lat and lon */
-static double scaling; /* to compute final integer output */
-static struct file *track; /* options -t and -u */
-static int ntrack; /* number of tracks present */
-static char *symbolfile; /* option -y */
-
-void clamp(double *px, double v);
-void clipinit(void);
-double diddle(struct place *, double, double);
-double diddle(struct place *, double, double);
-void dobounds(double, double, double, double, int);
-void dogrid(double, double, double, double);
-int duple(struct place *, double);
-double fmax(double, double);
-double fmin(double, double);
-void getdata(char *);
-int gridpt(double, double, int);
-int inpoly(double, double);
-int inwindow(struct place *);
-void pathnames(void);
-int pnorm(double);
-void radbds(double *w, double *rw);
-void revlon(struct place *, double);
-void satellite(struct file *);
-int seeable(double, double);
-void windlim(void);
-void realcut(void);
-
-int
-option(char *s)
-{
-
- if(s[0]=='-' && (s[1]<'0'||s[1]>'9'))
- return(s[1]!='.'&&s[1]!=0);
- else
- return(0);
-}
-
-void
-conv(int k, struct coord *g)
-{
- g->l = (0.0001/SCALERATIO)*k;
- trig(g);
-}
-
-int
-main(int argc, char *argv[])
-{
- int i,k;
- char *s, *t, *style;
- double x, y;
- double lat, lon;
- double *wlim;
- double dd;
- if(sizeof(short)!=2)
- abort(); /* getshort() won't work */
- s = getenv("MAP");
- if(s)
- file[0].name = s;
- s = getenv("MAPDIR");
- if(s)
- mapdir = s;
- if(argc<=1)
- error("usage: map projection params options");
- for(k=0;pindex[k].name;k++) {
- s = pindex[k].name;
- t = argv[1];
- while(*s == *t){
- if(*s==0) goto found;
- s++;
- t++;
- }
- }
- fprintf(stderr,"%s projections:\n",version);
- for(i=0;pindex[i].name;i++) {
- fprintf(stderr,"%s",pindex[i].name);
- for(k=0; k<pindex[i].npar; k++)
- fprintf(stderr," p%d", k);
- fprintf(stderr,"\n");
- }
- exit(1);
-found:
- argv += 2;
- argc -= 2;
- cut = pindex[k].cut;
- limb = pindex[k].limb;
- poles = pindex[k].poles;
- for(i=0;i<pindex[k].npar;i++) {
- if(i>=argc||option(argv[i])) {
- fprintf(stderr,"%s needs %d params\n",pindex[k].name,pindex[k].npar);
- exit(1);
- }
- params[i] = atof(argv[i]);
- }
- argv += i;
- argc -= i;
- while(argc>0&&option(argv[0])) {
- argc--;
- argv++;
- switch(argv[-1][1]) {
- case 'm':
- if(file == &dfltfile) {
- file = 0;
- nfile = 0;
- }
- while(argc && !option(*argv)) {
- file = realloc(file,(nfile+1)*sizeof(*file));
- file[nfile].name = *argv;
- file[nfile].color = currcolor;
- file[nfile].style = SOLID;
- file[nfile].weight = currweight;
- nfile++;
- argv++;
- argc--;
- }
- break;
- case 'b':
- bflag = 0;
- bordweight = currweight;
- bordstyle = currstyle;
- for(nvert=0;argc>1&&nvert<NVERT;nvert++) {
- if(option(*argv))
- break;
- v[nvert].x = atof(*argv++);
- argc--;
- if(option(*argv))
- error("bad clipping vertex");
- v[nvert].y = atof(*argv++);
- argc--;
- }
- if(nvert>=NVERT)
- error("too many clipping vertices");
- break;
- case 'g':
- gridcolor = currcolor;
- if(sflag)
- gridstyle = currstyle;
- gridweight = currweight;
- for(i=0;i<3&&argc>i&&!option(argv[i]);i++)
- grid[i] = atof(argv[i]);
- switch(i) {
- case 0:
- grid[0] = grid[1] = 0.;
- break;
- case 1:
- grid[1] = grid[0];
- }
- argc -= i;
- argv += i;
- break;
- case 't':
- style = DOTDASH;
- goto casetu;
- case 'u':
- style = SOLID;
- casetu:
- if(sflag)
- style = currstyle;
- while(argc && !option(*argv)) {
- track = realloc(track,(ntrack+1)*sizeof(*track));
- track[ntrack].name = *argv;
- track[ntrack].color = currcolor;
- track[ntrack].style = style;
- track[ntrack].weight = currweight;
- ntrack++;
- argv++;
- argc--;
- }
- break;
- case 'r':
- rflag++;
- break;
- case 's':
- switch(argv[-1][2]) {
- case '1':
- s1flag++;
- break;
- case 0: /* compatibility */
- case '2':
- s2flag++;
- }
- break;
- case 'o':
- for(i=0;i<3&&i<argc&&!option(argv[i]);i++)
- orientation[i] = atof(argv[i]);
- oriented++;
- argv += i;
- argc -= i;
- break;
- case 'l':
- for(i=0;i<argc&&i<4&&!option(argv[i]);i++)
- limits[i] = atof(argv[i]);
- argv += i;
- argc -= i;
- break;
- case 'k':
- kflag++;
- for(i=0;i<argc&&i<4&&!option(argv[i]);i++)
- klimits[i] = atof(argv[i]);
- argv += i;
- argc -= i;
- break;
- case 'd':
- if(argc>0&&!option(argv[0])) {
- delta = atoi(argv[0]);
- argv++;
- argc--;
- }
- break;
- case 'w':
- windowed++;
- for(i=0;i<argc&&i<4&&!option(argv[i]);i++)
- window[i] = atof(argv[i]);
- argv += i;
- argc -= i;
- break;
- case 'c':
- for(i=0;i<3&&argc>i&&!option(argv[i]);i++)
- center[i] = atof(argv[i]);
- argc -= i;
- argv += i;
- break;
- case 'p':
- for(i=0;i<3&&argc>i&&!option(argv[i]);i++)
- position[i] = atof(argv[i]);
- argc -= i;
- argv += i;
- if(i!=3||position[2]<=0)
- error("incomplete positioning");
- break;
- case 'y':
- if(argc>0&&!option(argv[0])) {
- symbolfile = argv[0];
- argc--;
- argv++;
- }
- break;
- case 'v':
- if(pindex[k].limb == 0)
- error("-v does not apply here");
- vflag = -1;
- break;
- case 'x':
- xflag = 1;
- break;
- case 'C':
- if(argc && !option(*argv)) {
- currcolor = *argv;
- argc--;
- argv++;
- }
- break;
- case 'L':
- if(argc && !option(*argv)) {
- currstyle = *argv;
- sflag++;
- argc--;
- argv++;
- }
- break;
- case 'W':
- if(argc && !option(*argv)) {
- currweight = atof(*argv);
- argc--;
- argv++;
- }
- break;
- }
- }
- if(argc>0)
- error("error in arguments");
- pathnames();
- clamp(&limits[0],-90.);
- clamp(&limits[1],90.);
- clamp(&klimits[0],-90.);
- clamp(&klimits[1],90.);
- clamp(&window[0],-90.);
- clamp(&window[1],90.);
- radbds(limits,rlimits);
- limcase = limits[2]<-180.?0:
- limits[3]>180.?2:
- 1;
- if(
- window[0]>=window[1]||
- window[2]>=window[3]||
- window[0]>90.||
- window[1]<-90.||
- window[2]>180.||
- window[3]<-180.)
- error("unreasonable window");
- windlim();
- radbds(window,rwindow);
- upright = orientation[0]==90? 1: orientation[0]==-90? -1: 0;
- if(pindex[k].spheroid && !upright)
- error("can't tilt the spheroid");
- if(limits[2]>limits[3])
- limits[3] += 360;
- if(!oriented)
- orientation[2] = (limits[2]+limits[3])/2;
- orient(orientation[0],orientation[1],orientation[2]);
- projection = (*pindex[k].prog)(params[0],params[1]);
- if(projection == 0)
- error("unreasonable projection parameters");
- clipinit();
- grid[0] = fabs(grid[0]);
- grid[1] = fabs(grid[1]);
- if(!kflag)
- for(i=0;i<4;i++)
- klimits[i] = limits[i];
- if(klimits[2]>klimits[3])
- klimits[3] += 360;
- lolat = limits[0];
- hilat = limits[1];
- lolon = limits[2];
- hilon = limits[3];
- if(lolon>=hilon||lolat>=hilat||lolat<-90.||hilat>90.)
- error("unreasonable limits");
- wlim = kflag? klimits: window;
- dlat = fmin(hilat-lolat,wlim[1]-wlim[0])/16;
- dlon = fmin(hilon-lolon,wlim[3]-wlim[2])/32;
- dd = fmax(dlat,dlon);
- while(grid[2]>fmin(dlat,dlon)/2)
- grid[2] /= 2;
- realcut();
- if(nvert<=0) {
- for(lat=klimits[0];lat<klimits[1]+dd-FUZZ;lat+=dd) {
- if(lat>klimits[1])
- lat = klimits[1];
- for(lon=klimits[2];lon<klimits[3]+dd-FUZZ;lon+=dd) {
- i = (kflag?posproj:normproj)
- (lat,lon+(lon<klimits[3]?FUZZ:-FUZZ),
- &x,&y);
- if(i*vflag <= 0)
- continue;
- if(x<xmin) xmin = x;
- if(x>xmax) xmax = x;
- if(y<ymin) ymin = y;
- if(y>ymax) ymax = y;
- }
- }
- } else {
- for(i=0; i<nvert; i++) {
- x = v[i].x;
- y = v[i].y;
- if(x<xmin) xmin = x;
- if(x>xmax) xmax = x;
- if(y<ymin) ymin = y;
- if(y>ymax) ymax = y;
- }
- }
- xrange = xmax - xmin;
- yrange = ymax - ymin;
- if(xrange<=0||yrange<=0)
- error("map seems to be empty");
- scaling = 2; /*plotting area from -1 to 1*/
- if(position[2]!=0) {
- if(posproj(position[0]-.5,position[1],&xcent,&ycent)==0||
- posproj(position[0]+.5,position[1],&x,&y)==0)
- error("unreasonable position");
- scaling /= (position[2]*hypot(x-xcent,y-ycent));
- if(posproj(position[0],position[1],&xcent,&ycent)==0)
- error("unreasonable position");
- } else {
- scaling /= (xrange>yrange?xrange:yrange);
- xcent = (xmin+xmax)/2;
- ycent = (ymin+ymax)/2;
- }
- xoff = center[0]/scaling;
- yoff = center[1]/scaling;
- crot.l = center[2]*RAD;
- trig(&crot);
- scaling *= HALFWIDTH*0.9;
- if(symbolfile)
- getsyms(symbolfile);
- if(!s2flag) {
- openpl();
- erase();
- }
- range(left,bottom,right,top);
- comment("grid","");
- color(gridcolor);
- weight(gridweight);
- pen(gridstyle);
- if(grid[0]>0.)
- for(lat=ceil(lolat/grid[0])*grid[0];
- lat<=hilat;lat+=grid[0])
- dogrid(lat,lat,lolon,hilon);
- if(grid[1]>0.)
- for(lon=ceil(lolon/grid[1])*grid[1];
- lon<=hilon;lon+=grid[1])
- dogrid(lolat,hilat,lon,lon);
- comment("border","");
- color(bordcolor);
- weight(bordweight);
- pen(bordstyle);
- if(bflag) {
- dolimb();
- dobounds(lolat,hilat,lolon,hilon,0);
- dobounds(window[0],window[1],window[2],window[3],1);
- }
- lolat = floor(limits[0]/10)*10;
- hilat = ceil(limits[1]/10)*10;
- lolon = floor(limits[2]/10)*10;
- hilon = ceil(limits[3]/10)*10;
- if(lolon>hilon)
- hilon += 360.;
- /*do tracks first so as not to lose the standard input*/
- for(i=0;i<ntrack;i++) {
- longlines = LONGLINES;
- satellite(&track[i]);
- longlines = shortlines;
- }
- for(i=0;i<nfile;i++) {
- comment("mapfile",file[i].name);
- color(file[i].color);
- weight(file[i].weight);
- pen(file[i].style);
- getdata(file[i].name);
- }
- move(right,bottom);
- if(!s1flag)
- closepl();
- return 0;
-}
-
-/* Out of perverseness (really to recover from a dubious,
- but documented, convention) the returns from projection
- functions (-1 unplottable, 0 wrong sheet, 1 good) are
- recoded into -1 wrong sheet, 0 unplottable, 1 good. */
-
-int
-fixproj(struct place *g, double *x, double *y)
-{
- int i = (*projection)(g,x,y);
- return i<0? 0: i==0? -1: 1;
-}
-
-int
-normproj(double lat, double lon, double *x, double *y)
-{
- int i;
- struct place geog;
- latlon(lat,lon,&geog);
-/*
- printp(&geog);
-*/
- normalize(&geog);
- if(!inwindow(&geog))
- return(-1);
- i = fixproj(&geog,x,y);
- if(rflag)
- *x = -*x;
-/*
- printp(&geog);
- fprintf(stderr,"%d %.3f %.3f\n",i,*x,*y);
-*/
- return(i);
-}
-
-int
-posproj(double lat, double lon, double *x, double *y)
-{
- int i;
- struct place geog;
- latlon(lat,lon,&geog);
- normalize(&geog);
- i = fixproj(&geog,x,y);
- if(rflag)
- *x = -*x;
- return(i);
-}
-
-int
-inwindow(struct place *geog)
-{
- if(geog->nlat.l<rwindow[0]-FUZZ||
- geog->nlat.l>rwindow[1]+FUZZ||
- geog->wlon.l<rwindow[2]-FUZZ||
- geog->wlon.l>rwindow[3]+FUZZ)
- return(0);
- else return(1);
-}
-
-int
-inlimits(struct place *g)
-{
- if(rlimits[0]-FUZZ>g->nlat.l||
- rlimits[1]+FUZZ<g->nlat.l)
- return(0);
- switch(limcase) {
- case 0:
- if(rlimits[2]+TWOPI-FUZZ>g->wlon.l&&
- rlimits[3]+FUZZ<g->wlon.l)
- return(0);
- break;
- case 1:
- if(rlimits[2]-FUZZ>g->wlon.l||
- rlimits[3]+FUZZ<g->wlon.l)
- return(0);
- break;
- case 2:
- if(rlimits[2]>g->wlon.l&&
- rlimits[3]-TWOPI+FUZZ<g->wlon.l)
- return(0);
- break;
- }
- return(1);
-}
-
-
-long patch[18][36];
-
-void
-getdata(char *mapfile)
-{
- char *indexfile;
- int kx,ky,c;
- int k;
- long b;
- long *p;
- int ip, jp;
- int n;
- struct place g;
- int i, j;
- double lat, lon;
- int conn;
- FILE *ifile, *xfile;
-
- indexfile = mapindex(mapfile);
- xfile = fopen(indexfile,"r");
- if(xfile==NULL)
- filerror("can't find map index", indexfile);
- free(indexfile);
- for(i=0,p=patch[0];i<18*36;i++,p++)
- *p = 1;
- while(!feof(xfile) && fscanf(xfile,"%d%d%ld",&i,&j,&b)==3)
- patch[i+9][j+18] = b;
- fclose(xfile);
- ifile = fopen(mapfile,"rb");
- if(ifile==NULL)
- filerror("can't find map data", mapfile);
- for(lat=lolat;lat<hilat;lat+=10.)
- for(lon=lolon;lon<hilon;lon+=10.) {
- if(!seeable(lat,lon))
- continue;
- i = pnorm(lat);
- j = pnorm(lon);
- if((b=patch[i+9][j+18])&1)
- continue;
- fseek(ifile,b,0);
- while((ip=getc(ifile))>=0&&(jp=getc(ifile))>=0){
- if(ip!=(i&0377)||jp!=(j&0377))
- break;
- n = getshort(ifile);
- conn = 0;
- if(n > 0) { /* absolute coordinates */
- kx = ky = 0; /* set */
- for(k=0;k<n;k++){
- kx = SCALERATIO*getshort(ifile);
- ky = SCALERATIO*getshort(ifile);
- if (((k%delta) != 0) && (k != (n-1)))
- continue;
- conv(kx,&g.nlat);
- conv(ky,&g.wlon);
- conn = plotpt(&g,conn);
- }
- } else { /* differential, scaled by SCALERATI0 */
- n = -n;
- kx = SCALERATIO*getshort(ifile);
- ky = SCALERATIO*getshort(ifile);
- for(k=0; k<n; k++) {
- c = getc(ifile);
- if(c&0200) c|= ~0177;
- kx += c;
- c = getc(ifile);
- if(c&0200) c|= ~0177;
- ky += c;
- if(k%delta!=0&&k!=n-1)
- continue;
- conv(kx,&g.nlat);
- conv(ky,&g.wlon);
- conn = plotpt(&g,conn);
- }
- }
- if(k==1) {
- conv(kx,&g.nlat);
- conv(ky,&g.wlon);
- plotpt(&g,conn);
- }
- }
- }
- fclose(ifile);
-}
-
-int
-seeable(double lat0, double lon0)
-{
- double x, y;
- double lat, lon;
- for(lat=lat0;lat<=lat0+10;lat+=2*grid[2])
- for(lon=lon0;lon<=lon0+10;lon+=2*grid[2])
- if(normproj(lat,lon,&x,&y)*vflag>0)
- return(1);
- return(0);
-}
-
-void
-satellite(struct file *t)
-{
- char sym[50];
- char lbl[50];
- double scale;
- int conn;
- double lat,lon;
- struct place place;
- static FILE *ifile;
- ifile = stdin;
- if(t->name[0]!='-'||t->name[1]!=0) {
- fclose(ifile);
- if((ifile=fopen(t->name,"r"))==NULL)
- filerror("can't find track", t->name);
- }
- comment("track",t->name);
- color(t->color);
- weight(t->weight);
- pen(t->style);
- for(;;) {
- conn = 0;
- while(!feof(ifile) && fscanf(ifile,"%lf%lf",&lat,&lon)==2){
- latlon(lat,lon,&place);
- if(fscanf(ifile,"%1s",lbl) == 1) {
- if(strchr("+-.0123456789",*lbl)==0)
- break;
- ungetc(*lbl,ifile);
- }
- conn = plotpt(&place,conn);
- }
- if(feof(ifile))
- return;
- fscanf(ifile,"%[^\n]",lbl+1);
- switch(*lbl) {
- case '"':
- if(plotpt(&place,conn))
- text(lbl+1);
- break;
- case ':':
- case '!':
- if(sscanf(lbl+1,"%s %lf",sym,&scale) <= 1)
- scale = 1;
- if(plotpt(&place,conn?conn:-1)) {
- int r = *lbl=='!'?0:rflag?-1:1;
- pen(SOLID);
- if(putsym(&place,sym,scale,r) == 0)
- text(lbl);
- pen(t->style);
- }
- break;
- default:
- if(plotpt(&place,conn))
- text(lbl);
- break;
- }
- }
-}
-
-int
-pnorm(double x)
-{
- int i;
- i = x/10.;
- i %= 36;
- if(i>=18) return(i-36);
- if(i<-18) return(i+36);
- return(i);
-}
-
-void
-error(char *s)
-{
- fprintf(stderr,"\r\n%s: %s\n",version,s);
- exit(1);
-}
-
-void
-filerror(char *s, char *f)
-{
- fprintf(stderr,"\r\n%s: %s %s\n",version,s,f);
- exit(1);
-}
-
-char *
-mapindex(char *s)
-{
- char *t = malloc(strlen(s)+3);
- strcpy(t,s);
- strcat(t,".x");
- return t;
-}
-
-#define NOPT 32767
-static int ox = NOPT, oy = NOPT;
-
-int
-cpoint(int xi, int yi, int conn)
-{
- int dx = abs(ox-xi);
- int dy = abs(oy-yi);
- if(!xflag && (xi<left||xi>=right || yi<bottom||yi>=top)) {
- ox = oy = NOPT;
- return 0;
- }
- if(conn == -1) /* isolated plotting symbol */
- ;
- else if(!conn)
- point(xi,yi);
- else {
- if(dx+dy>longlines) {
- ox = oy = NOPT; /* don't leap across cuts */
- return 0;
- }
- if(dx || dy)
- vec(xi,yi);
- }
- ox = xi, oy = yi;
- return dx+dy<=2? 2: 1; /* 2=very near; see dogrid */
-}
-
-
-struct place oldg;
-
-int
-plotpt(struct place *g, int conn)
-{
- int kx,ky;
- int ret;
- double cutlon;
- if(!inlimits(g)) {
- return(0);
-}
- normalize(g);
- if(!inwindow(g)) {
- return(0);
-}
- switch((*cut)(g,&oldg,&cutlon)) {
- case 2:
- if(conn) {
- ret = duple(g,cutlon)|duple(g,cutlon);
- oldg = *g;
- return(ret);
- }
- case 0:
- conn = 0;
- default: /* prevent diags about bad return value */
- case 1:
- oldg = *g;
- ret = doproj(g,&kx,&ky);
- if(ret==0 || (!onlimb && ret*vflag<=0))
- return(0);
- ret = cpoint(kx,ky,conn);
- return ret;
- }
-}
-
-int
-doproj(struct place *g, int *kx, int *ky)
-{
- int i;
- double x,y,x1,y1;
-/*fprintf(stderr,"dopr1 %f %f \n",g->nlat.l,g->wlon.l);*/
- i = fixproj(g,&x,&y);
- if(i == 0)
- return(0);
- if(rflag)
- x = -x;
-/*fprintf(stderr,"dopr2 %f %f\n",x,y);*/
- if(!inpoly(x,y)) {
- return 0;
-}
- x1 = x - xcent;
- y1 = y - ycent;
- x = (x1*crot.c - y1*crot.s + xoff)*scaling;
- y = (x1*crot.s + y1*crot.c + yoff)*scaling;
- *kx = x + (x>0?.5:-.5);
- *ky = y + (y>0?.5:-.5);
- return(i);
-}
-
-int
-duple(struct place *g, double cutlon)
-{
- int kx,ky;
- int okx,oky;
- struct place ig;
- revlon(g,cutlon);
- revlon(&oldg,cutlon);
- ig = *g;
- invert(&ig);
- if(!inlimits(&ig))
- return(0);
- if(doproj(g,&kx,&ky)*vflag<=0 ||
- doproj(&oldg,&okx,&oky)*vflag<=0)
- return(0);
- cpoint(okx,oky,0);
- cpoint(kx,ky,1);
- return(1);
-}
-
-void
-revlon(struct place *g, double cutlon)
-{
- g->wlon.l = reduce(cutlon-reduce(g->wlon.l-cutlon));
- trig(&g->wlon);
-}
-
-
-/* recognize problems of cuts
- * move a point across cut to side of its predecessor
- * if its very close to the cut
- * return(0) if cut interrupts the line
- * return(1) if line is to be drawn normally
- * return(2) if line is so close to cut as to
- * be properly drawn on both sheets
-*/
-
-int
-picut(struct place *g, struct place *og, double *cutlon)
-{
- *cutlon = PI;
- return(ckcut(g,og,PI));
-}
-
-int
-nocut(struct place *g, struct place *og, double *cutlon)
-{
-/*
-#pragma ref g
-#pragma ref og
-#pragma ref cutlon
-*/
- return(1);
-}
-
-int
-ckcut(struct place *g1, struct place *g2, double lon)
-{
- double d1, d2;
- double f1, f2;
- int kx,ky;
- d1 = reduce(g1->wlon.l -lon);
- d2 = reduce(g2->wlon.l -lon);
- if((f1=fabs(d1))<FUZZ)
- d1 = diddle(g1,lon,d2);
- if((f2=fabs(d2))<FUZZ) {
- d2 = diddle(g2,lon,d1);
- if(doproj(g2,&kx,&ky)*vflag>0)
- cpoint(kx,ky,0);
- }
- if(f1<FUZZ&&f2<FUZZ)
- return(2);
- if(f1>PI*TWO_THRD||f2>PI*TWO_THRD)
- return(1);
- return(d1*d2>=0);
-}
-
-double
-diddle(struct place *g, double lon, double d)
-{
- double d1;
- d1 = FUZZ/2;
- if(d<0)
- d1 = -d1;
- g->wlon.l = reduce(lon+d1);
- trig(&g->wlon);
- return(d1);
-}
-
-double
-reduce(double lon)
-{
- if(lon>PI)
- lon -= 2*PI;
- else if(lon<-PI)
- lon += 2*PI;
- return(lon);
-}
-
-
-double tetrapt = 35.26438968; /* atan(1/sqrt(2)) */
-
-void
-dogrid(double lat0, double lat1, double lon0, double lon1)
-{
- double slat,slon,tlat,tlon;
- register int conn, oconn;
- slat = tlat = slon = tlon = 0;
- if(lat1>lat0)
- slat = tlat = fmin(grid[2],dlat);
- else
- slon = tlon = fmin(grid[2],dlon);;
- conn = oconn = 0;
- while(lat0<=lat1&&lon0<=lon1) {
- conn = gridpt(lat0,lon0,conn);
- if(projection==Xguyou&&slat>0) {
- if(lat0<-45&&lat0+slat>-45)
- conn = gridpt(-45.,lon0,conn);
- else if(lat0<45&&lat0+slat>45)
- conn = gridpt(45.,lon0,conn);
- } else if(projection==Xtetra&&slat>0) {
- if(lat0<-tetrapt&&lat0+slat>-tetrapt) {
- gridpt(-tetrapt-.001,lon0,conn);
- conn = gridpt(-tetrapt+.001,lon0,0);
- }
- else if(lat0<tetrapt&&lat0+slat>tetrapt) {
- gridpt(tetrapt-.001,lon0,conn);
- conn = gridpt(tetrapt+.001,lon0,0);
- }
- }
- if(conn==0 && oconn!=0) {
- if(slat+slon>.05) {
- lat0 -= slat; /* steps too big */
- lon0 -= slon; /* or near bdry */
- slat /= 2;
- slon /= 2;
- conn = oconn = gridpt(lat0,lon0,conn);
- } else
- oconn = 0;
- } else {
- if(conn==2) {
- slat = tlat;
- slon = tlon;
- conn = 1;
- }
- oconn = conn;
- }
- lat0 += slat;
- lon0 += slon;
- }
- gridpt(lat1,lon1,conn);
-}
-
-static int gridinv; /* nonzero when doing window bounds */
-
-int
-gridpt(double lat, double lon, int conn)
-{
- struct place g;
-/*fprintf(stderr,"%f %f\n",lat,lon);*/
- latlon(lat,lon,&g);
- if(gridinv)
- invert(&g);
- return(plotpt(&g,conn));
-}
-
-/* win=0 ordinary grid lines, win=1 window lines */
-
-void
-dobounds(double lolat, double hilat, double lolon, double hilon, int win)
-{
- gridinv = win;
- if(lolat>-90 || (win && (poles&1)!=0))
- dogrid(lolat+FUZZ,lolat+FUZZ,lolon,hilon);
- if(hilat<90 || (win && (poles&2)!=0))
- dogrid(hilat-FUZZ,hilat-FUZZ,lolon,hilon);
- if(hilon-lolon<360 || (win && cut==picut)) {
- dogrid(lolat,hilat,lolon+FUZZ,lolon+FUZZ);
- dogrid(lolat,hilat,hilon-FUZZ,hilon-FUZZ);
- }
- gridinv = 0;
-}
-
-static void
-dolimb(void)
-{
- double lat, lon;
- double res = fmin(dlat, dlon)/4;
- int conn = 0;
- int newconn;
- if(limb == 0)
- return;
- onlimb = gridinv = 1;
- for(;;) {
- newconn = (*limb)(&lat, &lon, res);
- if(newconn == -1)
- break;
- conn = gridpt(lat, lon, conn*newconn);
- }
- onlimb = gridinv = 0;
-}
-
-
-void
-radbds(double *w, double *rw)
-{
- int i;
- for(i=0;i<4;i++)
- rw[i] = w[i]*RAD;
- rw[0] -= FUZZ;
- rw[1] += FUZZ;
- rw[2] -= FUZZ;
- rw[3] += FUZZ;
-}
-
-void
-windlim(void)
-{
- double center = orientation[0];
- double colat;
- if(center>90)
- center = 180 - center;
- if(center<-90)
- center = -180 - center;
- if(fabs(center)>90)
- error("unreasonable orientation");
- colat = 90 - window[0];
- if(center-colat>limits[0])
- limits[0] = center - colat;
- if(center+colat<limits[1])
- limits[1] = center + colat;
-}
-
-
-short
-getshort(FILE *f)
-{
- int c, r;
- c = getc(f);
- r = (c | getc(f)<<8);
- if (r&0x8000)
- r |= ~0xFFFF; /* in case short > 16 bits */
- return r;
-}
-
-double
-fmin(double x, double y)
-{
- return(x<y?x:y);
-}
-
-double
-fmax(double x, double y)
-{
- return(x>y?x:y);
-}
-
-void
-clamp(double *px, double v)
-{
- *px = (v<0?fmax:fmin)(*px,v);
-}
-
-void
-pathnames(void)
-{
- int i;
- char *t, *indexfile, *name;
- FILE *f, *fx;
- for(i=0; i<nfile; i++) {
- name = file[i].name;
- if(*name=='/')
- continue;
- indexfile = mapindex(name);
- /* ansi equiv of unix access() call */
- f = fopen(name, "r");
- fx = fopen(indexfile, "r");
- if(f) fclose(f);
- if(fx) fclose(fx);
- free(indexfile);
- if(f && fx)
- continue;
- t = malloc(strlen(name)+strlen(mapdir)+2);
- strcpy(t,mapdir);
- strcat(t,"/");
- strcat(t,name);
- file[i].name = t;
- }
-}
-
-void
-clipinit(void)
-{
- int i;
- double s,t;
- if(nvert<=0)
- return;
- for(i=0; i<nvert; i++) { /*convert latlon to xy*/
- if(normproj(v[i].x,v[i].y,&v[i].x,&v[i].y)==0)
- error("invisible clipping vertex");
- }
- if(nvert==2) { /*rectangle with diag specified*/
- nvert = 4;
- v[2] = v[1];
- v[1].x=v[0].x, v[1].y=v[2].y, v[3].x=v[2].x, v[3].y=v[0].y;
- }
- v[nvert] = v[0];
- v[nvert+1] = v[1];
- s = 0;
- for(i=1; i<=nvert; i++) { /*test for convexity*/
- t = (v[i-1].x-v[i].x)*(v[i+1].y-v[i].y) -
- (v[i-1].y-v[i].y)*(v[i+1].x-v[i].x);
- if(t<-FUZZ && s>=0) s = 1;
- if(t>FUZZ && s<=0) s = -1;
- if((-FUZZ<=t&&t<=FUZZ) || t*s>0) {
- s = 0;
- break;
- }
- }
- if(s==0)
- error("improper clipping polygon");
- for(i=0; i<nvert; i++) { /*edge equation ax+by=c*/
- e[i].a = s*(v[i+1].y - v[i].y);
- e[i].b = s*(v[i].x - v[i+1].x);
- e[i].c = s*(v[i].x*v[i+1].y - v[i].y*v[i+1].x);
- }
-}
-
-int
-inpoly(double x, double y)
-{
- int i;
- for(i=0; i<nvert; i++) {
- register struct edge *ei = &e[i];
- double val = x*ei->a + y*ei->b - ei->c;
- if(val>10*FUZZ)
- return(0);
- }
- return 1;
-}
-
-void
-realcut()
-{
- struct place g;
- double lat;
-
- if(cut != picut) /* punt on unusual cuts */
- return;
- for(lat=window[0]; lat<=window[1]; lat+=grid[2]) {
- g.wlon.l = PI;
- trig(&g.wlon);
- g.nlat.l = lat*RAD;
- trig(&g.nlat);
- if(!inwindow(&g)) {
- break;
-}
- invert(&g);
- if(inlimits(&g)) {
- return;
-}
- }
- longlines = shortlines = LONGLINES;
- cut = nocut; /* not necessary; small eff. gain */
-}
diff --git a/src/doug/map.h b/src/doug/map.h
deleted file mode 100755
index 21ce333..0000000
--- a/src/doug/map.h
+++ /dev/null
@@ -1,156 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include <math.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-
-#ifndef PI
-#define PI 3.1415926535897932384626433832795028841971693993751
-#endif
-
-#define TWOPI (2*PI)
-#define RAD (PI/180)
-double hypot(double, double); /* sqrt(a*a+b*b) */
-double tan(double); /* not in K&R library */
-
-#define ECC .08227185422 /* eccentricity of earth */
-#define EC2 .006768657997
-
-#define FUZZ .0001
-#define UNUSED 0.0 /* a dummy double parameter */
-
-struct coord {
- double l; /* lat or lon in radians*/
- double s; /* sin */
- double c; /* cos */
-};
-struct place {
- struct coord nlat;
- struct coord wlon;
-};
-
-typedef int (*proj)(struct place *, double *, double *);
-
-struct pindex { /* index of known projections */
- char *name; /* name of projection */
- proj (*prog)(double, double);
- /* pointer to projection function */
- int npar; /* number of params */
- int (*cut)(struct place *, struct place *, double *);
- /* function that handles cuts--eg longitude 180 */
- int poles; /*1 S pole is a line, 2 N pole is, 3 both*/
- int spheroid; /* poles must be at 90 deg if nonzero */
- int (*limb)(double *lat, double *lon, double resolution);
- /* get next place on limb */
- /* return -1 if done, 0 at gap, else 1 */
-};
-
-
-proj aitoff(void);
-proj albers(double, double);
-int Xazequalarea(struct place *, double *, double *);
-proj azequalarea(void);
-int Xazequidistant(struct place *, double *, double *);
-proj azequidistant(void);
-proj bicentric(double);
-proj bonne(double);
-proj conic(double);
-proj cylequalarea(double);
-int Xcylindrical(struct place *, double *, double *);
-proj cylindrical(void);
-proj eisenlohr(void);
-proj elliptic(double);
-int elimb(double*, double*, double);
-proj fisheye(double);
-proj gall(double);
-proj gilbert(void);
-proj globular(void);
-proj gnomonic(void);
-int guycut(struct place *, struct place *, double *);
-int Xguyou(struct place *, double *, double *);
-proj guyou(void);
-proj harrison(double, double);
-int hexcut(struct place *, struct place *, double *);
-proj hex(void);
-proj homing(double);
-int hlimb(double*, double*, double resolution);
-proj lagrange(void);
-proj lambert(double, double);
-proj laue(void);
-proj lune(double, double);
-proj loxodromic(double); /* not in library */
-proj mecca(double);
-int mlimb(double*, double*, double resolution);
-proj mercator(void);
-proj mollweide(void);
-proj newyorker(double);
-proj ortelius(double, double); /* not in library */
-int Xorthographic(struct place *place, double *x, double *y);
-proj orthographic(void);
-int olimb(double*, double*, double);
-proj perspective(double);
-int plimb(double*, double*, double resolution);
-int Xpolyconic(struct place *, double *, double *);
-proj polyconic(void);
-proj rectangular(double);
-proj simpleconic(double, double);
-int Xsinusoidal(struct place *, double *, double *);
-proj sinusoidal(void);
-proj sp_albers(double, double);
-proj sp_mercator(void);
-proj square(void);
-int Xstereographic(struct place *, double *, double *);
-proj stereographic(void);
-int Xtetra(struct place *, double *, double *);
-int tetracut(struct place *, struct place *, double *);
-proj tetra(void);
-proj trapezoidal(double, double);
-proj vandergrinten(void);
-proj wreath(double, double); /* not in library */
-
-void findxy(double, double *, double *);
-void albscale(double, double, double, double);
-void invalb(double, double, double *, double *);
-
-void cdiv(double, double, double, double, double *, double *);
-void cmul(double, double, double, double, double *, double *);
-void cpow(double, double, double *, double *, double);
-void csq(double, double, double *, double *);
-void csqrt(double, double, double *, double *);
-void ccubrt(double, double, double *, double *);
-double cubrt(double);
-int elco2(double, double, double, double, double, double *, double *);
-void cdiv2(double, double, double, double, double *, double *);
-void csqr(double, double, double *, double *);
-
-void orient(double, double, double);
-void latlon(double, double, struct place *);
-void deg2rad(double, struct coord *);
-double trigclamp(double);
-void trig(struct coord *);
-void normalize(struct place *);
-void invert(struct place *);
-void norm(struct place *, struct place *, struct coord *);
-void printp(struct place *);
-void copyplace(struct place *, struct place *);
-
-int picut(struct place *, struct place *, double *);
-int ckcut(struct place *, struct place *, double);
-double reduce(double);
-
-void getsyms(char *);
-int putsym(struct place *, char *, double, int);
-void filerror(char *s, char *f);
-void error(char *s);
-int doproj(struct place *, int *, int *);
-int cpoint(int, int, int);
-int plotpt(struct place *, int);
-int nocut(struct place *, struct place *, double *);
-
-extern int (*projection)(struct place *, double *, double *);
diff --git a/src/doug/map.sh b/src/doug/map.sh
deleted file mode 100755
index 6a5d66d..0000000
--- a/src/doug/map.sh
+++ /dev/null
@@ -1,71 +0,0 @@
-#!/bin/sh
-# /************************************************************
-#
-# Copyright (C) 1998, Lucent Technologies
-# All rights reserved
-#
-# ************************************************************/
-#
-# MF -m -f or "", M map files, A other arguments
-# MFLAG and FFLAG 0 or 1 for -m or -f ever used
-
-MAPHOME=${MAPHOME-/usr/lib/map}
-MAPPROG=${MAPPROG-$MAPHOME/bin/map}
-MAPDIR=${MAPDIR-$MAPHOME/lib}
-M= A= MF= MFLAG=0 FFLAG=0
-for i in $*
-do
- case $i in
- -m)
- MF=-m MFLAG=1 ;;
- -f)
- MF=-f FFLAG=1 ;;
- -*)
- MF= A="$A $i" ;;
- *)
- case $MF$i in
- -m*) M="$M $i" ;;
- -friv*4) M="$M 201 202 203 204";;
- -friv*3) M="$M 201 202 203";;
- -friv*2) M="$M 201 202";;
- -friv*) M="$M 201";;
- -firiv*[34]) M="$M 206 207 208";;
- -firiv*2) M="$M 206 207";;
- -firiv*) M="$M 206";;
- -fcoast*4|-fshore*4|-flake*4) M="$M 102 103 104";;
- -fcoast*3|-fshore*3|-flake*3) M="$M 102 103";;
- -fcoast*2|-fshore*2|-flake*2) M="$M 102";;
- -fcoast*|-fshore*|-flake*) M="$M 101";;
- -filake*[234]|-fishore*[234]) M="$M 106 107";;
- -filake*|-fishore*) M="$M 106";;
- -freef*) M="$M 108";;
- -fcanal*[34]) M="$M 210 211 212";;
- -fcanal*2) M="$M 210 211";;
- -fcanal*) M="$M 210";;
- -fglacier*) M="$M 115";;
- -fstate*|-fprovince*) M="$M 401";;
- -fcountr*[34]) M="$M 301 302 303";;
- -fcountr*2) M="$M 301 302";;
- -fcountr*) M="$M 301";;
- -fsalt*[234]) M="$M 109 110";;
- -fsalt*) M="$M 109";;
- -fice*[234]|-fshel*[234]) M="$M 113 114";;
- -fice*|-fshel*) M="$M 113";;
- -f*) echo map: unknown feature $i 1>&2
- exit 1 ;;
- *)
- A="$A $i" MF=
- esac
- esac
-done
-
-case "$MFLAG$FFLAG$M " in
-00)
- : ;;
-1* | *" 101 "*)
- M="-m $M" ;;
-01*)
- M="-m 101 $M"
-esac
-
-MAP=${MAP-world} MAPDIR=$MAPDIR $MAPPROG $A $M
diff --git a/src/doug/map.tar b/src/doug/map.tar
deleted file mode 100755
index 6d4833f..0000000
Binary files a/src/doug/map.tar and /dev/null differ
diff --git a/src/doug/mapdata/counties b/src/doug/mapdata/counties
deleted file mode 100755
index a67dae4..0000000
Binary files a/src/doug/mapdata/counties and /dev/null differ
diff --git a/src/doug/mapdata/counties.x b/src/doug/mapdata/counties.x
deleted file mode 100755
index 8fefaa2..0000000
--- a/src/doug/mapdata/counties.x
+++ /dev/null
@@ -1,16 +0,0 @@
-2 8 0
-2 9 6184
-2 10 12868
-3 7 13876
-3 8 38744
-3 9 113000
-3 10 151516
-3 11 163016
-3 12 170052
-4 6 175196
-4 7 177776
-4 8 197904
-4 9 213732
-4 10 233712
-4 11 245552
-4 12 259340
diff --git a/src/doug/mapdata/states b/src/doug/mapdata/states
deleted file mode 100755
index 46ab700..0000000
Binary files a/src/doug/mapdata/states and /dev/null differ
diff --git a/src/doug/mapdata/states.x b/src/doug/mapdata/states.x
deleted file mode 100755
index ff6b82b..0000000
--- a/src/doug/mapdata/states.x
+++ /dev/null
@@ -1,16 +0,0 @@
-2 8 0
-2 9 2744
-2 10 5444
-3 7 6108
-3 8 14280
-3 9 21900
-3 10 25600
-3 11 26404
-3 12 27448
-4 6 28664
-4 7 29940
-4 8 34752
-4 9 39396
-4 10 42748
-4 11 43364
-4 12 44640
diff --git a/src/doug/mapdata/world b/src/doug/mapdata/world
deleted file mode 100755
index 09f9c8d..0000000
Binary files a/src/doug/mapdata/world and /dev/null differ
diff --git a/src/doug/mapdata/world.x b/src/doug/mapdata/world.x
deleted file mode 100755
index c96c7d6..0000000
--- a/src/doug/mapdata/world.x
+++ /dev/null
@@ -1,348 +0,0 @@
--8 -18 0
--8 -17 72
--8 -4 564
--8 -3 580
--8 -2 692
--8 -1 748
--8 0 888
--8 1 1016
--8 2 1184
--8 3 1324
--8 4 1400
--8 5 1512
--8 6 1628
--8 7 1800
--8 8 2212
--8 9 2292
--8 10 2520
--8 11 2864
--8 12 2964
--8 13 3068
--8 14 3152
--8 15 3288
--8 16 3376
--8 17 3428
--7 -17 3472
--7 -16 3532
--7 -15 3648
--7 -14 3824
--7 -13 3968
--7 -12 4172
--7 -11 4320
--7 -10 4504
--7 -9 4656
--7 -8 4796
--7 -7 4972
--7 -6 5080
--7 -5 5324
--7 -4 5532
--7 -3 5728
--7 -2 5780
--7 -1 5904
--7 0 6004
--7 4 6096
--7 5 6192
--7 6 6716
--7 7 7832
--7 9 8044
--6 -17 8096
--6 2 8196
--6 3 8244
--6 5 8572
--6 6 9000
--6 7 10720
--5 -18 13308
--5 -17 14172
--5 -15 14764
--5 -8 15224
--5 -7 15340
--5 -4 15564
--5 6 15608
--5 7 16172
--5 17 18260
--4 -18 18340
--4 -16 19248
--4 -15 19544
--4 -14 19956
--4 -13 20640
--4 -12 20836
--4 -4 21108
--4 -3 21140
--4 -2 21392
--4 5 21612
--4 6 22368
--4 7 22456
--3 -17 22772
--3 -16 23200
--3 -15 23572
--3 -12 23708
--3 -6 24212
--3 -5 24328
--3 -4 24556
--3 -2 24872
--3 4 25184
--3 5 25652
--3 7 25668
--3 10 25960
--3 12 25996
--3 13 26024
--3 14 26112
--3 17 26148
--2 -18 26196
--2 -17 26508
--2 -16 27216
--2 -15 27344
--2 -14 27936
--2 -13 29000
--2 -12 29804
--2 -6 29836
--2 -5 29884
--2 -4 30668
--2 -2 31180
--2 3 31532
--2 4 31824
--2 6 31844
--2 7 31968
--2 14 32344
--2 15 32656
--2 16 32716
--2 17 32752
--1 -18 32948
--1 -17 33012
--1 -16 33288
--1 -15 34468
--1 -14 35472
--1 -13 37056
--1 -12 39304
--1 -11 40872
--1 -10 41988
--1 -6 42076
--1 -5 42096
--1 -4 42248
--1 -3 43072
--1 -2 43240
--1 -1 43460
--1 1 43532
--1 3 43560
--1 4 43720
--1 5 44188
--1 7 44288
--1 8 44448
--1 9 44768
--1 13 45004
--1 14 45072
--1 15 45120
--1 17 45160
-0 -18 45236
-0 -17 45400
-0 -16 45584
-0 -14 45684
-0 -13 45764
-0 -12 47296
-0 -11 48400
-0 -10 49476
-0 -9 50196
-0 -8 50356
-0 -6 50536
-0 -5 50580
-0 -4 50792
-0 -1 50972
-0 0 51620
-0 1 51812
-0 4 52072
-0 5 52120
-0 6 52580
-0 7 52708
-0 8 53308
-0 9 53764
-0 15 53796
-0 16 53892
-0 17 53916
-1 -17 53948
-1 -15 54056
-1 -13 54224
-1 -12 56128
-1 -11 56416
-1 -10 57192
-1 -9 57828
-1 -8 58072
-1 -6 58492
-1 -5 58936
-1 -4 59768
-1 -2 59928
-1 1 60120
-1 2 60576
-1 6 60820
-1 7 62072
-1 8 62932
-1 9 63672
-1 10 64228
-1 11 64484
-1 15 64508
-2 -16 64648
-2 -15 64692
-2 -13 64720
-2 -12 65464
-2 -11 66204
-2 -10 66360
-2 -9 66548
-2 -8 66764
-2 -7 67064
-2 -6 67468
-2 -5 68372
-2 -4 68616
-2 0 69452
-2 1 69488
-2 7 70016
-2 8 71176
-2 9 72104
-2 10 73332
-2 11 73816
-2 15 75180
-2 17 75572
-3 -15 75580
-3 -14 75752
-3 -13 77028
-3 -12 78536
-3 -6 78716
-3 -5 78928
-3 -4 79136
-3 -3 80084
-3 -2 81932
-3 -1 83004
-3 0 83644
-3 1 84380
-3 2 84452
-3 3 84680
-3 6 84708
-3 7 84760
-3 8 85976
-3 9 86392
-3 11 86424
-3 12 87160
-4 -16 87612
-4 -15 87784
-4 -14 88960
-4 -13 89368
-4 -8 89532
-4 -7 89788
-4 -6 89980
-4 -5 90648
-4 -4 91008
-4 -3 92300
-4 -2 93132
-4 -1 94424
-4 0 95264
-4 5 95992
-4 6 96796
-4 7 98656
-4 8 99936
-4 9 102112
-4 11 102220
-4 12 102448
-5 -18 103816
-5 -17 104144
-5 -16 104952
-5 -15 105704
-5 -14 106472
-5 -11 106988
-5 -4 107300
-5 -3 107340
-5 -2 108440
-5 -1 110524
-5 0 112336
-5 1 116136
-5 4 116192
-5 5 116280
-5 6 117148
-5 7 118412
-5 8 119224
-5 9 119808
-5 10 120788
-5 11 121132
-5 12 121268
-5 13 122476
-5 14 127280
-5 15 127484
-5 16 129660
-5 17 131300
-6 -18 131844
-6 -17 133124
-6 -16 134228
-6 -8 134456
-6 -7 135420
-6 -6 135880
-6 -5 136460
-6 -4 137344
-6 -3 138756
-6 -2 140292
-6 -1 142892
-6 0 144212
-6 1 144724
-6 2 145316
-6 3 146636
-6 4 147524
-6 5 148892
-6 6 149884
-6 7 151804
-6 8 153892
-6 9 156468
-6 10 158512
-6 11 160036
-6 12 162656
-6 13 164080
-6 14 165180
-6 15 166240
-6 16 166612
-6 17 169336
-7 -18 170928
-7 -17 171072
-7 -16 171116
-7 -15 171508
-7 -14 173468
-7 -13 174860
-7 -12 175564
-7 -11 176844
-7 -10 178844
-7 -9 180760
-7 -8 182292
-7 -7 183388
-7 -6 184268
-7 -5 186512
-7 -4 186544
-7 -3 186616
-7 -2 190928
-7 0 194552
-7 1 194620
-7 2 195448
-7 5 197896
-7 6 198656
-7 7 199736
-7 8 202044
-7 9 207688
-7 10 214092
-7 11 218616
-7 12 222772
-7 13 224100
-7 14 224144
-7 15 224376
-7 16 225000
-7 17 225180
-8 -10 225368
-8 -9 226260
-8 -8 226360
-8 -7 226416
-8 -6 227624
-8 -5 231152
-8 -4 232856
-8 -3 233184
-8 -2 234484
-8 1 235188
-8 2 235852
-8 3 236912
-8 4 237804
-8 5 239208
-8 6 239884
-8 7 241368
-8 8 242528
-8 9 245064
diff --git a/src/doug/plot.h b/src/doug/plot.h
deleted file mode 100755
index 1de877f..0000000
--- a/src/doug/plot.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-/* Plotting functions */
-
-/* open the plotting output */
-extern void openpl(void);
-
-/* close the plotting output */
-extern void closepl(void);
-
-/* make sure the page or screen is clear */
-extern void erase(void);
-
-/* plot a point at x,y which becomes current */
-extern void point(int x, int y);
-
-/* coordinates to be assigned to lower left and upper right
- corners of (square) plotting area */
-extern void range(int xmin, int ymin, int xmax, int ymax);
-
-/* place text, first letter at current point, which does not change */
-extern void text(char *);
-
-/* draw line from current point to x,y which becomes current */
-extern void vec(int x, int y);
-
-/* x,y becomes current point */
-extern void move(int x, int y);
-
-/* specify style for drawing lines */
-
-#define SOLID "solid"
-#define DOTTED "dotted"
-#define DOTDASH "dotdash"
-
-extern void pen(char *);
-
-#define BLACK "black"
-#define RED "red"
-#define GREEN "green"
-#define BLUE "blue"
-
-extern void color(char *);
-
-extern void weight(double);
-
-extern void comment(char *, char *);
-
diff --git a/src/doug/plot0.c b/src/doug/plot0.c
deleted file mode 100755
index d790b8c..0000000
--- a/src/doug/plot0.c
+++ /dev/null
@@ -1,8 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-/* program intentionally left blank */
diff --git a/src/doug/plotPS.c b/src/doug/plotPS.c
deleted file mode 100755
index 4c51332..0000000
--- a/src/doug/plotPS.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "plot.h"
-#include <stdio.h>
-#include <string.h>
-
-/* Plotting functions for PostScript */
-
-static double _a,_b,_c,_d, _ox, _oy;
-static double width = 0;
-
-#define xs(_x) (_ox = _a*(_x)+_b)
-#define ys(_y) (_oy = _c*(_y)+_d)
-
-void
-range(int xmin, int ymin, int xmax, int ymax)
-{
- _a = 6.5*72/(xmax-xmin);
- _b = -_a*xmin + 1.0*72;
- _c = 6.5*72/(ymax-ymin);
- _d = -_c*ymin + 3.5*72;
-}
-
-
-/* open the plotting output */
-void
-erase(void)
-{
- printf("%%!PS\n"
- "%%Creator: map\n"
- "%%BoundingBox: 72 252 540 720\n"
- "%%EndComments\n"
- "/co /sethsbcolor load def\n"
- "/m /moveto load def\n"
- "/s /stroke load def\n"
- "/t {gsave newpath 0 0 moveto (X) true charpath "
- "flattenpath pathbbox /charht exch def pop pop pop grestore "
- "charht 2 div sub moveto show} bind def\n"
- "/v /lineto load def\n"
- "%%EndProlog\n"
- "gsave\n"
- "/Helvetica findfont 10 scalefont setfont\n"
- "1 setlinecap\n"
- "1 setlinejoin\n"
- ".5 setlinewidth\n"
- "newpath\n"
- "72 72 m\n");
-}
-
-/* close the plotting output */
-void
-closepl(void)
-{
- printf("showpage\ngrestore\n");
-}
-
-/* make sure the page or screen is clear (on some old systems) */
-void
-openpl(void)
-{
- printf("");
-}
-
-/* plot a point at _x,_y, which becomes current */
-void
-point(int _x, int _y)
-{
- printf("s\n%.1f %.1f m\n",xs(_x),ys(_y));
-}
-
-/* place text, first letter at current point, which does not change */
-void
-text(char *_s)
-{
- printf("(%s) %.1f %.1f t\n",_s,_ox,_oy);
-}
-
-/* draw line from current point to _x,_y, which becomes current */
-void
-vec(int _x, int _y)
-{
- printf("%.1f %.1f v\n", xs(_x),ys(_y));
-}
-
-/* _x,_y becomes current point */
-void
-move(int _x, int _y)
-{
- printf("s\n%.1f %.1f m\n", xs(_x), ys(_y));
-}
-
-struct dashpat {
- char *name;
- char *pat;
- double width;
-} pattern[] = {
- { SOLID, "[] 0", .5 }, /* pattern, minimum acceptable width */
- { DOTTED, "[3 6] 0", 0 },
- { DOTDASH, "[18 6 3 6] 0", .5}
-};
-
-/* specify style for drawing lines: "dotted", "solid", "dotdash" */
-void
-pen(char *s)
-{
- int i;
- char *t;
- double w = width;
- for(i=0; i<sizeof(pattern)/sizeof(*pattern); i++)
- if(strcmp(s,pattern[i].name) == 0)
- break;
- if(i >= sizeof(pattern)/sizeof(*pattern)) {
- while((t = strchr(s, ',')))
- *t = ' ';
- } else if(width <= pattern[i].width)
- w = pattern[i].width;
- printf("s\n%.2f setlinewidth\n%s setdash\n",
- w, pattern[i].pat);
-}
-
-static struct {
- char *name;
- char *hsbcode;
-} colors[] = {
- { BLACK, "0 0 0" },
- { RED, "0 1 1" },
- { GREEN, ".33 1 1" },
- { BLUE, ".67 1 1" }
-};
-
-void
-color(char *s)
-{
- char *t;
- int i;
- for(i=0; i<sizeof(colors)/sizeof(*colors); i++)
- if(strcmp(s, colors[i].name) == 0)
- s = colors[i].hsbcode;
- while((t = strchr(s, ',')))
- *t = ' ';
- printf("s\n%s co\n",s);
-}
-
-void
-weight(double w)
-{
- width = w;
-}
-
-void
-comment(char *s, char *t)
-{
- printf("%%%s %s\n",s,t);
-}
diff --git a/src/doug/plotV.c b/src/doug/plotV.c
deleted file mode 100755
index c595eb4..0000000
--- a/src/doug/plotV.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-/* Plotting functions for Sys V and BSD systems */
-
-extern void space(int, int, int, int);
-extern void cont(int, int);
-extern void label(char *);
-extern void linemod(char *);
-
-void
-range(int xmin, int ymin, int xmax, int ymax)
-{
- space(xmin, ymin, xmax, ymax);
-}
-
-void
-text(char *s)
-{
- label(s);
-}
-
-void
-vec(int x, int y)
-{
- cont(x, y);
-}
-
-void
-pen(char *s)
-{
- linemod(s);
-}
diff --git a/src/doug/route.c b/src/doug/route.c
deleted file mode 100755
index 033d61e..0000000
--- a/src/doug/route.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-/* Given two lat-lon pairs, find an orientation for the
- -o option of "map" that will place those two points
- on the equator of a standard projection, equally spaced
- about the prime meridian. Both an erect and an inverted
- orientation are found.
-
- Option -t prints out a series of
- coordinates that follows the (great circle) track
- in the original coordinate system,
- followed by ".
- This data is just right for map -t.
-*/
-struct place pole;
-struct coord twist;
-int track;
-
-extern void doroute(double, double, double, double, double);
-
-void
-dorot(double a, double b, double *x, double *y, void (*f)(struct place *))
-{
- struct place g;
- deg2rad(a,&g.nlat);
- deg2rad(b,&g.wlon);
- (*f)(&g);
- *x = g.nlat.l/RAD;
- *y = g.wlon.l/RAD;
-}
-
-void
-rotate(double a, double b, double *x, double *y)
-{
- dorot(a,b,x,y,normalize);
-}
-
-void
-rinvert(double a, double b, double *x, double *y)
-{
- dorot(a,b,x,y,invert);
-}
-
-main(int argc, char **argv)
-{
-#pragma ref argv
- double an,aw,bn,bw;
- track = argc>1;
- for(;;){
- if(scanf("%lf%lf%lf%lf",&an,&aw,&bn,&bw)!=4)
- break;
- doroute(-90.,an,aw,bn,bw);
- if(!track)
- doroute(90.,an,aw,bn,bw);
- }
- return 0;
-}
-
-void
-doroute(double dir, double an, double aw, double bn, double bw)
-{
- double an1,aw1,bn1,bw1,pn,pw;
- double theta;
- double cn,cw,cn1,cw1;
- int i,n;
- orient(an,aw,0.);
- rotate(bn,bw,&bn1,&bw1);
-/* printf("b %f %f\n",bn1,bw1);*/
- orient(an,aw,bw1);
- rinvert(0.,dir,&pn,&pw);
-/* printf("p %f %f\n",pn,pw);*/
- orient(pn,pw,0.);
- rotate(an,aw,&an1,&aw1);
- rotate(bn,bw,&bn1,&bw1);
- theta = (aw1+bw1)/2;
-/* printf("a %f %f \n",an1,aw1);*/
- orient(pn,pw,theta);
- rotate(an,aw,&an1,&aw1);
- rotate(bn,bw,&bn1,&bw1);
- if(fabs(aw1-bw1)>180)
- if(theta<0.) theta+=180;
- else theta -= 180;
- orient(pn,pw,theta);
- rotate(an,aw,&an1,&aw1);
- rotate(bn,bw,&bn1,&bw1);
- if(!track) {
- printf("-o %.4f %.4f %.4f\n",pn,pw,theta);
- printf("A %.4f %.4f\n",an1,aw1);
- printf("B %.4f %.4f\n",bn1,bw1);
- } else {
- cn1 = 0;
- n = 1 + fabs(bw1-aw1)/.2;
- for(i=0;i<=n;i++) {
- cw1 = aw1 + i*(bw1-aw1)/n;
- rinvert(cn1,cw1,&cn,&cw);
- printf("%f %f\n",cn,cw);
- }
- printf("\"\n");
- }
-}
diff --git a/src/doug/symbol.c b/src/doug/symbol.c
deleted file mode 100755
index 13c6779..0000000
--- a/src/doug/symbol.c
+++ /dev/null
@@ -1,195 +0,0 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
-#include "map.h"
-
-#define NSYMBOL 20
-
-enum flag { POINT,ENDSEG,ENDSYM };
-struct symb {
- double x, y;
- char name[10+1];
- enum flag flag;
-} *symbol[NSYMBOL];
-
-static int nsymbol;
-static double halfrange = 1;
-extern int halfwidth;
-extern int vflag;
-
-static int getrange(FILE *);
-static int getsymbol(FILE *, int);
-static void setrot(struct place *, double, int);
-static void dorot(struct symb *, double *, double *);
-
-
-void
-getsyms(char *file)
-{
- FILE *sf = fopen(file,"r");
- if(sf==0)
- filerror("cannot open", file);
- while(nsymbol<NSYMBOL-1 && getsymbol(sf,nsymbol))
- nsymbol++;
- fclose(sf);
-}
-
-static int
-getsymbol(FILE *sf, int n)
-{
- double x,y;
- char s[2];
- int i;
- struct symb *sp;
- for(;;) {
- if(fscanf(sf,"%1s",s)==EOF)
- return 0;
- switch(s[0]) {
- case ':':
- break;
- case 'o':
- case 'c': /* cl */
- fscanf(sf,"%*[^\n]");
- continue;
- case 'r':
- if(getrange(sf))
- continue;
- default:
- error("-y file syntax error");
- }
- break;
- }
- sp = (struct symb*)malloc(sizeof(struct symb));
- symbol[n] = sp;
- if(fscanf(sf,"%10s",sp->name)!=1)
- return 0;
- i = 0;
- while(fscanf(sf,"%1s",s)!=EOF) {
- switch(s[0]) {
- case 'r':
- if(!getrange(sf))
- break;
- continue;
- case 'm':
- if(i>0)
- symbol[n][i-1].flag = ENDSEG;
- continue;
- case ':':
- ungetc(s[0],sf);
- break;
- default:
- ungetc(s[0],sf);
- case 'v':
- if(fscanf(sf,"%lf %lf",&x,&y)!=2)
- break;
- sp[i].x = x*halfwidth/halfrange;
- sp[i].y = y*halfwidth/halfrange;
- sp[i].flag = POINT;
- i++;
- sp = symbol[n] = (struct symb*)realloc(symbol[n],
- (i+1)*sizeof(struct symb));
- continue;
- }
- break;
- }
- if(i>0)
- symbol[n][i-1].flag = ENDSYM;
- else
- symbol[n] = 0;
- return 1;
-}
-
-static int
-getrange(FILE *sf)
-{
- double x,y,xmin,ymin;
- if(fscanf(sf,"%*s %lf %lf %lf %lf",
- &xmin,&ymin,&x,&y)!=4)
- return 0;
- x -= xmin;
- y -= ymin;
- halfrange = (x>y? x: y)/2;
- if(halfrange<=0)
- error("bad ra command in -y file");
- return 1;
-}
-
-/* r=0 upright;=1 normal;=-1 reverse*/
-int
-putsym(struct place *p, char *name, double s, int r)
-{
- int x,y,n;
- struct symb *sp;
- double dx,dy;
- int conn = 0;
- for(n=0; symbol[n]; n++)
- if(strcmp(name,symbol[n]->name)==0)
- break;
- sp = symbol[n];
- if(sp==0)
- return 0;
- setrot(p,s,r);
- if(doproj(p,&x,&y)*vflag <= 0)
- return 1;
- for(;;) {
- dorot(sp,&dx,&dy);
- conn = cpoint(x+(int)dx,y+(int)dy,conn);
- switch(sp->flag) {
- case ENDSEG:
- conn = 0;
- case POINT:
- sp++;
- continue;
- case ENDSYM:
- break;
- }
- break;
- }
- return 1;
-}
-
-static double rot[2][2];
-
-static void
-setrot(struct place *p, double s, int r)
-{
- double x0,y0,x1,y1;
- struct place up;
- up = *p;
- up.nlat.l += .5*RAD;
- trig(&up.nlat);
- if(r&&(*projection)(p,&x0,&y0)) {
- if((*projection)(&up,&x1,&y1)<=0) {
- up.nlat.l -= RAD;
- trig(&up.nlat);
- if((*projection)(&up,&x1,&y1)<=0)
- goto unit;
- x1 = x0 - x1;
- y1 = y0 - y1;
- } else {
- x1 -= x0;
- y1 -= y0;
- }
- x1 = r*x1;
- s /= hypot(x1,y1);
- rot[0][0] = y1*s;
- rot[0][1] = x1*s;
- rot[1][0] = -x1*s;
- rot[1][1] = y1*s;
- } else {
-unit:
- rot[0][0] = rot[1][1] = s;
- rot[0][1] = rot[1][0] = 0;
- }
-}
-
-static void
-dorot(struct symb *sp, double *px, double *py)
-{
- *px = rot[0][0]*sp->x + rot[0][1]*sp->y;
- *py = rot[1][0]*sp->x + rot[1][1]*sp->y;
-}
diff --git a/src/doug/test.results b/src/doug/test.results
deleted file mode 100755
index ff67446..0000000
--- a/src/doug/test.results
+++ /dev/null
@@ -1,86 +0,0 @@
-%!PS
-%Creator: map
-%BoundingBox: 72 252 540 720
-%EndComments
-/co /sethsbcolor load def
-/m /moveto load def
-/s /stroke load def
-/t {gsave newpath 0 0 moveto (X) true charpath flattenpath pathbbox /charht exch def pop pop pop grestore charht 2 div sub moveto show} bind def
-/v /lineto load def
-%EndProlog
-gsave
-/Helvetica findfont 10 scalefont setfont
-1 setlinecap
-1 setlinejoin
-.5 setlinewidth
-newpath
-72 72 m
-%grid
-s
-0 0 0 co
-s
-0.00 setlinewidth
-[3 6] 0 setdash
-%border
-s
-0 0 0 co
-s
-0.50 setlinewidth
-[] 0 setdash
-%mapfile ./mapdata/world
-s
-0 0 0 co
-s
-0.50 setlinewidth
-[] 0 setdash
-s
-510.7 506.7 m
-499.2 500.2 v
-488.2 493.2 v
-478.6 491.5 v
-462.7 487.7 v
-456.2 485.5 v
-450.2 479.7 v
-442.8 475.6 v
-434.6 472.0 v
-423.6 476.1 v
-414.7 479.7 v
-406.8 482.1 v
-399.3 483.1 v
-s
-399.3 483.1 m
-395.7 483.6 v
-389.7 484.1 v
-377.2 487.2 v
-364.3 489.6 v
-355.1 492.7 v
-338.1 492.0 v
-319.6 489.6 v
-297.7 486.7 v
-291.7 485.5 v
-288.1 485.8 v
-281.7 484.5 v
-270.6 481.7 v
-260.8 476.6 v
-254.8 474.7 v
-245.6 471.5 v
-237.2 468.2 v
-231.2 466.0 v
-227.6 463.6 v
-217.8 459.5 v
-210.1 454.7 v
-201.7 453.7 v
-s
-201.7 453.7 m
-200.3 453.5 v
-191.6 457.1 v
-173.6 463.6 v
-160.2 467.7 v
-145.3 477.1 v
-133.8 485.5 v
-118.9 499.3 v
-104.7 513.7 v
-s
-540.0 252.0 m
-showpage
-grestore
diff --git a/src/elco2.c b/src/elco2.c
index 4321073..5ac866f 100755
--- a/src/elco2.c
+++ b/src/elco2.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
/* elliptic integral routine, R.Bulirsch,
diff --git a/src/elliptic.c b/src/elliptic.c
index 68735f8..a50c7fa 100755
--- a/src/elliptic.c
+++ b/src/elliptic.c
@@ -1,24 +1,17 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
-static struct coord center;
+struct coord center;
static int
Xelliptic(struct place *place, double *x, double *y)
{
double r1,r2;
- r1 = acos(trigclamp(
- place->nlat.c*(place->wlon.c*center.c
- - place->wlon.s*center.s)));
- r2 = acos(trigclamp(
- place->nlat.c*(place->wlon.c*center.c
- + place->wlon.s*center.s)));
+ r1 = acos(place->nlat.c*(place->wlon.c*center.c
+ - place->wlon.s*center.s));
+ r2 = acos(place->nlat.c*(place->wlon.c*center.c
+ + place->wlon.s*center.s));
*x = -(r1*r1 - r2*r2)/(4*center.l);
*y = (r1*r1+r2*r2)/2 - (center.l*center.l+*x**x);
if(*y < 0)
diff --git a/src/fisheye.c b/src/fisheye.c
index c37db04..1d4427e 100755
--- a/src/fisheye.c
+++ b/src/fisheye.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
/* refractive fisheye, not logarithmic */
diff --git a/src/gall.c b/src/gall.c
index ec38693..ba1e995 100755
--- a/src/gall.c
+++ b/src/gall.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
static double scale;
diff --git a/src/gilbert.c b/src/gilbert.c
index ca1d798..6fce6b8 100755
--- a/src/gilbert.c
+++ b/src/gilbert.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
int
@@ -17,7 +12,8 @@ Xgilbert(struct place *p, double *x, double *y)
if(q.nlat.s < -1) q.nlat.s = -1;
q.nlat.c = sqrt(1 - q.nlat.s*q.nlat.s);
q.wlon.l = p->wlon.l/2;
- trig(&q.wlon);
+/* RSB sincos(&q.wlon);*/
+ trig(&q.wlon);
/* the dull part: present the hemisphere orthogrpahically */
*y = q.nlat.s;
*x = -q.wlon.s*q.nlat.c;
diff --git a/src/guyou.c b/src/guyou.c
index fbd25cb..2c7e493 100755
--- a/src/guyou.c
+++ b/src/guyou.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
static struct place gywhem, gyehem;
diff --git a/src/harrison.c b/src/harrison.c
index c0494ab..77385ee 100755
--- a/src/harrison.c
+++ b/src/harrison.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
static double v3,u2,u3,a,b; /*v=view,p=obj,u=unit.y*/
diff --git a/src/hex.c b/src/hex.c
index 6f5bebc..e4b87b7 100755
--- a/src/hex.c
+++ b/src/hex.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
#define BIG 1.e15
@@ -12,8 +7,7 @@ All rights reserved
static double hcut[3] ;
static double kr[3] = { .5, -1., .5 };
-static double ki0[3] = { -1., 0., 1. };
-static double ki[3]; /*ki0*sqrt(3)/2*/
+static double ki[3] = { -1., 0., 1. }; /*to multiply by sqrt(3)/2*/
static double cr[3];
static double ci[3];
static struct place hem;
@@ -37,31 +31,31 @@ static int
Xhex(struct place *place, double *x, double *y)
{
int ns;
- int i;
+ register int i;/* RSB */
double zr,zi;
double sr,si,tr,ti,ur,ui,vr,vi,yr,yi;
struct place p;
copyplace(place,&p);
- ns = (place->nlat.l >= 0);
+ ns = place->nlat.l >= 0;
if(!ns) {
p.nlat.l = -p.nlat.l;
p.nlat.s = -p.nlat.s;
}
if(p.nlat.l<HFUZZ) {
- for(i=0;i<3;i++) {
- if(fabs(reduce(p.wlon.l-hcut[i]))<HFUZZ) {
- if(i==2) {
- *x = 2*cr[0] - cr[1];
- *y = 0;
- } else {
- *x = cr[1];
- *y = 2*ci[2*i];
- }
- return(1);
- }
- }
- p.nlat.l = HFUZZ;
- trig(&p.nlat);
+ for(i=0;i<3;i++)
+ if(fabs(reduce(p.wlon.l-hcut[i]))<HFUZZ) {
+ if(i==2) {
+ *x = 2*cr[0] - cr[1];
+ *y = 0;
+ } else {
+ *x = cr[1];
+ *y = 2*ci[2*i];
+ }
+ return(1);
+ }
+ p.nlat.l = HFUZZ;
+/* RSB sincos(&p.nlat);*/
+ trig(&p.nlat);
}
norm(&p,&hem,&twist);
Xstereographic(&p,&zr,&zi);
@@ -70,6 +64,7 @@ Xhex(struct place *place, double *x, double *y)
cdiv(1-zr,-zi,1+zr,zi,&sr,&si);
csq(sr,si,&tr,&ti);
ccubrt(1+3*tr,3*ti,&ur,&ui);
+/* RSB csqrt(ur-1,ui,&vr,&vi);*/
map_csqrt(ur-1,ui,&vr,&vi);
cdiv(rootroot3+vr,vi,rootroot3-vr,-vi,&yr,&yi);
yr /= rootk;
@@ -84,9 +79,9 @@ Xhex(struct place *place, double *x, double *y)
}
proj
-map_hex(void)
+map_hex(void)/* RSB */
{
- int i;
+ register int i;/* RSB */
double t;
double root3;
double c,d;
@@ -107,7 +102,7 @@ map_hex(void)
latlon(0.,0.,&p);
Xhex(&p,&d,&t);
for(i=0;i<3;i++) {
- ki[i] = ki0[i]*root3/2;
+ ki[i] *= root3/2;
cr[i] = c + (c-d)*kr[i];
ci[i] = (c-d)*ki[i];
}
diff --git a/src/homing.c b/src/homing.c
index 5912134..28bc799 100755
--- a/src/homing.c
+++ b/src/homing.c
@@ -1,16 +1,17 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
static struct coord p0; /* standard parallel */
int first;
+static double
+trigclamp(double x)
+{
+ return x>1? 1: x<-1? -1: x;
+}
+
static struct coord az; /* azimuth of p0 seen from place */
static struct coord rad; /* angular dist from place to p0 */
@@ -19,11 +20,13 @@ azimuth(struct place *place)
{
if(place->nlat.c < FUZZ) {
az.l = PI/2 + place->nlat.l - place->wlon.l;
- trig(&az);
+/* RSB sincos(&az);*/
+ trig(&az);
rad.l = fabs(place->nlat.l - p0.l);
if(rad.l > PI)
rad.l = 2*PI - rad.l;
- trig(&rad);
+/* RSB sincos(&rad);*/
+ trig(&rad);
return 1;
}
rad.c = trigclamp(p0.s*place->nlat.s + /* law of cosines */
diff --git a/src/lagrange.c b/src/lagrange.c
index 2fde4fe..4cad98d 100755
--- a/src/lagrange.c
+++ b/src/lagrange.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB#include <u.h>
+#include <libc.h>*/
#include "map.h"
static int
@@ -19,7 +14,7 @@ Xlagrange(struct place *place, double *x, double *y)
p.nlat.s = -p.nlat.s;
}
Xstereographic(&p,&z1,&z2);
- map_csqrt(-z2/2,z1/2,&w1,&w2);
+ map_csqrt(-z2/2,z1/2,&w1,&w2);/* RSB*/
cdiv(w1-1,w2,w1+1,w2,&t1,&t2);
*y = -t1;
*x = t2;
diff --git a/src/lambert.c b/src/lambert.c
index 4fbd31c..4c234f4 100755
--- a/src/lambert.c
+++ b/src/lambert.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
static struct coord stdp0, stdp1;
@@ -41,20 +36,11 @@ lambert(double par0, double par1)
deg2rad(par1, &stdp1);
if(fabs(par1+par0)<.1)
return(mercator());
- if(fabs(par1)>89.5) {
- if(par0>89.5)
- return(map_perspective(-1.));
- else if(par0<-89.5)
- return 0; /* S pole stereographic */
- else
- return 0;
- }
if(fabs(par1-par0)<.1)
- /* series expansion about stdp1.s = stdp0.s */
- /* thanks to Alex Deckmyn for pointing this out */
- k = stdp0.s + 0.5*(stdp1.s - stdp0.s);
- else
- k = 2*log(stdp1.c/stdp0.c)/log(
+ return(map_perspective(-1.));
+ if(fabs(par0)>89.5||fabs(par1)>89.5)
+ return(0);
+ k = 2*log(stdp1.c/stdp0.c)/log(
(1+stdp0.s)*(1-stdp1.s)/((1-stdp0.s)*(1+stdp1.s)));
return(Xlambert);
}
diff --git a/src/laue.c b/src/laue.c
index e17ae0f..1e723f1 100755
--- a/src/laue.c
+++ b/src/laue.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
diff --git a/src/lune.c b/src/lune.c
index 6383a0b..56f9b15 100755
--- a/src/lune.c
+++ b/src/lune.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
int Xstereographic(struct place *place, double *x, double *y);
diff --git a/src/map.h b/src/map.h
index da32104..1b12d43 100755
--- a/src/map.h
+++ b/src/map.h
@@ -1,15 +1,13 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* Copyright (C) 2003, Lucent Technologies Inc. and others.
+ * All Rights Reserved. */
+/* RSB #pragma lib "/sys/src/cmd/map/libmap/libmap.a$O"
+#pragma src "/sys/src/cmd/map/libmap"*/
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
+
#ifndef PI
#define PI 3.1415926535897932384626433832795028841971693993751
#endif
@@ -37,7 +35,7 @@ struct place {
typedef int (*proj)(struct place *, double *, double *);
-struct pindex { /* index of known projections */
+struct pindex { /* RSB */ /* index of known projections */
char *name; /* name of projection */
proj (*prog)(double, double);
/* pointer to projection function */
@@ -65,7 +63,7 @@ proj cylequalarea(double);
int Xcylindrical(struct place *, double *, double *);
proj cylindrical(void);
proj elliptic(double);
-proj eisenlohr(void);
+proj eisenlohr(void); /* RSB */
proj fisheye(double);
proj gall(double);
proj gilbert(void);
@@ -75,6 +73,7 @@ int guycut(struct place *, struct place *, double *);
int Xguyou(struct place *, double *, double *);
proj guyou(void);
proj harrison(double, double);
+int hexcut(struct place *, struct place *, double *);
proj map_hex(void);
proj homing(double);
int hlimb(double*, double*, double resolution);
@@ -118,8 +117,10 @@ void invalb(double, double, double *, double *);
void cdiv(double, double, double, double, double *, double *);
void cmul(double, double, double, double, double *, double *);
+/* RSB void cpow(double, double, double *, double *, double);*/
void map_cpow(double, double, double *, double *, double);
void csq(double, double, double *, double *);
+/* RSB void csqrt(double, double, double *, double *);*/
void map_csqrt(double, double, double *, double *);
void ccubrt(double, double, double *, double *);
double cubrt(double);
@@ -130,7 +131,7 @@ void csqr(double, double, double *, double *);
void orient(double, double, double);
void latlon(double, double, struct place *);
void deg2rad(double, struct coord *);
-double trigclamp(double);
+/* RSB void sincos(struct coord *);*/
void trig(struct coord *);
void normalize(struct place *);
void invert(struct place *);
@@ -142,15 +143,13 @@ int picut(struct place *, struct place *, double *);
int ckcut(struct place *, struct place *, double);
double reduce(double);
-/* (minka)
-void getsyms(char *);
+/* RSB void getsyms(char *);
int putsym(struct place *, char *, double, int);
void filerror(char *s, char *f);
void error(char *s);
int doproj(struct place *, int *, int *);
int cpoint(int, int, int);
int plotpt(struct place *, int);
-int nocut(struct place *, struct place *, double *);
-*/
+int nocut(struct place *, struct place *, double *);*/
extern int (*projection)(struct place *, double *, double *);
diff --git a/src/mercator.c b/src/mercator.c
index 13aa787..58addd6 100755
--- a/src/mercator.c
+++ b/src/mercator.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
static int
diff --git a/src/mollweide.c b/src/mollweide.c
index 05b9fca..41da89d 100755
--- a/src/mollweide.c
+++ b/src/mollweide.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
static int
diff --git a/src/newyorker.c b/src/newyorker.c
index 06072a7..8ddb54a 100755
--- a/src/newyorker.c
+++ b/src/newyorker.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
static double a;
diff --git a/src/orthographic.c b/src/orthographic.c
index 64e38dd..71f8f16 100755
--- a/src/orthographic.c
+++ b/src/orthographic.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h> */
#include "map.h"
@@ -25,7 +20,7 @@ orthographic(void)
int
olimb(double *lat, double *lon, double res)
{
- static int first = 1;
+ static int first = 1; /* RSB */
if(first) {
*lat = 0;
*lon = -180;
diff --git a/src/perspective.c b/src/perspective.c
index 382067f..88c57de 100755
--- a/src/perspective.c
+++ b/src/perspective.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
#define ORTHRAD 1000
@@ -14,27 +9,27 @@ static int
Xperspective(struct place *place, double *x, double *y)
{
double r;
- if(viewpt<=1+FUZZ && fabs(place->nlat.s)<=viewpt+.01)
+ if(viewpt<=1+FUZZ && fabs(place->nlat.s<=viewpt+.01))
return(-1);
r = place->nlat.c*(viewpt - 1.)/(viewpt - place->nlat.s);
*x = - r*place->wlon.s;
*y = - r*place->wlon.c;
if(r>4.)
return(-1);
- if((fabs(viewpt)>1 && place->nlat.s<1/viewpt) ||
- (fabs(viewpt)<=1 && place->nlat.s<viewpt))
+ if(fabs(viewpt)>1 && place->nlat.s<1/viewpt ||
+ fabs(viewpt)<=1 && place->nlat.s<viewpt)
return 0;
return(1);
}
proj
-map_perspective(double radius)
+map_perspective(double radius) /* RSB */
{
viewpt = radius;
if(viewpt >= ORTHRAD)
return(Xorthographic);
if(fabs(viewpt-1.)<.0001)
- return(0);
+ return(0);
return(Xperspective);
}
@@ -68,7 +63,7 @@ gnomonic(void)
int
plimb(double *lat, double *lon, double res)
{
- static int first = 1;
+ static int first = 1; /* RSB */
if(viewpt >= ORTHRAD)
return olimb(lat, lon, res);
if(first) {
diff --git a/src/polyconic.c b/src/polyconic.c
index 626b5ea..f894680 100755
--- a/src/polyconic.c
+++ b/src/polyconic.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
int
diff --git a/src/rectangular.c b/src/rectangular.c
index 8367956..8b9ae72 100755
--- a/src/rectangular.c
+++ b/src/rectangular.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
static double scale;
diff --git a/src/simpleconic.c b/src/simpleconic.c
index 46aecb2..36cc9d6 100755
--- a/src/simpleconic.c
+++ b/src/simpleconic.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
static double r0, a;
diff --git a/src/sinusoidal.c b/src/sinusoidal.c
index 5b67c3e..d6870c9 100755
--- a/src/sinusoidal.c
+++ b/src/sinusoidal.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
int
diff --git a/src/tetra.c b/src/tetra.c
index c15230b..914fbce 100755
--- a/src/tetra.c
+++ b/src/tetra.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
/*
@@ -40,10 +35,10 @@ All rights reserved
static struct place tpole[4]; /* point of tangency of tetrahedron face*/
static double tpoleinit[4][2] = {
- { 1., 0. },
- { 1., 180.},
- { -1., 90.},
- { -1., -90.}
+ 1., 0.,
+ 1., 180.,
+ -1., 90.,
+ -1., -90.
};
static struct tproj {
double tlat,tlon; /* center of stereo projection*/
@@ -73,14 +68,12 @@ static struct tproj {
/*32*/ {-90., 0., 0., 90.},
/*33*/ {0.}
}};
-static double tx0[4] = { /*where to move facet after final rotation*/
+static double tx[4] = { /*where to move facet after final rotation*/
0., 0., -1., 1. /*-1,1 to be sqrt(3)*/
};
-static double ty0[4] = {
+static double ty[4] = {
0., 2., -1., -1.
};
-static double tx[4];
-static double ty[4];
static double root3;
static double rt3inv;
static double two_rt3;
@@ -178,7 +171,8 @@ tetracut(struct place *g, struct place *og, double *cutlon)
proj
tetra(void)
{
- int i,j;
+ register int i; /* RSB */
+ int j;
register struct place *tp;
register struct tproj *tpp;
double t;
@@ -193,8 +187,8 @@ tetra(void)
fpir *= 2;
fpii *= 2;
for(i=0;i<4;i++) {
- tx[i] = tx0[i]*f0r*root3;
- ty[i] = ty0[i]*f0r;
+ tx[i] *= f0r*root3;
+ ty[i] *= f0r;
tp = &tpole[i];
t = tp->nlat.s = tpoleinit[i][0]/root3;
tp->nlat.c = sqrt(1 - t*t);
diff --git a/src/trapezoidal.c b/src/trapezoidal.c
index e3d4693..d91b0c7 100755
--- a/src/trapezoidal.c
+++ b/src/trapezoidal.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
static struct coord stdpar0, stdpar1;
diff --git a/src/twocirc.c b/src/twocirc.c
index 733cc17..b2f0212 100755
--- a/src/twocirc.c
+++ b/src/twocirc.c
@@ -1,10 +1,5 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>*/
#include "map.h"
static double
diff --git a/src/zcoord.c b/src/zcoord.c
index a124f0c..3defd43 100755
--- a/src/zcoord.c
+++ b/src/zcoord.c
@@ -1,10 +1,6 @@
-/************************************************************
-
-Copyright (C) 1998, Lucent Technologies
-All rights reserved
-
-************************************************************/
-
+/* RSB #include <u.h>
+#include <libc.h>
+#include <stdio.h>*/
#include "map.h"
static double cirmod(double);
@@ -60,6 +56,7 @@ deg2rad(double theta, struct coord *coord)
coord->s = -1;
coord->c = 0;
} else
+/* RSB sincos(coord);*/
trig(coord);
}
@@ -73,13 +70,8 @@ cirmod(double theta)
return(theta);
}
-double
-trigclamp(double x)
-{
- return x>1? 1: x<-1? -1: x;
-}
-
void
+/* RSB sincos(struct coord *coord)*/
trig(struct coord *coord)
{
coord->s = sin(coord->l);
@@ -113,21 +105,21 @@ norm(struct place *gg, struct place *pp, struct coord *tw)
} else {
if(p->wlon.l != 0) {
g->wlon.l -= p->wlon.l;
+/* RSB sincos(&g->wlon);*/
trig(&g->wlon);
}
- m.nlat.s = trigclamp(
- p->nlat.s * g->nlat.s
- + p->nlat.c * g->nlat.c * g->wlon.c);
+ m.nlat.s = p->nlat.s * g->nlat.s
+ + p->nlat.c * g->nlat.c * g->wlon.c;
m.nlat.c = sqrt(1. - m.nlat.s * m.nlat.s);
m.nlat.l = atan2(m.nlat.s, m.nlat.c);
m.wlon.s = g->nlat.c * g->wlon.s;
- m.wlon.c = trigclamp(
- p->nlat.c * g->nlat.s
- - p->nlat.s * g->nlat.c * g->wlon.c);
+ m.wlon.c = p->nlat.c * g->nlat.s
+ - p->nlat.s * g->nlat.c * g->wlon.c;
m.wlon.l = atan2(m.wlon.s, - m.wlon.c)
- tw->l;
*g = m;
}
+/* RSB sincos(&g->wlon);*/
trig(&g->wlon);
if(g->wlon.l>PI)
g->wlon.l -= 2*PI;
@@ -135,6 +127,12 @@ norm(struct place *gg, struct place *pp, struct coord *tw)
g->wlon.l += 2*PI;
}
+double
+tan(double x)
+{
+ return(sin(x)/cos(x));
+}
+
void
printp(struct place *g)
{
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/r-cran-mapproj.git
More information about the debian-science-commits
mailing list