#ifndef __vtkRadialThicknessCalculate_h #define __vtkRadialThicknessCalculate_h #include "vtkPolyData.h" #include "vtkFloatArray.h" #include "vtkIdList.h" #include class vtkRadialThicknessCalculate { public: void SetMasterMesh(vtkPolyData* polyData); void SetSupplementaryMesh(vtkPolyData* polyData); void SetDirectionsFileName(std::string fileName); void SetThicknessFileName(std::string fileName); void StartThicknessCalculate(); vtkFloatArray* GetRadialThickness(); vtkFloatArray* GetNormalizedRadialThickness(); vtkRadialThicknessCalculate(); ~vtkRadialThicknessCalculate(); protected: void CalculateDistance2Mesh(vtkFloatArray* distance, vtkPolyData* polyData); void CalculateDistance2Master(); void CalculateDistance2Supplementary(); void CalculateNormalizedThickness(vtkFloatArray* originalThickness, vtkFloatArray* normalizedThickness); bool Write2File(vtkFloatArray* thickness, std::string fileName); bool ReadDirectionsFromFile(); void NormalizeDirections(vtkFloatArray* originalDirections, vtkFloatArray* normalizedDirections); bool RayTriangleIntersect(float direction[3], double v0[3], double v1[3], double v2[3], float *t, float *u, float *v); vtkPolyData* polyDataMaster; vtkPolyData* polyDataSupplementary; vtkFloatArray* distance2Master; vtkFloatArray* distance2Supplementary; vtkFloatArray* radialThickness; vtkFloatArray* normalizedRadialThickness; std::string directionsFile; std::string thicknessFile; bool directionsFileSet; bool thicknessFileSet; float center[3]; // Create a float array which represents the directions. vtkFloatArray* directions; }; #endif