00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: $RCSfile: vtkMassProperties.h,v $ 00005 Language: C++ 00006 00007 Copyright (c) 1993-2002 Ken Martin, Will Schroeder, Bill Lorensen 00008 All rights reserved. 00009 See Copyright.txt or http://www.kitware.com/Copyright.htm for details. 00010 00011 This software is distributed WITHOUT ANY WARRANTY; without even 00012 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 00013 PURPOSE. See the above copyright notice for more information. 00014 00015 =========================================================================*/ 00057 #ifndef __vtkMassProperties_h 00058 #define __vtkMassProperties_h 00059 00060 #include "vtkProcessObject.h" 00061 00062 class vtkPolyData; 00063 00064 class VTK_GRAPHICS_EXPORT vtkMassProperties : public vtkProcessObject 00065 { 00066 public: 00068 static vtkMassProperties *New(); 00069 00070 vtkTypeRevisionMacro(vtkMassProperties,vtkProcessObject); 00071 void PrintSelf(ostream& os, vtkIndent indent); 00072 00074 double GetVolume() {this->Update(); return this->Volume;} 00075 00077 00079 double GetVolumeX() {this->Update(); return this->VolumeX;} 00080 double GetVolumeY() {this->Update(); return this->VolumeY;} 00081 double GetVolumeZ() {this->Update(); return this->VolumeZ;} 00083 00085 00087 double GetKx() {this->Update(); return this->Kx;} 00088 double GetKy() {this->Update(); return this->Ky;} 00089 double GetKz() {this->Update(); return this->Kz;} 00091 00093 double GetSurfaceArea() {this->Update(); return this->SurfaceArea;} 00094 00096 00099 double GetNormalizedShapeIndex() 00100 {this->Update(); return this->NormalizedShapeIndex;} 00102 00103 void Update(); 00104 00105 void SetInput(vtkPolyData *input); 00106 vtkPolyData *GetInput(); 00107 00108 protected: 00109 vtkMassProperties(); 00110 ~vtkMassProperties(); 00111 00112 void Execute(); 00113 00114 double SurfaceArea; 00115 double Volume; 00116 double VolumeX; 00117 double VolumeY; 00118 double VolumeZ; 00119 double Kx; 00120 double Ky; 00121 double Kz; 00122 double NormalizedShapeIndex; 00123 vtkTimeStamp ExecuteTime; 00124 00125 private: 00126 vtkMassProperties(const vtkMassProperties&); // Not implemented. 00127 void operator=(const vtkMassProperties&); // Not implemented. 00128 }; 00129 00130 #endif 00131 00132