00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00030 #ifndef __vtkGeoTerrainNode_h
00031 #define __vtkGeoTerrainNode_h
00032
00033 #include "vtkGeoTreeNode.h"
00034 #include "vtkSmartPointer.h"
00035
00036 class vtkPolyData;
00037
00038 class VTK_GEOVIS_EXPORT vtkGeoTerrainNode : public vtkGeoTreeNode
00039 {
00040 public:
00041 static vtkGeoTerrainNode *New();
00042 vtkTypeRevisionMacro(vtkGeoTerrainNode, vtkGeoTreeNode);
00043 void PrintSelf(ostream& os, vtkIndent indent);
00044
00046
00048 vtkGeoTerrainNode* GetChild(int idx);
00049 vtkGeoTerrainNode* GetParent();
00051
00054 double GetAltitude(double longitude, double latitude);
00055
00057
00059 vtkPolyData* GetModel();
00060 void SetModel(vtkPolyData* model);
00062
00064
00065 void UpdateBoundingSphere();
00066 vtkGetMacro(BoundingSphereRadius, double);
00067 vtkGetVector3Macro(BoundingSphereCenter, double);
00069
00070 vtkGetVector3Macro(CornerNormal00,double);
00071 vtkGetVector3Macro(CornerNormal01,double);
00072 vtkGetVector3Macro(CornerNormal10,double);
00073 vtkGetVector3Macro(CornerNormal11,double);
00074
00076
00078 vtkGetVector4Macro(ProjectionBounds,double);
00079 vtkSetVector4Macro(ProjectionBounds,double);
00081
00083
00085 vtkGetMacro(GraticuleLevel,int);
00086 vtkSetMacro(GraticuleLevel,int);
00088
00090
00092 vtkGetMacro(Error,double);
00093 vtkSetMacro(Error,double);
00095
00097
00099 vtkGetMacro(Coverage,float);
00100 vtkSetMacro(Coverage,float);
00102
00104
00105 virtual void ShallowCopy(vtkGeoTreeNode *src);
00106 virtual void DeepCopy(vtkGeoTreeNode *src);
00108
00109 protected:
00110 vtkGeoTerrainNode();
00111 ~vtkGeoTerrainNode();
00112
00113
00114 vtkSmartPointer<vtkPolyData> Model;
00115
00116
00117 double BoundingSphereRadius;
00118 double BoundingSphereCenter[3];
00119
00120
00121
00122
00123 double CornerNormal00[3];
00124 double CornerNormal01[3];
00125 double CornerNormal10[3];
00126 double CornerNormal11[3];
00127
00128 double ProjectionBounds[4];
00129 int GraticuleLevel;
00130 double Error;
00131 float Coverage;
00132
00133 private:
00134 vtkGeoTerrainNode(const vtkGeoTerrainNode&);
00135 void operator=(const vtkGeoTerrainNode&);
00136 };
00137
00138 #endif