GeoTessCPP
2.2.3
Software to facilitate storage and retrieval of 3D information about the Earth.
GeoTessPositionNaturalNeighbor.h
Go to the documentation of this file.
1
//- ****************************************************************************
2
//-
3
//- Copyright 2009 National Technology & Engineering Solutions of Sandia, LLC
4
//- (NTESS). Under the terms of Contract DE-NA0003525 with NTESS, the U.S.
5
//- Government retains certain rights in this software.
6
//-
7
//- BSD Open Source License
8
//- All rights reserved.
9
//-
10
//- Redistribution and use in source and binary forms, with or without
11
//- modification, are permitted provided that the following conditions are met:
12
//-
13
//- 1. Redistributions of source code must retain the above copyright notice,
14
//- this list of conditions and the following disclaimer.
15
//-
16
//- 2. Redistributions in binary form must reproduce the above copyright
17
//- notice, this list of conditions and the following disclaimer in the
18
//- documentation and/or other materials provided with the distribution.
19
//-
20
//- 3. Neither the name of the copyright holder nor the names of its
21
//- contributors may be used to endorse or promote products derived from
22
//- this software without specific prior written permission.
23
//-
24
//- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
25
//- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26
//- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27
//- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
28
//- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
29
//- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
30
//- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31
//- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32
//- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
33
//- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
34
//- POSSIBILITY OF SUCH DAMAGE.
35
//-
36
//- ****************************************************************************
37
38
#ifndef GEOTESSPOSITIONNATURALNEIGHBOR_OBJECT_H
39
#define GEOTESSPOSITIONNATURALNEIGHBOR_OBJECT_H
40
41
// **** _SYSTEM INCLUDES_ ******************************************************
42
43
#include <iostream>
44
#include <string>
45
#include <fstream>
46
#include <vector>
47
48
// use standard library objects
49
using namespace
std;
50
51
// **** _LOCAL INCLUDES_ *******************************************************
52
53
#include "
CPPUtils.h
"
54
#include "
GeoTessUtils.h
"
55
#include "
GeoTessPosition.h
"
56
#include "
GeoTessInterpolatorType.h
"
57
#include "
ArrayReuse.h
"
58
59
// **** _BEGIN GEOTESS NAMESPACE_ **********************************************
60
61
namespace
geotess
{
62
63
// **** _FORWARD REFERENCES_ ***************************************************
64
65
class
GeoTessModel;
66
class
GeoTessProfile;
67
68
// **** _CLASS DEFINITION_ *****************************************************
69
95
class
GEOTESS_EXP_IMP
GeoTessPositionNaturalNeighbor
:
public
GeoTessPosition
{
96
97
private
:
98
99
vector<bool> marked;
100
vector<int> nnTriangles;
101
vector<Edge*> edges;
102
106
double
const
*
const
* gridVrtcs;
107
108
bool
isNNTriangle(
const
int
& t)
109
{
110
const
double
* center = grid.getCircumCenter(t);
111
// if the distance from the interpolation point to the
112
// circumcenter is less than the radius of the circumcircle
113
return
GeoTessUtils::dot(center, unitVector) > center[3];
114
//GeoTessUtils::dot(center, grid.getTriangleVertex(triangle, 0));
115
116
}
117
118
119
protected
:
120
130
virtual
void
update2D
(
int
tid);
131
132
public
:
133
137
GeoTessPositionNaturalNeighbor
(
GeoTessModel
* model,
138
const
GeoTessInterpolatorType
& radialType);
139
143
virtual
~GeoTessPositionNaturalNeighbor
();
144
149
virtual
const
GeoTessInterpolatorType
&
getInterpolatorType
()
const
{
150
return
GeoTessInterpolatorType::NATURAL_NEIGHBOR;
151
}
152
153
virtual
long
getMemory
()
154
{
155
return
(
long
)
sizeof
(
GeoTessPositionNaturalNeighbor
) + memory()
156
+ (long)(marked.capacity() *
sizeof
(bool) + nnTriangles.capacity() *
sizeof
(int)
157
+ edges.capacity() *
sizeof
(
Edge
*));
158
}
159
160
};
161
// end class GeoTessModelNaturalNeighbor
162
163
}
// end namespace geotess
164
165
#endif // GEOTESSPOSITIONNATURALNEIGHBOR_OBJECT_H
geotess
Definition:
ArrayReuse.h:57
geotess::GeoTessPositionNaturalNeighbor::GeoTessPositionNaturalNeighbor
GeoTessPositionNaturalNeighbor(GeoTessModel *model, const GeoTessInterpolatorType &radialType)
geotess::Edge
Stores information about the connection between two adjacent vertices which separates two neighboring...
Definition:
GeoTessGrid.h:104
geotess::GeoTessPositionNaturalNeighbor::getInterpolatorType
virtual const GeoTessInterpolatorType & getInterpolatorType() const
Definition:
GeoTessPositionNaturalNeighbor.h:149
geotess::GeoTessPositionNaturalNeighbor::update2D
virtual void update2D(int tid)
GeoTessUtils.h
geotess::GeoTessPositionNaturalNeighbor
Implements the Natural Neighbor Interpolation algorithm for the geographic dimensions of the grid.
Definition:
GeoTessPositionNaturalNeighbor.h:95
GeoTessInterpolatorType.h
GEOTESS_EXP_IMP
#define GEOTESS_EXP_IMP
Definition:
CPPGlobals.h:73
GeoTessPosition.h
geotess::GeoTessPositionNaturalNeighbor::~GeoTessPositionNaturalNeighbor
virtual ~GeoTessPositionNaturalNeighbor()
geotess::GeoTessModel
Top level class that manages the GeoTessMetaData, GeoTessGrid and GeoTessData that comprise a 3D Eart...
Definition:
GeoTessModel.h:123
geotess::GeoTessPosition
Information about an interpolated point at an arbitrary position in a model.
Definition:
GeoTessPosition.h:104
ArrayReuse.h
geotess::GeoTessPositionNaturalNeighbor::getMemory
virtual long getMemory()
Definition:
GeoTessPositionNaturalNeighbor.h:153
CPPUtils.h
geotess::GeoTessInterpolatorType
Enumeration of the interpolation algorithms supported by GeoTess including LINEAR,...
Definition:
GeoTessInterpolatorType.h:74
rstt
GeoTessCPP
include
GeoTessPositionNaturalNeighbor.h
Generated by
1.8.18