*** GlobeCs v1.0 - What is it? 
It is a 3D vector graph of the globe. The globe is turnable, the display is 
zoomable and scrollable. The program is small, relatively quick.
 
*** Installation and use, legal status 
Put files in the following directories: \APP\GLOBECS.OPA, \OPD\GLOBECS.ODB, 
with Psion-I (English version) install the OPA. It's all. I hope the menu is 
self-explanatory enough. 

GlobeCs is a Public Domain, if you use it, or its parts in your own programs, 
please credit me. Use it as is, there are no registration and support for. 
 
*** HW requirements 
Psion3a (but I guess it runs on 3c and Siena too), needs approx. 30-40 kB 
memory to run, plus the PIC size, which depends on globe radius (max. 51 kB). 
 
*** Data representation and vectorization 
The coastline of continents and islands and some big lakes is given like ODB 
file in binary form. Each point of the coastline represented by two integers 
(absolute longitude and latitude in degrees, West and South is negative), the 
end of a polyline indicated by two zeros. The usual step between the break-
points is not greater then 7 degree (i.e. 3 bit, in this way it would be 
possible to save components of a relative vector with their signs in 1 byte, 
but the unpacking is a surplus time consuming procedure). Some attempt made to 
keep continous line even in case of near islands. In this sense I am proud of 
the Sumatra, Java and Lesser Sundas, the British-Irish Islands as well as 
US-Canada Great Lakes but the Philippines turned out not very well. Presently 
the file consists about 1500 points. By now is missing some islands in Arctic 
Ocean, it means 300-400 additional points. 
 
*** Computation and speed 
The rotation of globe and calculation of visible/hidden points requires much 
trigonometry beyond the spherical-Cartesian transformation. For speed-up the 
code I used the following tricks: 
- almost all repeated calculations are in 2 or 4 byte integer arithmetic, 
- pre-tabulated SIN for range 1-89 degrees with step 1, normalized to 1024 as 
integer, look-up of SIN and COS for any whole number degree angle in this 
table, 
- procedure CACHEing.
All of this together resulted about 10-12 times faster run. 
I decided not to use gPOLY, and gUPDATE OFF because prior to draw a step is 
necessary to make a great many calculations, and the speed increase was not 
very significant. But it is very nice to see how 3a plots point-by-point! 
 
The initial preparation of SIN table and dark background takes 7 sec. The time
of plot recently is approx. 44 sec. This last value practically does not depend 
on the globe size, and the view point. 
 
*** Features in use 
The user can jump to any view point in the Earth. It is possible to move the 
view point by optional 1,2,...,45 degree steps in N, E, S and W directions too.
Thanks to vector graphics, the zooming is very easy. The optional globe radius
is from 80 pixels (you can see the whole globe in the display) to 320 pixels 
(wider, than the 3a display), varies with 40 pixels steps. The program 
calculates and plots the map outside the visible display too. After finish the
plot the actual map is scrollable by arrow keys. The map can be saved as a PIC 
file to the \PIC directory too. The filename is forming from the actual view 
point coordinates. 

*** Other programming remarks, reverse engineering
The 1024 SIN normalization factor comes from the following considerations:
- this value is enough big to get accurate x and y coordinates on display,
- if you multiply 3 such SIN or COS values, you are still in long integer
range, because (2^10)^3 < (2^8)^4.

I ENCOURAGE to make reverse tanslation. The majority of variables is GLOBAL, 
and the global names you can get back by e.g. REVTRAN. All variable and 
procedure names are transparent, or understandable by menu.
 
*** Future plans 
- to complete the missing islands' data, 
- to show the daylight and dark areas on the globe depending on actual date and 
time in form of ellipse or sickle at the grey layer of bitmap; this could be 
processed and updated separately from the black layer, 
- to stole city coordinates from ROM/World files, and put cities on the globe, 
- further probable speed increase by store instead of angles the normalized to 
1024 SIN and COS values of longitude and latitude for each point,  
- long-range fly display (input departure and arrival points and times, get 
great-circle path, with moving in time sign of the aircraft - pocket version 
of the big on-board screens), etc. 
 
*** Similar programs 
D. Rushall's Solun 3 in registred version is able to show the 3D globe map. I 
have seen only its display hardcopy, but as I understood, that globe is fixed 
size. Am I wrong? J. McAleey's W2 program does for 2D map case the daylight/
dark screen.  

*** Author 
I am engineer-physicist, my hobby is the handheld and personal computing. 
I live in Szekszard (18 42E, 46 20N :-), Hungary. 
A Psion3a belongs to me only since last spring (the earlier pocket pet was the
Atari Portfolio). Since I made some family photo galeries, animations with 
asinchrone sound, Hungarian phonemes and rules to A. Clapham PsionSpech 
program, etc. 
 
I welcome ideas and suggestions about ROM/World data handling as well as 
other comments. Enjoy our globe in 3D! 

Andras Cserhati 
cserhati@tea.npp.hu
