ANN.h | ANN.h | |||
---|---|---|---|---|
//---------------------------------------------------------------------- | //---------------------------------------------------------------------- | |||
// File: ANN.h | // File: ANN.h | |||
// Programmer: Sunil Arya and David Mount | // Programmer: Sunil Arya and David Mount | |||
// Last modified: 05/03/05 (Release 1.1) | ||||
// Description: Basic include file for approximate nearest | // Description: Basic include file for approximate nearest | |||
// neighbor searching. | // neighbor searching. | |||
// Last modified: 01/27/10 (Version 1.1.2) | ||||
//---------------------------------------------------------------------- | //---------------------------------------------------------------------- | |||
// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and | // Copyright (c) 1997-2010 University of Maryland and Sunil Arya and | |||
// David Mount. All Rights Reserved. | // David Mount. All Rights Reserved. | |||
// | // | |||
// This software and related documentation is part of the Approximate | // This software and related documentation is part of the Approximate | |||
// Nearest Neighbor Library (ANN). This software is provided under | // Nearest Neighbor Library (ANN). This software is provided under | |||
// the provisions of the Lesser GNU Public License (LGPL). See the | // the provisions of the Lesser GNU Public License (LGPL). See the | |||
// file ../ReadMe.txt for further information. | // file ../ReadMe.txt for further information. | |||
// | // | |||
// The University of Maryland (U.M.) and the authors make no | // The University of Maryland (U.M.) and the authors make no | |||
// representations about the suitability or fitness of this software for | // representations about the suitability or fitness of this software for | |||
// any purpose. It is provided "as is" without express or implied | // any purpose. It is provided "as is" without express or implied | |||
skipping to change at line 31 | skipping to change at line 31 | |||
// History: | // History: | |||
// Revision 0.1 03/04/98 | // Revision 0.1 03/04/98 | |||
// Initial release | // Initial release | |||
// Revision 1.0 04/01/05 | // Revision 1.0 04/01/05 | |||
// Added copyright and revision information | // Added copyright and revision information | |||
// Added ANNcoordPrec for coordinate precision. | // Added ANNcoordPrec for coordinate precision. | |||
// Added methods theDim, nPoints, maxPoints, thePoints to ANNpo intSet. | // Added methods theDim, nPoints, maxPoints, thePoints to ANNpo intSet. | |||
// Cleaned up C++ structure for modern compilers | // Cleaned up C++ structure for modern compilers | |||
// Revision 1.1 05/03/05 | // Revision 1.1 05/03/05 | |||
// Added fixed-radius k-NN searching | // Added fixed-radius k-NN searching | |||
// Revision 1.1.2 01/27/10 | ||||
// Fixed minor compilation bugs for new versions of gcc | ||||
//---------------------------------------------------------------------- | //---------------------------------------------------------------------- | |||
//---------------------------------------------------------------------- | //---------------------------------------------------------------------- | |||
// ANN - approximate nearest neighbor searching | // ANN - approximate nearest neighbor searching | |||
// ANN is a library for approximate nearest neighbor searching, | // ANN is a library for approximate nearest neighbor searching, | |||
// based on the use of standard and priority search in kd-trees | // based on the use of standard and priority search in kd-trees | |||
// and balanced box-decomposition (bbd) trees. Here are some | // and balanced box-decomposition (bbd) trees. Here are some | |||
// references to the main algorithmic techniques used here: | // references to the main algorithmic techniques used here: | |||
// | // | |||
// kd-trees: | // kd-trees: | |||
skipping to change at line 90 | skipping to change at line 92 | |||
// DLL_API is ignored for all other systems | // DLL_API is ignored for all other systems | |||
//---------------------------------------------------------------------- | //---------------------------------------------------------------------- | |||
#else | #else | |||
#define DLL_API | #define DLL_API | |||
#endif | #endif | |||
//---------------------------------------------------------------------- | //---------------------------------------------------------------------- | |||
// basic includes | // basic includes | |||
//---------------------------------------------------------------------- | //---------------------------------------------------------------------- | |||
#include <cstdlib> // standard lib includes | ||||
#include <cmath> // math includes | #include <cmath> // math includes | |||
#include <iostream> // I/O streams | #include <iostream> // I/O streams | |||
#include <cstring> // C-style strings | ||||
//---------------------------------------------------------------------- | //---------------------------------------------------------------------- | |||
// Limits | // Limits | |||
// There are a number of places where we use the maximum double value as | // There are a number of places where we use the maximum double value as | |||
// default initializers (and others may be used, depending on the | // default initializers (and others may be used, depending on the | |||
// data/distance representation). These can usually be found in limits.h | // data/distance representation). These can usually be found in limits.h | |||
// (as LONG_MAX, INT_MAX) or in float.h (as DBL_MAX, FLT_MAX). | // (as LONG_MAX, INT_MAX) or in float.h (as DBL_MAX, FLT_MAX). | |||
// | // | |||
// Not all systems have these files. If you are using such a system, | // Not all systems have these files. If you are using such a system, | |||
// you should set the preprocessor symbol ANN_NO_LIMITS_H when | // you should set the preprocessor symbol ANN_NO_LIMITS_H when | |||
skipping to change at line 117 | skipping to change at line 121 | |||
//---------------------------------------------------------------------- | //---------------------------------------------------------------------- | |||
#ifdef ANN_NO_LIMITS_H // limits.h unavaila ble | #ifdef ANN_NO_LIMITS_H // limits.h unavaila ble | |||
#include <cvalues> // replacement for l imits.h | #include <cvalues> // replacement for l imits.h | |||
const double ANN_DBL_MAX = MAXDOUBLE; // insert maximum double | const double ANN_DBL_MAX = MAXDOUBLE; // insert maximum double | |||
#else | #else | |||
#include <climits> | #include <climits> | |||
#include <cfloat> | #include <cfloat> | |||
const double ANN_DBL_MAX = DBL_MAX; | const double ANN_DBL_MAX = DBL_MAX; | |||
#endif | #endif | |||
#define ANNversion "1.1.1" // ANN version and i nformation | #define ANNversion "1.1.2" // ANN version and i nformation | |||
#define ANNversionCmt "" | #define ANNversionCmt "" | |||
#define ANNcopyright "David M. Mount and Sunil Arya" | #define ANNcopyright "David M. Mount and Sunil Arya" | |||
#define ANNlatestRev "Aug 4, 2006" | #define ANNlatestRev "Jan 27, 2010" | |||
//---------------------------------------------------------------------- | //---------------------------------------------------------------------- | |||
// ANNbool | // ANNbool | |||
// This is a simple boolean type. Although ANSI C++ is supposed | // This is a simple boolean type. Although ANSI C++ is supposed | |||
// to support the type bool, some compilers do not have it. | // to support the type bool, some compilers do not have it. | |||
//---------------------------------------------------------------------- | //---------------------------------------------------------------------- | |||
enum ANNbool {ANNfalse = 0, ANNtrue = 1}; // ANN boolean type (non ANSI C++ ) | enum ANNbool {ANNfalse = 0, ANNtrue = 1}; // ANN boolean type (non ANSI C++ ) | |||
//---------------------------------------------------------------------- | //---------------------------------------------------------------------- | |||
End of changes. 8 change blocks. | ||||
4 lines changed or deleted | 8 lines changed or added | |||
ANNx.h | ANNx.h | |||
---|---|---|---|---|
//---------------------------------------------------------------------- | //---------------------------------------------------------------------- | |||
// File: ANNx.h | // File: ANNx.h | |||
// Programmer: Sunil Arya and David Mount | // Programmer: Sunil Arya and David Mount | |||
// Last modified: 03/04/98 (Release 0.1) | // Description: Internal include file for ANN | |||
// Description: Internal include file for ANN | // Last modified: 01/27/10 (Version 1.1.2) | |||
// | // | |||
// These declarations are of use in manipulating some of | // These declarations are of use in manipulating some of | |||
// the internal data objects appearing in ANN, but are not | // the internal data objects appearing in ANN, but are not | |||
// needed for applications just using the nearest neighbor | // needed for applications just using the nearest neighbor | |||
// search. | // search. | |||
// | // | |||
// Typical users of ANN should not need to access this file. | // Typical users of ANN should not need to access this file. | |||
//---------------------------------------------------------------------- | //---------------------------------------------------------------------- | |||
// Copyright (c) 1997-2005 University of Maryland and Sunil Arya and | // Copyright (c) 1997-2010 University of Maryland and Sunil Arya and | |||
// David Mount. All Rights Reserved. | // David Mount. All Rights Reserved. | |||
// | // | |||
// This software and related documentation is part of the Approximate | // This software and related documentation is part of the Approximate | |||
// Nearest Neighbor Library (ANN). This software is provided under | // Nearest Neighbor Library (ANN). This software is provided under | |||
// the provisions of the Lesser GNU Public License (LGPL). See the | // the provisions of the Lesser GNU Public License (LGPL). See the | |||
// file ../ReadMe.txt for further information. | // file ../ReadMe.txt for further information. | |||
// | // | |||
// The University of Maryland (U.M.) and the authors make no | // The University of Maryland (U.M.) and the authors make no | |||
// representations about the suitability or fitness of this software for | // representations about the suitability or fitness of this software for | |||
// any purpose. It is provided "as is" without express or implied | // any purpose. It is provided "as is" without express or implied | |||
// warranty. | // warranty. | |||
//---------------------------------------------------------------------- | //---------------------------------------------------------------------- | |||
// History: | // History: | |||
// Revision 0.1 03/04/98 | // Revision 0.1 03/04/98 | |||
// Initial release | // Initial release | |||
// Revision 1.0 04/01/05 | // Revision 1.0 04/01/05 | |||
// Changed LO, HI, IN, OUT to ANN_LO, ANN_HI, etc. | // Changed LO, HI, IN, OUT to ANN_LO, ANN_HI, etc. | |||
// Revision 1.1.2 01/27/10 | ||||
// Fixed minor compilation bugs for new versions of gcc | ||||
//---------------------------------------------------------------------- | //---------------------------------------------------------------------- | |||
#ifndef ANNx_H | #ifndef ANNx_H | |||
#define ANNx_H | #define ANNx_H | |||
#include <iomanip> // I/O manipulators | #include <iomanip> // I/O manipulators | |||
#include <ANN/ANN.h> // ANN includes | #include <ANN/ANN.h> // ANN includes | |||
//---------------------------------------------------------------------- | //---------------------------------------------------------------------- | |||
// Global constants and types | // Global constants and types | |||
skipping to change at line 64 | skipping to change at line 66 | |||
//---------------------------------------------------------------------- | //---------------------------------------------------------------------- | |||
extern int ANNmaxPtsVisited; // maximum number of pts vis ited | extern int ANNmaxPtsVisited; // maximum number of pts vis ited | |||
extern int ANNptsVisited; // number of pts visited in search | extern int ANNptsVisited; // number of pts visited in search | |||
//---------------------------------------------------------------------- | //---------------------------------------------------------------------- | |||
// Global function declarations | // Global function declarations | |||
//---------------------------------------------------------------------- | //---------------------------------------------------------------------- | |||
void annError( // ANN error routine | void annError( // ANN error routine | |||
char *msg, // error message | const char* msg, // error message | |||
ANNerr level); // level of error | ANNerr level); // level of error | |||
void annPrintPt( // print a point | void annPrintPt( // print a point | |||
ANNpoint pt, // the point | ANNpoint pt, // the point | |||
int dim, // the dimension | int dim, // the dimension | |||
std::ostream &out); // output stream | std::ostream &out); // output stream | |||
//---------------------------------------------------------------------- | //---------------------------------------------------------------------- | |||
// Orthogonal (axis aligned) rectangle | // Orthogonal (axis aligned) rectangle | |||
// Orthogonal rectangles are represented by two points, one | // Orthogonal rectangles are represented by two points, one | |||
End of changes. 4 change blocks. | ||||
6 lines changed or deleted | 8 lines changed or added | |||