VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkGlobeSource.h 00005 00006 Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen 00007 All rights reserved. 00008 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00009 00010 This software is distributed WITHOUT ANY WARRANTY; without even 00011 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00012 PURPOSE. See the above copyright notice for more information. 00013 00014 =========================================================================*/ 00015 00016 /*------------------------------------------------------------------------- 00017 Copyright 2008 Sandia Corporation. 00018 Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, 00019 the U.S. Government retains certain rights in this software. 00020 -------------------------------------------------------------------------*/ 00021 00036 #ifndef __vtkGlobeSource_h 00037 #define __vtkGlobeSource_h 00038 00039 #include "vtkPolyDataAlgorithm.h" 00040 00041 class vtkCellArray; 00042 class vtkFloatArray; 00043 00044 00045 class VTK_GEOVIS_EXPORT vtkGlobeSource : public vtkPolyDataAlgorithm 00046 { 00047 public: 00048 vtkTypeMacro(vtkGlobeSource,vtkPolyDataAlgorithm); 00049 void PrintSelf(ostream& os, vtkIndent indent); 00050 00051 00052 // Descrpition: 00053 // This world point will be shifted to 0,0,0. 00054 // Used to avoid picking bug caused by rendering errors with large offsets. 00055 vtkSetVector3Macro(Origin, double); 00056 00058 00059 vtkSetClampMacro(StartLongitude,double,-180.0,180.0); 00060 vtkSetClampMacro(EndLongitude,double,-180.0,180.0); 00061 vtkSetClampMacro(StartLatitude,double,-90.0,90.0); 00062 vtkSetClampMacro(EndLatitude,double,-90.0,90.0); 00064 00066 00068 vtkSetClampMacro(LongitudeResolution,int,3,100); 00069 vtkGetMacro(LongitudeResolution,int); 00071 00073 00075 vtkSetClampMacro(LatitudeResolution,int,3,100); 00076 vtkGetMacro(LatitudeResolution,int); 00078 00080 00081 vtkSetClampMacro(Radius,double,0.0,VTK_DOUBLE_MAX); 00082 vtkGetMacro(Radius,double); 00084 00085 vtkSetClampMacro(CurtainHeight,double,0.0,VTK_DOUBLE_MAX); 00086 vtkGetMacro(CurtainHeight,double); 00087 00089 00095 vtkSetMacro(QuadrilateralTessellation,int); 00096 vtkGetMacro(QuadrilateralTessellation,int); 00097 vtkBooleanMacro(QuadrilateralTessellation,int); 00099 00103 static vtkGlobeSource *New(); 00104 00106 00108 static void ComputeGlobePoint( 00109 double theta, double phi, double radius, double* point, double* normal = 0); 00111 00113 00115 static void ComputeLatitudeLongitude( 00116 double* x, double& theta, double& phi); 00118 00119 protected: 00120 vtkGlobeSource(); 00121 ~vtkGlobeSource() {} 00122 00123 int RequestData( 00124 vtkInformation *, 00125 vtkInformationVector **, 00126 vtkInformationVector *); 00127 int RequestInformation( 00128 vtkInformation *, 00129 vtkInformationVector **, 00130 vtkInformationVector *); 00131 00132 void AddPoint( 00133 double theta, double phi, double radius, 00134 vtkPoints* newPoints, vtkFloatArray* newNormals, 00135 vtkFloatArray* newLongitudeArray, vtkFloatArray* newLatitudeArray, 00136 vtkDoubleArray* newLatLongArray); 00137 00138 00139 double Origin[3]; 00140 double Radius; 00141 double CurtainHeight; 00142 int LongitudeResolution; 00143 int LatitudeResolution; 00144 double StartLongitude; 00145 double EndLongitude; 00146 double StartLatitude; 00147 double EndLatitude; 00148 int QuadrilateralTessellation; 00149 00150 private: 00151 vtkGlobeSource(const vtkGlobeSource&); // Not implemented. 00152 void operator=(const vtkGlobeSource&); // Not implemented. 00153 }; 00154 00155 #endif