Compare commits
11 Commits
RELEASE_0_
...
RELEASE_0_
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2c920ae1df | ||
|
|
bbde3b36bf | ||
|
|
88a016c516 | ||
|
|
22d4058564 | ||
|
|
79e6c529ea | ||
|
|
7b22b8cd92 | ||
|
|
bc2ae82e81 | ||
|
|
764f4037b0 | ||
|
|
a60454a786 | ||
|
|
d136ad3e57 | ||
|
|
739588f9c3 |
@@ -1,7 +1,6 @@
|
||||
noinst_LIBRARIES = libBucket.a
|
||||
|
||||
libBucket_a_SOURCES = bucketutils.c bucketutils.h bucketutils.hxx \
|
||||
newbucket.cxx newbucket.hxx
|
||||
libBucket_a_SOURCES = newbucket.cxx newbucket.hxx
|
||||
|
||||
bin_PROGRAMS = testbucket
|
||||
|
||||
|
||||
@@ -1,326 +0,0 @@
|
||||
// bucketutils.c -- support routines to handle fgBUCKET operations
|
||||
//
|
||||
// Written by Curtis Olson, started January 1998.
|
||||
//
|
||||
// Copyright (C) 1997 Curtis L. Olson - curt@infoplane.com
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
// $Id$
|
||||
// (Log is kept at end of this file)
|
||||
|
||||
|
||||
#include <math.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include <Include/fg_constants.h>
|
||||
|
||||
#include "bucketutils.h"
|
||||
|
||||
|
||||
/* Generate the unique scenery tile index containing the specified
|
||||
lon/lat parameters.
|
||||
|
||||
The index is constructed as follows:
|
||||
|
||||
9 bits - to represent 360 degrees of longitude (-180 to 179)
|
||||
8 bits - to represent 180 degrees of latitude (-90 to 89)
|
||||
|
||||
Each 1 degree by 1 degree tile is further broken down into an 8x8
|
||||
grid. So we also need:
|
||||
|
||||
3 bits - to represent x (0 to 7)
|
||||
3 bits - to represent y (0 to 7) */
|
||||
long int fgBucketGenIndex( const fgBUCKET *p) {
|
||||
long index = 0;
|
||||
|
||||
index = ((p->lon + 180) << 14) + ((p->lat + 90) << 6) + (p->y << 3) + p->x;
|
||||
// printf(" generated index = %ld\n", index);
|
||||
|
||||
return(index);
|
||||
}
|
||||
|
||||
|
||||
// Parse a unique scenery tile index and find the lon, lat, x, and y
|
||||
void fgBucketParseIndex(long int index, fgBUCKET *p) {
|
||||
p->lon = index >> 14;
|
||||
index -= p->lon << 14;
|
||||
p->lon -= 180;
|
||||
|
||||
p->lat = index >> 6;
|
||||
index -= p->lat << 6;
|
||||
p->lat -= 90;
|
||||
|
||||
p->y = index >> 3;
|
||||
index -= p->y << 3;
|
||||
|
||||
p->x = index;
|
||||
}
|
||||
|
||||
|
||||
// Build a path name from an tile index
|
||||
void fgBucketGenBasePath( const fgBUCKET *p, char *path) {
|
||||
long int index;
|
||||
int top_lon, top_lat, main_lon, main_lat;
|
||||
char hem, pole;
|
||||
|
||||
index = fgBucketGenIndex(p);
|
||||
|
||||
path[0] = '\0';
|
||||
|
||||
top_lon = p->lon / 10;
|
||||
main_lon = p->lon;
|
||||
if ( (p->lon < 0) && (top_lon * 10 != p->lon) ) {
|
||||
top_lon -= 1;
|
||||
}
|
||||
top_lon *= 10;
|
||||
if ( top_lon >= 0 ) {
|
||||
hem = 'e';
|
||||
} else {
|
||||
hem = 'w';
|
||||
top_lon *= -1;
|
||||
}
|
||||
if ( main_lon < 0 ) {
|
||||
main_lon *= -1;
|
||||
}
|
||||
|
||||
top_lat = p->lat / 10;
|
||||
main_lat = p->lat;
|
||||
if ( (p->lat < 0) && (top_lat * 10 != p->lat) ) {
|
||||
top_lat -= 1;
|
||||
}
|
||||
top_lat *= 10;
|
||||
if ( top_lat >= 0 ) {
|
||||
pole = 'n';
|
||||
} else {
|
||||
pole = 's';
|
||||
top_lat *= -1;
|
||||
}
|
||||
if ( main_lat < 0 ) {
|
||||
main_lat *= -1;
|
||||
}
|
||||
|
||||
sprintf(path, "%c%03d%c%03d/%c%03d%c%03d",
|
||||
hem, top_lon, pole, top_lat,
|
||||
hem, main_lon, pole, main_lat);
|
||||
}
|
||||
|
||||
|
||||
// offset an bucket struct by the specified amounts in the X & Y direction
|
||||
void fgBucketOffset(fgBUCKET *in, fgBUCKET *out, int x, int y) {
|
||||
int diff, temp;
|
||||
int dist_lat;
|
||||
|
||||
out->lon = in->lon;
|
||||
out->lat = in->lat;
|
||||
out->x = in->x;
|
||||
out->y = in->y;
|
||||
|
||||
// do X direction
|
||||
diff = out->x + x;
|
||||
// printf(" reducing x (%d)\n", diff);
|
||||
if ( diff >= 0 ) {
|
||||
temp = diff / 8;
|
||||
} else if ( diff < -7 ) {
|
||||
temp = (diff + 1) / 8 - 1;
|
||||
} else {
|
||||
temp = diff / 8 - 1;
|
||||
}
|
||||
out->x = ((diff % 8) + 8) % 8;
|
||||
out->lon = ( (out->lon + 180 + 360 + temp) % 360 ) - 180;
|
||||
|
||||
// do Y direction
|
||||
diff = out->y + y;
|
||||
// printf(" reducing x (%d)\n", diff);
|
||||
if ( diff >= 0 ) {
|
||||
temp = diff / 8;
|
||||
} else if ( diff < -7 ) {
|
||||
temp = (diff + 1) / 8 - 1;
|
||||
} else {
|
||||
temp = diff / 8 - 1;
|
||||
}
|
||||
out->y = ((diff % 8) + 8) % 8;
|
||||
out->lat = out->lat + temp;
|
||||
|
||||
if ( out->lat >= 90 ) {
|
||||
dist_lat = out->lat - 90;
|
||||
// printf(" +lat = %d +y = %d\n", dist_lat, out->y);
|
||||
|
||||
out->lat = 90 - (dist_lat + 1);
|
||||
out->lon = ( (out->lon + 180 + 180) % 360 ) - 180;
|
||||
out->y = 7 - out->y;
|
||||
}
|
||||
|
||||
if ( out->lat < -90 ) {
|
||||
dist_lat = -90 - out->lat;
|
||||
// printf(" +lat = %d +y = %d\n", dist_lat, out->y);
|
||||
|
||||
out->lat = -90 + (dist_lat - 1);
|
||||
out->lon = ( (out->lon + 180 + 180) % 360 ) - 180;
|
||||
out->y = 7 - out->y;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Given a lat/lon in degrees, find the "bucket" or tile that it falls
|
||||
// within
|
||||
void fgBucketFind(double lon, double lat, fgBUCKET *p) {
|
||||
double diff;
|
||||
|
||||
diff = lon - (double)(int)lon;
|
||||
// printf("diff = %.2f\n", diff);
|
||||
if ( (lon >= 0) || (fabs(diff) < FG_EPSILON) ) {
|
||||
p->lon = (int)lon;
|
||||
} else {
|
||||
p->lon = (int)lon - 1;
|
||||
}
|
||||
// printf(" p->lon = %d\n", p->lon);
|
||||
|
||||
diff = lat - (double)(int)lat;
|
||||
// printf("diff = %.2f\n", diff);
|
||||
if ( (lat >= 0) || (fabs(diff) < FG_EPSILON) ) {
|
||||
p->lat = (int)lat;
|
||||
} else {
|
||||
p->lat = (int)lat - 1;
|
||||
}
|
||||
// printf(" p->lat = %d\n", p->lat);
|
||||
|
||||
p->x = (int)((lon - p->lon) * 8);
|
||||
p->y = (int)((lat - p->lat) * 8);
|
||||
// printf( "Bucket = lon,lat = %d,%d x,y index = %d,%d\n",
|
||||
// p->lon, p->lat, p->x, p->y);
|
||||
}
|
||||
|
||||
|
||||
// Given a lat/lon, fill in the local tile index array
|
||||
void fgBucketGenIdxArray(fgBUCKET *p1, fgBUCKET *tiles, int width, int height) {
|
||||
fgBUCKET *p2;
|
||||
int dw, dh, i, j;
|
||||
|
||||
dh = height / 2;
|
||||
dw = width / 2;
|
||||
for ( j = 0; j < height; j++ ) {
|
||||
for ( i = 0; i < width; i++ ) {
|
||||
fgBucketOffset(p1, &tiles[(j*width)+i], i - dw, j - dh);
|
||||
p2 = &tiles[(j*width)+i];
|
||||
/* printf( " bucket = %d %d %d %d index = %ld\n",
|
||||
p2->lon, p2->lat, p2->x, p2->y,
|
||||
fgBucketGenIndex(&tiles[(j*width)+i])); */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* sample main for testing
|
||||
int main() {
|
||||
fgBUCKET p1;
|
||||
long int tile[49];
|
||||
char path[256];
|
||||
double lon, lat;
|
||||
int i, j;
|
||||
|
||||
p1.lon = 180;
|
||||
p1.lat = 90;
|
||||
p1.x = 7;
|
||||
p1.y = 7;
|
||||
|
||||
printf("Max index = %ld\n", gen_index(&p1));
|
||||
|
||||
lon = -50.0;
|
||||
lat = -50.0;
|
||||
find_bucket(lon, lat, &p1);
|
||||
gen_idx_array(&p1, tile, 7, 7);
|
||||
for ( j = 0; j < 7; j++ ) {
|
||||
for ( i = 0; i < 7; i++ ) {
|
||||
gen_path(tile[(j*7)+i], path);
|
||||
printf(" path = %s\n", path);
|
||||
}
|
||||
}
|
||||
|
||||
lon = 50.0;
|
||||
lat = 50.0;
|
||||
find_bucket(lon, lat, &p1);
|
||||
gen_idx_array(&p1, tile, 7, 7);
|
||||
for ( j = 0; j < 7; j++ ) {
|
||||
for ( i = 0; i < 7; i++ ) {
|
||||
gen_path(tile[(j*7)+i], path);
|
||||
printf(" path = %s\n", path);
|
||||
}
|
||||
}
|
||||
|
||||
return(1);
|
||||
} */
|
||||
|
||||
|
||||
// $Log$
|
||||
// Revision 1.5 1998/12/09 18:48:08 curt
|
||||
// Use C++ style comments.
|
||||
//
|
||||
// Revision 1.4 1998/12/07 21:08:01 curt
|
||||
// Added a const in a couple places to get rid of annoying compiler warnings.
|
||||
//
|
||||
// Revision 1.3 1998/07/04 00:46:47 curt
|
||||
// typedef'd struct fgBUCKET.
|
||||
//
|
||||
// Revision 1.2 1998/04/25 22:06:22 curt
|
||||
// Edited cvs log messages in source files ... bad bad bad!
|
||||
//
|
||||
// Revision 1.1 1998/04/08 23:28:58 curt
|
||||
// Adopted Gnu automake/autoconf system.
|
||||
//
|
||||
// Revision 1.6 1998/02/09 15:07:51 curt
|
||||
// Minor tweaks.
|
||||
//
|
||||
// Revision 1.5 1998/01/29 00:51:38 curt
|
||||
// First pass at tile cache, dynamic tile loading and tile unloading now works.
|
||||
//
|
||||
// Revision 1.4 1998/01/27 03:26:41 curt
|
||||
// Playing with new fgPrintf command.
|
||||
//
|
||||
// Revision 1.3 1998/01/27 00:48:01 curt
|
||||
// Incorporated Paul Bleisch's <pbleisch@acm.org> new debug message
|
||||
// system and commandline/config file processing code.
|
||||
//
|
||||
// Revision 1.2 1998/01/24 00:03:28 curt
|
||||
// Initial revision.
|
||||
//
|
||||
// Revision 1.1 1998/01/23 20:06:51 curt
|
||||
// tileutils.* renamed to bucketutils.*
|
||||
//
|
||||
// Revision 1.6 1998/01/19 19:27:18 curt
|
||||
// Merged in make system changes from Bob Kuehne <rpk@sgi.com>
|
||||
// This should simplify things tremendously.
|
||||
//
|
||||
// Revision 1.5 1998/01/14 02:19:04 curt
|
||||
// Makde offset_bucket visible to outside.
|
||||
//
|
||||
// Revision 1.4 1998/01/13 00:23:12 curt
|
||||
// Initial changes to support loading and management of scenery tiles. Note,
|
||||
// there's still a fair amount of work left to be done.
|
||||
//
|
||||
// Revision 1.3 1998/01/10 00:01:47 curt
|
||||
// Misc api changes and tweaks.
|
||||
//
|
||||
// Revision 1.2 1998/01/08 02:22:28 curt
|
||||
// Continue working on basic features.
|
||||
//
|
||||
// Revision 1.1 1998/01/07 23:50:52 curt
|
||||
// "area" renamed to "tile"
|
||||
//
|
||||
// Revision 1.1 1998/01/07 23:23:40 curt
|
||||
// Initial revision.
|
||||
//
|
||||
|
||||
|
||||
@@ -1,135 +0,0 @@
|
||||
// bucketutils.h -- support routines to handle fgBUCKET operations
|
||||
//
|
||||
// Written by Curtis Olson, started January 1998.
|
||||
//
|
||||
// Copyright (C) 1997 Curtis L. Olson - curt@infoplane.com
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or
|
||||
// modify it under the terms of the GNU General Public License as
|
||||
// published by the Free Software Foundation; either version 2 of the
|
||||
// License, or (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful, but
|
||||
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
// General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
// $Id$
|
||||
// (Log is kept at end of this file)
|
||||
|
||||
|
||||
#ifndef _BUCKETUTILS_H
|
||||
#define _BUCKETUTILS_H
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
typedef struct {
|
||||
int lon; // longitude (-180 to 179)
|
||||
int lat; // latitude (-90 to 89)
|
||||
int x; // x (0 to 7)
|
||||
int y; // y (0 to 7)
|
||||
} fgBUCKET;
|
||||
|
||||
|
||||
/* Generate the unique scenery tile index containing the specified
|
||||
lon/lat parameters.
|
||||
|
||||
The index is constructed as follows:
|
||||
|
||||
9 bits - to represent 360 degrees of longitude (-180 to 179)
|
||||
8 bits - to represent 180 degrees of latitude (-90 to 89)
|
||||
|
||||
Each 1 degree by 1 degree tile is further broken down into an 8x8
|
||||
grid. So we also need:
|
||||
|
||||
3 bits - to represent x (0 to 7)
|
||||
3 bits - to represent y (0 to 7) */
|
||||
long int fgBucketGenIndex( const fgBUCKET *p);
|
||||
|
||||
|
||||
// Parse a unique scenery tile index and find the lon, lat, x, and y
|
||||
void fgBucketParseIndex(long int index, fgBUCKET *p);
|
||||
|
||||
|
||||
// Build a path name from an tile index
|
||||
void fgBucketGenBasePath( const fgBUCKET *p, char *path);
|
||||
|
||||
|
||||
// offset a bucket struct by the specified amounts in the X & Y direction
|
||||
void fgBucketOffset(fgBUCKET *in, fgBUCKET *out, int x, int y);
|
||||
|
||||
|
||||
// Given a lat/lon in degrees, find the "bucket" or tile that it falls
|
||||
// within
|
||||
void fgBucketFind(double lon, double lat, fgBUCKET *p);
|
||||
|
||||
|
||||
// Given a lat/lon, fill in the local tile index array
|
||||
void fgBucketGenIdxArray(fgBUCKET *p1, fgBUCKET *tiles, int width, int height);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif // _BUCKETUTILS_H
|
||||
|
||||
|
||||
// $Log$
|
||||
// Revision 1.5 1999/02/08 23:52:15 curt
|
||||
// Added a new "newbucket.[ch]xx" FGBucket class to replace the old
|
||||
// fgBUCKET struct and C routines. This FGBucket class adjusts the tile
|
||||
// width towards the poles to ensure the tiles are at least 8 miles wide.
|
||||
//
|
||||
// Revision 1.4 1998/12/09 18:48:09 curt
|
||||
// Use C++ style comments.
|
||||
//
|
||||
// Revision 1.3 1998/12/07 21:08:03 curt
|
||||
// Added a const in a couple places to get rid of annoying compiler warnings.
|
||||
//
|
||||
// Revision 1.2 1998/07/04 00:46:48 curt
|
||||
// typedef'd struct fgBUCKET.
|
||||
//
|
||||
// Revision 1.1 1998/04/08 23:28:59 curt
|
||||
// Adopted Gnu automake/autoconf system.
|
||||
//
|
||||
// Revision 1.2 1998/01/24 00:03:28 curt
|
||||
// Initial revision.
|
||||
//
|
||||
// Revision 1.1 1998/01/23 20:06:52 curt
|
||||
// tileutils.* renamed to bucketutils.*
|
||||
//
|
||||
// Revision 1.6 1998/01/22 02:59:42 curt
|
||||
// Changed #ifdef FILE_H to #ifdef _FILE_H
|
||||
//
|
||||
// Revision 1.5 1998/01/14 02:19:05 curt
|
||||
// Makde offset_bucket visible to outside.
|
||||
//
|
||||
// Revision 1.4 1998/01/13 00:23:12 curt
|
||||
// Initial changes to support loading and management of scenery tiles. Note,
|
||||
// there's still a fair amount of work left to be done.
|
||||
//
|
||||
// Revision 1.3 1998/01/10 00:01:48 curt
|
||||
// Misc api changes and tweaks.
|
||||
//
|
||||
// Revision 1.2 1998/01/08 02:22:28 curt
|
||||
// Continue working on basic features.
|
||||
//
|
||||
// Revision 1.1 1998/01/07 23:50:52 curt
|
||||
// "area" renamed to "tile"
|
||||
//
|
||||
// Revision 1.1 1998/01/07 23:23:40 curt
|
||||
// Initial revision.
|
||||
//
|
||||
|
||||
|
||||
|
||||
@@ -1,81 +0,0 @@
|
||||
/**************************************************************************
|
||||
* bucketutils.hxx -- support routines to handle fgBUCKET operations
|
||||
*
|
||||
* Written by Bernie Bright, started January 1998.
|
||||
*
|
||||
* Copyright (C) 1998 Bernie Bright - bbright@c031.aone.net.au
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
* $Id$
|
||||
* (Log is kept at end of this file)
|
||||
**************************************************************************/
|
||||
|
||||
|
||||
#ifndef _BUCKETUTILS_HXX
|
||||
#define _BUCKETUTILS_HXX
|
||||
|
||||
#include <string>
|
||||
|
||||
FG_USING_NAMESPACE(std);
|
||||
|
||||
#include "bucketutils.h"
|
||||
|
||||
#include <Include/compiler.h>
|
||||
FG_USING_STD(string);
|
||||
|
||||
inline bool
|
||||
operator== ( const fgBUCKET& b1, const fgBUCKET& b2 )
|
||||
{
|
||||
return ( b1.lon == b2.lon &&
|
||||
b1.lat == b2.lat &&
|
||||
b1.x == b2.x &&
|
||||
b1.y == b2.y );
|
||||
}
|
||||
|
||||
inline string
|
||||
fgBucketGenIndex( const fgBUCKET& p )
|
||||
{
|
||||
char index_str[256];
|
||||
sprintf( index_str, "%ld", fgBucketGenIndex( &p ) );
|
||||
return string( index_str );
|
||||
}
|
||||
|
||||
inline string
|
||||
fgBucketGenBasePath( const fgBUCKET& p )
|
||||
{
|
||||
char base_path[256];
|
||||
fgBucketGenBasePath( &p, base_path );
|
||||
return string( base_path );
|
||||
}
|
||||
|
||||
inline ostream&
|
||||
operator<< ( ostream& out, const fgBUCKET& b )
|
||||
{
|
||||
return out << b.lon << "," << b.lat << " " << b.x << "," << b.y;
|
||||
}
|
||||
|
||||
#endif /* _BUCKETUTILS_HXX */
|
||||
|
||||
|
||||
// $Log$
|
||||
// Revision 1.2 1999/01/19 20:56:53 curt
|
||||
// MacOS portability changes contributed by "Robert Puyol" <puyol@abvent.fr>
|
||||
//
|
||||
// Revision 1.1 1998/11/09 23:42:12 curt
|
||||
// Initial revision.
|
||||
//
|
||||
|
||||
|
||||
@@ -33,13 +33,13 @@
|
||||
|
||||
|
||||
// Build the path name for this bucket
|
||||
string FGBucket::gen_base_path() {
|
||||
long int index;
|
||||
string FGBucket::gen_base_path() const {
|
||||
// long int index;
|
||||
int top_lon, top_lat, main_lon, main_lat;
|
||||
char hem, pole;
|
||||
char path[256];
|
||||
|
||||
index = gen_index();
|
||||
// index = gen_index();
|
||||
|
||||
path[0] = '\0';
|
||||
|
||||
@@ -146,6 +146,12 @@ void fgBucketDiff( const FGBucket& b1, const FGBucket& b2, int *dx, int *dy ) {
|
||||
|
||||
|
||||
// $Log$
|
||||
// Revision 1.4 1999/03/27 05:34:05 curt
|
||||
// Elimitated some const warnings from the compiler.
|
||||
//
|
||||
// Revision 1.3 1999/02/26 22:07:54 curt
|
||||
// Added initial support for native SGI compilers.
|
||||
//
|
||||
// Revision 1.2 1999/02/11 01:09:33 curt
|
||||
// Added a routine to calculate the offset in bucket units between two buckets.
|
||||
//
|
||||
@@ -154,3 +160,4 @@ void fgBucketDiff( const FGBucket& b1, const FGBucket& b2, int *dx, int *dy ) {
|
||||
// fgBUCKET struct and C routines. This FGBucket class adjusts the tile
|
||||
// width towards the poles to ensure the tiles are at least 8 miles wide.
|
||||
//
|
||||
|
||||
|
||||
@@ -29,12 +29,18 @@
|
||||
|
||||
#include <Include/compiler.h>
|
||||
|
||||
#include <string>
|
||||
#include STL_STRING
|
||||
|
||||
#ifdef FG_HAVE_STD_INCLUDES
|
||||
# include <cstdio> // sprintf()
|
||||
# include <iostream>
|
||||
#else
|
||||
# include <stdio.h> // sprintf()
|
||||
# include <iostream.h>
|
||||
#endif
|
||||
|
||||
FG_USING_STD(string);
|
||||
FG_USING_NAMESPACE(std);
|
||||
|
||||
#include <stdio.h> // sprintf()
|
||||
FG_USING_STD(ostream);
|
||||
|
||||
#include <Include/fg_constants.h>
|
||||
|
||||
@@ -42,6 +48,9 @@ FG_USING_NAMESPACE(std);
|
||||
#define FG_BUCKET_SPAN 0.125 // 1/8 of a degree
|
||||
#define FG_HALF_BUCKET_SPAN 0.0625 // 1/2 of 1/8 of a degree = 1/16 = 0.0625
|
||||
|
||||
class FGBucket;
|
||||
ostream& operator<< ( ostream&, const FGBucket& );
|
||||
bool operator== ( const FGBucket&, const FGBucket& );
|
||||
|
||||
class FGBucket {
|
||||
|
||||
@@ -63,6 +72,9 @@ public:
|
||||
// create a bucket based on "long int" index
|
||||
FGBucket(const long int bindex);
|
||||
|
||||
// create an impossible bucket if false
|
||||
FGBucket(const bool is_good);
|
||||
|
||||
~FGBucket();
|
||||
|
||||
// Set the bucket params for the specified lat and lon
|
||||
@@ -70,16 +82,29 @@ public:
|
||||
|
||||
// Generate the unique scenery tile index for this bucket
|
||||
long int gen_index();
|
||||
string gen_index_str() const;
|
||||
|
||||
// Build the path name for this bucket
|
||||
string gen_base_path();
|
||||
string gen_base_path() const;
|
||||
|
||||
// return the center lon of a tile
|
||||
double get_center_lon() const;
|
||||
|
||||
// return width of the tile
|
||||
double get_width() const;
|
||||
|
||||
// return the center lat of a tile
|
||||
double get_center_lat() const;
|
||||
|
||||
// return height of the tile
|
||||
double get_height() const;
|
||||
|
||||
// Informational methods
|
||||
inline int get_lon() const { return lon; }
|
||||
inline int get_lat() const { return lat; }
|
||||
inline int get_x() const { return x; }
|
||||
inline int get_y() const { return y; }
|
||||
|
||||
// friends
|
||||
friend ostream& operator<< ( ostream&, const FGBucket& );
|
||||
friend bool operator== ( const FGBucket&, const FGBucket& );
|
||||
@@ -182,6 +207,14 @@ inline FGBucket::FGBucket(const double dlon, const double dlat) {
|
||||
set_bucket(dlon, dlat);
|
||||
}
|
||||
|
||||
// create an impossible bucket if false
|
||||
inline FGBucket::FGBucket(const bool is_good) {
|
||||
set_bucket(0.0, 0.0);
|
||||
if ( !is_good ) {
|
||||
lon = -1000;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Parse a unique scenery tile index and find the lon, lat, x, and y
|
||||
inline FGBucket::FGBucket(const long int bindex) {
|
||||
@@ -223,6 +256,13 @@ inline long int FGBucket::gen_index() {
|
||||
return ((lon + 180) << 14) + ((lat + 90) << 6) + (y << 3) + x;
|
||||
}
|
||||
|
||||
inline string FGBucket::gen_index_str() const {
|
||||
char tmp[20];
|
||||
sprintf(tmp, "%ld",
|
||||
(((long)lon + 180) << 14) + ((lat + 90) << 6) + (y << 3) + x);
|
||||
return (string)tmp;
|
||||
}
|
||||
|
||||
|
||||
// return the center lon of a tile
|
||||
inline double FGBucket::get_center_lon() const {
|
||||
@@ -236,12 +276,24 @@ inline double FGBucket::get_center_lon() const {
|
||||
}
|
||||
|
||||
|
||||
// return width of the tile
|
||||
inline double FGBucket::get_width() const {
|
||||
return bucket_span( get_center_lat() );
|
||||
}
|
||||
|
||||
|
||||
// return the center lat of a tile
|
||||
inline double FGBucket::get_center_lat() const {
|
||||
return lat + y / 8.0 + FG_HALF_BUCKET_SPAN;
|
||||
}
|
||||
|
||||
|
||||
// return height of the tile
|
||||
inline double FGBucket::get_height() const {
|
||||
return FG_BUCKET_SPAN;
|
||||
}
|
||||
|
||||
|
||||
// offset a bucket struct by the specified tile units in the X & Y
|
||||
// direction
|
||||
FGBucket fgBucketOffset( double dlon, double dlat, int x, int y );
|
||||
@@ -273,23 +325,31 @@ operator== ( const FGBucket& b1, const FGBucket& b2 )
|
||||
b1.y == b2.y );
|
||||
}
|
||||
|
||||
/*
|
||||
inline string
|
||||
fgBucketGenIndex( const fgBUCKET& p )
|
||||
{
|
||||
char index_str[256];
|
||||
sprintf( index_str, "%ld", fgBucketGenIndex( &p ) );
|
||||
return string( index_str );
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#endif // _NEWBUCKET_HXX
|
||||
|
||||
|
||||
// $Log$
|
||||
// Revision 1.8 1999/03/27 05:34:06 curt
|
||||
// Elimitated some const warnings from the compiler.
|
||||
//
|
||||
// Revision 1.7 1999/03/25 19:01:51 curt
|
||||
// Jettisoned old bucketutils.[ch] for newbucket.[ch]xx
|
||||
//
|
||||
// Revision 1.6 1999/03/15 17:58:41 curt
|
||||
// MSVC++ portability tweaks contributed by Bernie Bright.
|
||||
// Added using std::ostream declaration.
|
||||
// Added forward declarations to work around a MSVC bug.
|
||||
//
|
||||
// Revision 1.5 1999/03/12 22:51:18 curt
|
||||
// Added some informational methods.
|
||||
//
|
||||
// Revision 1.4 1999/03/02 01:01:43 curt
|
||||
// Tweaks for compiling with native SGI compilers.
|
||||
//
|
||||
// Revision 1.3 1999/02/26 22:07:55 curt
|
||||
// Added initial support for native SGI compilers.
|
||||
//
|
||||
// Revision 1.2 1999/02/11 01:09:34 curt
|
||||
// Added a routine to calculate the offset in bucket units between two buckets.
|
||||
//
|
||||
|
||||
@@ -29,12 +29,11 @@
|
||||
#endif
|
||||
|
||||
|
||||
#include "Include/compiler.h"
|
||||
#include <Include/compiler.h>
|
||||
|
||||
#ifdef FG_HAVE_STD_INCLUDES
|
||||
# include <streambuf>
|
||||
# include <iostream>
|
||||
//# include <ostream>
|
||||
#else
|
||||
# include <iostream.h>
|
||||
# include "Include/fg_traits.hxx"
|
||||
@@ -42,10 +41,12 @@
|
||||
|
||||
#include "debug_types.h"
|
||||
|
||||
#ifndef FG_HAVE_NATIVE_SGI_COMPILERS
|
||||
FG_USING_STD(streambuf);
|
||||
FG_USING_STD(ostream);
|
||||
FG_USING_STD(cerr);
|
||||
FG_USING_STD(endl);
|
||||
#endif
|
||||
|
||||
//
|
||||
// TODO:
|
||||
@@ -211,6 +212,9 @@ fglog()
|
||||
#endif // _LOGSTREAM_H
|
||||
|
||||
// $Log$
|
||||
// Revision 1.4 1999/03/02 01:01:47 curt
|
||||
// Tweaks for compiling with native SGI compilers.
|
||||
//
|
||||
// Revision 1.3 1999/01/19 20:53:35 curt
|
||||
// Portability updates by Bernie Bright.
|
||||
//
|
||||
|
||||
@@ -8,6 +8,7 @@ libMath_a_SOURCES = \
|
||||
fg_geodesy.cxx fg_geodesy.hxx \
|
||||
fg_random.c fg_random.h \
|
||||
interpolater.cxx interpolater.hxx \
|
||||
leastsqs.cxx leastsqs.hxx \
|
||||
mat3.h mat3defs.h mat3err.h \
|
||||
point3d.hxx \
|
||||
polar3d.cxx polar3d.hxx \
|
||||
|
||||
@@ -21,7 +21,9 @@
|
||||
#include <Math/fg_geodesy.hxx>
|
||||
#include <Math/point3d.hxx>
|
||||
|
||||
#ifndef FG_HAVE_NATIVE_SGI_COMPILERS
|
||||
FG_USING_STD(cout);
|
||||
#endif
|
||||
|
||||
// ONE_SECOND is pi/180/60/60, or about 100 feet at earths' equator
|
||||
#define ONE_SECOND 4.848136811E-6
|
||||
@@ -162,6 +164,9 @@ void fgGeodToGeoc( double lat_geod, double alt, double *sl_radius,
|
||||
|
||||
$Header$
|
||||
$Log$
|
||||
Revision 1.6 1999/03/02 01:01:49 curt
|
||||
Tweaks for compiling with native SGI compilers.
|
||||
|
||||
Revision 1.5 1999/01/27 04:46:14 curt
|
||||
Portability tweaks by Bernie Bright.
|
||||
|
||||
@@ -251,6 +256,9 @@ Initial Flight Gear revision.
|
||||
|
||||
|
||||
// $Log$
|
||||
// Revision 1.6 1999/03/02 01:01:49 curt
|
||||
// Tweaks for compiling with native SGI compilers.
|
||||
//
|
||||
// Revision 1.5 1999/01/27 04:46:14 curt
|
||||
// Portability tweaks by Bernie Bright.
|
||||
//
|
||||
|
||||
@@ -24,7 +24,9 @@
|
||||
// (Log is kept at end of this file)
|
||||
|
||||
|
||||
#include <string>
|
||||
#include <Include/compiler.h>
|
||||
|
||||
#include STL_STRING
|
||||
|
||||
#include <Debug/logstream.hxx>
|
||||
#include <Include/fg_zlib.h>
|
||||
@@ -101,6 +103,9 @@ fgINTERPTABLE::~fgINTERPTABLE( void ) {
|
||||
|
||||
|
||||
// $Log$
|
||||
// Revision 1.7 1999/02/26 22:08:03 curt
|
||||
// Added initial support for native SGI compilers.
|
||||
//
|
||||
// Revision 1.6 1999/01/27 04:46:16 curt
|
||||
// Portability tweaks by Bernie Bright.
|
||||
//
|
||||
|
||||
@@ -32,10 +32,9 @@
|
||||
# error This library requires C++
|
||||
#endif
|
||||
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "Include/compiler.h"
|
||||
|
||||
#include STL_STRING
|
||||
FG_USING_STD(string);
|
||||
|
||||
#define MAX_TABLE_SIZE 32
|
||||
@@ -63,6 +62,12 @@ public:
|
||||
|
||||
|
||||
// $Log$
|
||||
// Revision 1.6 1999/03/02 01:01:50 curt
|
||||
// Tweaks for compiling with native SGI compilers.
|
||||
//
|
||||
// Revision 1.5 1999/02/26 22:08:05 curt
|
||||
// Added initial support for native SGI compilers.
|
||||
//
|
||||
// Revision 1.4 1999/01/27 04:46:17 curt
|
||||
// Portability tweaks by Bernie Bright.
|
||||
//
|
||||
|
||||
152
Math/leastsqs.cxx
Normal file
152
Math/leastsqs.cxx
Normal file
@@ -0,0 +1,152 @@
|
||||
// leastsqs.c -- Implements a simple linear least squares best fit routine
|
||||
//
|
||||
// Written by Curtis Olson, started September 1997.
|
||||
//
|
||||
// Copyright (C) 1997 Curtis L. Olson - curt@infoplane.com
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
// $Id$
|
||||
// (Log is kept at end of this file)
|
||||
//
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include "leastsqs.hxx"
|
||||
|
||||
|
||||
/*
|
||||
Least squares fit:
|
||||
|
||||
y = b0 + b1x
|
||||
|
||||
n*sum(xi*yi) - (sum(xi)*sum(yi))
|
||||
b1 = --------------------------------
|
||||
n*sum(xi^2) - (sum(xi))^2
|
||||
|
||||
|
||||
b0 = sum(yi)/n - b1*(sum(xi)/n)
|
||||
*/
|
||||
|
||||
double sum_xi, sum_yi, sum_xi_2, sum_xi_yi;
|
||||
int sum_n;
|
||||
|
||||
void least_squares(double *x, double *y, int n, double *m, double *b) {
|
||||
int i;
|
||||
|
||||
sum_xi = sum_yi = sum_xi_2 = sum_xi_yi = 0.0;
|
||||
sum_n = n;
|
||||
|
||||
for ( i = 0; i < n; i++ ) {
|
||||
sum_xi += x[i];
|
||||
sum_yi += y[i];
|
||||
sum_xi_2 += x[i] * x[i];
|
||||
sum_xi_yi += x[i] * y[i];
|
||||
}
|
||||
|
||||
/* printf("sum(xi)=%.2f sum(yi)=%.2f sum(xi^2)=%.2f sum(xi*yi)=%.2f\n",
|
||||
sum_xi, sum_yi, sum_xi_2, sum_xi_yi); */
|
||||
|
||||
*m = ( (double)sum_n * sum_xi_yi - sum_xi * sum_yi ) /
|
||||
( (double)sum_n * sum_xi_2 - sum_xi * sum_xi );
|
||||
*b = (sum_yi / (double)sum_n) - (*m) * (sum_xi / (double)sum_n);
|
||||
|
||||
/* printf("slope = %.2f intercept = %.2f\n", *m, *b); */
|
||||
}
|
||||
|
||||
|
||||
/* incrimentally update existing values with a new data point */
|
||||
void least_squares_update(double x, double y, double *m, double *b) {
|
||||
++sum_n;
|
||||
|
||||
sum_xi += x;
|
||||
sum_yi += y;
|
||||
sum_xi_2 += x * x;
|
||||
sum_xi_yi += x * y;
|
||||
|
||||
/* printf("sum(xi)=%.2f sum(yi)=%.2f sum(xi^2)=%.2f sum(xi*yi)=%.2f\n",
|
||||
sum_xi, sum_yi, sum_xi_2, sum_xi_yi); */
|
||||
|
||||
*m = ( (double)sum_n * sum_xi_yi - sum_xi * sum_yi ) /
|
||||
( (double)sum_n * sum_xi_2 - sum_xi * sum_xi );
|
||||
*b = (sum_yi / (double)sum_n) - (*m) * (sum_xi / (double)sum_n);
|
||||
|
||||
/* printf("slope = %.2f intercept = %.2f\n", *m, *b); */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
return the least squares error:
|
||||
|
||||
(y[i] - y_hat[i])^2
|
||||
-------------------
|
||||
n
|
||||
*/
|
||||
double least_squares_error(double *x, double *y, int n, double m, double b) {
|
||||
int i;
|
||||
double error, sum;
|
||||
|
||||
sum = 0.0;
|
||||
|
||||
for ( i = 0; i < n; i++ ) {
|
||||
error = y[i] - (m * x[i] + b);
|
||||
sum += error * error;
|
||||
// printf("%.2f %.2f\n", error, sum);
|
||||
}
|
||||
|
||||
return ( sum / (double)n );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
return the maximum least squares error:
|
||||
|
||||
(y[i] - y_hat[i])^2
|
||||
*/
|
||||
double least_squares_max_error(double *x, double *y, int n, double m, double b){
|
||||
int i;
|
||||
double error, max_error;
|
||||
|
||||
max_error = 0.0;
|
||||
|
||||
for ( i = 0; i < n; i++ ) {
|
||||
error = y[i] - (m * x[i] + b);
|
||||
error = error * error;
|
||||
if ( error > max_error ) {
|
||||
max_error = error;
|
||||
}
|
||||
}
|
||||
|
||||
return ( max_error );
|
||||
}
|
||||
|
||||
|
||||
// $Log$
|
||||
// Revision 1.1 1999/03/13 17:34:45 curt
|
||||
// Moved to math subdirectory.
|
||||
//
|
||||
// Revision 1.2 1998/04/21 17:03:41 curt
|
||||
// Prepairing for C++ integration.
|
||||
//
|
||||
// Revision 1.1 1998/04/08 22:57:24 curt
|
||||
// Adopted Gnu automake/autoconf system.
|
||||
//
|
||||
// Revision 1.1 1998/03/19 02:54:47 curt
|
||||
// Reorganized into a class lib called fgDEM.
|
||||
//
|
||||
// Revision 1.1 1997/10/13 17:02:35 curt
|
||||
// Initial revision.
|
||||
//
|
||||
90
Math/leastsqs.hxx
Normal file
90
Math/leastsqs.hxx
Normal file
@@ -0,0 +1,90 @@
|
||||
// leastsqs.h -- Implements a simple linear least squares best fit routine
|
||||
//
|
||||
// Written by Curtis Olson, started September 1997.
|
||||
//
|
||||
// Copyright (C) 1997 Curtis L. Olson - curt@infoplane.com
|
||||
//
|
||||
// This program is free software; you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation; either version 2 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License for more details.
|
||||
//
|
||||
// You should have received a copy of the GNU General Public License
|
||||
// along with this program; if not, write to the Free Software
|
||||
// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
//
|
||||
// $Id$
|
||||
// (Log is kept at end of this file)
|
||||
///
|
||||
|
||||
|
||||
#ifndef _LEASTSQS_H
|
||||
#define _LEASTSQS_H
|
||||
|
||||
|
||||
#ifndef __cplusplus
|
||||
# error This library requires C++
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
Least squares fit:
|
||||
|
||||
y = b0 + b1x
|
||||
|
||||
n*sum(xi*yi) - (sum(xi)*sum(yi))
|
||||
b1 = --------------------------------
|
||||
n*sum(xi^2) - (sum(xi))^2
|
||||
|
||||
|
||||
b0 = sum(yi)/n - b1*(sum(xi)/n)
|
||||
*/
|
||||
|
||||
void least_squares(double *x, double *y, int n, double *m, double *b);
|
||||
|
||||
/* incrimentally update existing values with a new data point */
|
||||
void least_squares_update(double x, double y, double *m, double *b);
|
||||
|
||||
|
||||
/*
|
||||
return the least squares error:
|
||||
|
||||
(y[i] - y_hat[i])^2
|
||||
-------------------
|
||||
n
|
||||
*/
|
||||
double least_squares_error(double *x, double *y, int n, double m, double b);
|
||||
|
||||
|
||||
/*
|
||||
return the maximum least squares error:
|
||||
|
||||
(y[i] - y_hat[i])^2
|
||||
*/
|
||||
double least_squares_max_error(double *x, double *y, int n, double m, double b);
|
||||
|
||||
|
||||
#endif // _LEASTSQS_H
|
||||
|
||||
|
||||
// $Log$
|
||||
// Revision 1.1 1999/03/13 17:34:45 curt
|
||||
// Moved to math subdirectory.
|
||||
//
|
||||
// Revision 1.2 1998/04/21 17:03:42 curt
|
||||
// Prepairing for C++ integration.
|
||||
//
|
||||
// Revision 1.1 1998/04/08 22:57:25 curt
|
||||
// Adopted Gnu automake/autoconf system.
|
||||
//
|
||||
// Revision 1.1 1998/03/19 02:54:48 curt
|
||||
// Reorganized into a class lib called fgDEM.
|
||||
//
|
||||
// Revision 1.1 1997/10/13 17:02:35 curt
|
||||
// Initial revision.
|
||||
//
|
||||
@@ -46,8 +46,10 @@
|
||||
# include <math.h>
|
||||
#endif
|
||||
|
||||
#ifndef FG_HAVE_NATIVE_SGI_COMPILERS
|
||||
FG_USING_STD(ostream);
|
||||
FG_USING_STD(istream);
|
||||
#endif
|
||||
|
||||
// -rp- assert.h is buggy under MWCWP3, as multiple #include undef assert !
|
||||
#ifdef __MWERKS__
|
||||
@@ -335,6 +337,9 @@ Point3D::distance3Dsquared(const Point3D& a ) const
|
||||
|
||||
|
||||
// $Log$
|
||||
// Revision 1.10 1999/03/02 01:01:52 curt
|
||||
// Tweaks for compiling with native SGI compilers.
|
||||
//
|
||||
// Revision 1.9 1999/02/01 21:08:28 curt
|
||||
// Optimizations from Norman Vine.
|
||||
//
|
||||
|
||||
@@ -82,7 +82,7 @@ void map_vec_onto_cur_surface_plane(MAT3vec normal, MAT3vec v0, MAT3vec vec,
|
||||
// find the shortest distance from the point to the line
|
||||
double fgPointLine(MAT3vec p, MAT3vec p0, MAT3vec d) {
|
||||
MAT3vec u, u1, v;
|
||||
double ud, dd, tmp, dist;
|
||||
double ud, dd, tmp;
|
||||
|
||||
// u = p - p0
|
||||
MAT3_SUB_VEC(u, p, p0);
|
||||
@@ -99,9 +99,7 @@ double fgPointLine(MAT3vec p, MAT3vec p0, MAT3vec d) {
|
||||
// original point, p.
|
||||
MAT3_SUB_VEC(v, u, u1);
|
||||
|
||||
dist = sqrt(MAT3_DOT_PRODUCT(v, v));
|
||||
|
||||
return( dist );
|
||||
return sqrt(MAT3_DOT_PRODUCT(v, v));
|
||||
}
|
||||
|
||||
|
||||
@@ -131,6 +129,9 @@ double fgPointLineSquared(MAT3vec p, MAT3vec p0, MAT3vec d) {
|
||||
|
||||
|
||||
// $Log$
|
||||
// Revision 1.6 1999/03/25 19:02:28 curt
|
||||
// Minor optimization tweaks.
|
||||
//
|
||||
// Revision 1.5 1998/10/16 23:36:38 curt
|
||||
// c++-ifying.
|
||||
//
|
||||
|
||||
@@ -32,21 +32,27 @@
|
||||
# include "Include/config.h"
|
||||
#endif
|
||||
|
||||
#include <string>
|
||||
#include <Include/compiler.h>
|
||||
|
||||
#include "Include/compiler.h"
|
||||
#ifdef FG_HAVE_STD_INCLUDES
|
||||
#if defined( FG_HAVE_STD_INCLUDES )
|
||||
# include <istream>
|
||||
#elif defined ( FG_HAVE_NATIVE_SGI_COMPILERS )
|
||||
# include <CC/stream.h>
|
||||
#else
|
||||
# include <istream.h>
|
||||
#endif
|
||||
|
||||
FG_USING_STD(string);
|
||||
FG_USING_STD(istream);
|
||||
|
||||
#include STL_STRING
|
||||
|
||||
#include "zfstream.hxx"
|
||||
|
||||
FG_USING_STD(string);
|
||||
|
||||
#ifndef FG_HAVE_NATIVE_SGI_COMPILERS
|
||||
FG_USING_STD(istream);
|
||||
#endif
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Envelope class for gzifstream.
|
||||
@@ -72,6 +78,8 @@ public:
|
||||
|
||||
void close() { gzbuf.close(); }
|
||||
|
||||
bool is_open() { return gzbuf.is_open(); }
|
||||
|
||||
private:
|
||||
// Not defined!
|
||||
fg_gzifstream( const fg_gzifstream& );
|
||||
@@ -92,6 +100,15 @@ istream& skipcomment( istream& in );
|
||||
#endif /* _FGSTREAM_HXX */
|
||||
|
||||
// $Log$
|
||||
// Revision 1.9 1999/03/27 14:04:25 curt
|
||||
// Added is_open() so we can check if the open() succeeded.
|
||||
//
|
||||
// Revision 1.8 1999/03/02 01:01:55 curt
|
||||
// Tweaks for compiling with native SGI compilers.
|
||||
//
|
||||
// Revision 1.7 1999/02/26 22:08:08 curt
|
||||
// Added initial support for native SGI compilers.
|
||||
//
|
||||
// Revision 1.6 1999/01/19 20:41:46 curt
|
||||
// Portability updates contributed by Bernie Bright.
|
||||
//
|
||||
|
||||
@@ -24,8 +24,8 @@
|
||||
#ifndef STRUTILS_H
|
||||
#define STRUTILS_H
|
||||
|
||||
#include <string>
|
||||
#include "Include/compiler.h"
|
||||
#include <Include/compiler.h>
|
||||
#include STL_STRING
|
||||
|
||||
#ifdef FG_HAVE_STD_INCLUDES
|
||||
# include <cstdlib>
|
||||
@@ -64,6 +64,12 @@ atoi( const string& str )
|
||||
#endif // STRUTILS_H
|
||||
|
||||
// $Log$
|
||||
// Revision 1.6 1999/03/02 01:01:56 curt
|
||||
// Tweaks for compiling with native SGI compilers.
|
||||
//
|
||||
// Revision 1.5 1999/02/26 22:08:09 curt
|
||||
// Added initial support for native SGI compilers.
|
||||
//
|
||||
// Revision 1.4 1999/01/19 20:41:47 curt
|
||||
// Portability updates contributed by Bernie Bright.
|
||||
//
|
||||
|
||||
@@ -66,6 +66,8 @@ FG_USING_STD(streamoff);
|
||||
|
||||
#if defined(__GNUC__) && __GNUC_MINOR__ < 8
|
||||
# define ios_binary ios::bin
|
||||
#elif defined( FG_HAVE_NATIVE_SGI_COMPILERS )
|
||||
# define ios_binary 0
|
||||
#else
|
||||
# define ios_binary ios::binary
|
||||
#endif
|
||||
@@ -152,6 +154,12 @@ struct gzifstream_base
|
||||
#endif // _zfstream_hxx
|
||||
|
||||
// $Log$
|
||||
// Revision 1.9 1999/03/08 22:00:12 curt
|
||||
// Tweak for native SGI compilers.
|
||||
//
|
||||
// Revision 1.8 1999/02/26 22:08:10 curt
|
||||
// Added initial support for native SGI compilers.
|
||||
//
|
||||
// Revision 1.7 1999/01/19 20:41:49 curt
|
||||
// Portability updates contributed by Bernie Bright.
|
||||
//
|
||||
|
||||
@@ -34,14 +34,14 @@
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
#include "Include/compiler.h"
|
||||
#include <string>
|
||||
FG_USING_STD(string);
|
||||
|
||||
#if defined( WIN32 ) && !defined( __CYGWIN__) && !defined( __CYGWIN32__ )
|
||||
# include <windows.h>
|
||||
#endif
|
||||
|
||||
#include <Include/compiler.h>
|
||||
#include STL_STRING
|
||||
FG_USING_STD(string);
|
||||
|
||||
// if someone know how to do this all with C++ streams let me know
|
||||
// #include <stdio.h>
|
||||
|
||||
@@ -80,6 +80,12 @@ public:
|
||||
|
||||
|
||||
// $Log$
|
||||
// Revision 1.5 1999/03/02 01:01:58 curt
|
||||
// Tweaks for compiling with native SGI compilers.
|
||||
//
|
||||
// Revision 1.4 1999/02/26 22:08:13 curt
|
||||
// Added initial support for native SGI compilers.
|
||||
//
|
||||
// Revision 1.3 1999/02/02 20:13:24 curt
|
||||
// MSVC++ portability changes by Bernie Bright:
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user