VTK
|
00001 /*========================================================================= 00002 00003 Program: Visualization Toolkit 00004 Module: vtkUnstructuredGridLinearRayIntegrator.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 2004 Sandia Corporation. 00018 * Under the terms of Contract DE-AC04-94AL85000, there is a non-exclusive 00019 * license for use of this work by or on behalf of the 00020 * U.S. Government. Redistribution and use in source and binary forms, with 00021 * or without modification, are permitted provided that this Notice and any 00022 * statement of authorship are reproduced on all copies. 00023 */ 00024 00045 #ifndef __vtkUnstructuredGridLinearRayIntegrator_h 00046 #define __vtkUnstructuredGridLinearRayIntegrator_h 00047 00048 #include "vtkUnstructuredGridVolumeRayIntegrator.h" 00049 00050 class vtkLinearRayIntegratorTransferFunction; 00051 class vtkVolumeProperty; 00052 00053 class VTK_VOLUMERENDERING_EXPORT vtkUnstructuredGridLinearRayIntegrator : public vtkUnstructuredGridVolumeRayIntegrator 00054 { 00055 public: 00056 vtkTypeMacro(vtkUnstructuredGridLinearRayIntegrator, 00057 vtkUnstructuredGridVolumeRayIntegrator); 00058 static vtkUnstructuredGridLinearRayIntegrator *New(); 00059 virtual void PrintSelf(ostream &os, vtkIndent indent); 00060 00061 virtual void Initialize(vtkVolume *volume, vtkDataArray *scalars); 00062 00063 virtual void Integrate(vtkDoubleArray *intersectionLengths, 00064 vtkDataArray *nearIntersections, 00065 vtkDataArray *farIntersections, 00066 float color[4]); 00067 00069 00071 static void IntegrateRay(double length, 00072 double intensity_front, double attenuation_front, 00073 double intensity_back, double attenuation_back, 00074 float color[4]); 00075 static void IntegrateRay(double length, 00076 const double color_front[3], 00077 double attenuation_front, 00078 const double color_back[3], 00079 double attenuation_back, 00080 float color[4]); 00082 00084 00086 static float Psi(float length, 00087 float attenuation_front, float attenuation_back); 00089 00090 protected: 00091 vtkUnstructuredGridLinearRayIntegrator(); 00092 ~vtkUnstructuredGridLinearRayIntegrator(); 00093 00094 vtkVolumeProperty *Property; 00095 00096 vtkLinearRayIntegratorTransferFunction *TransferFunctions; 00097 vtkTimeStamp TransferFunctionsModified; 00098 int NumIndependentComponents; 00099 00100 private: 00101 vtkUnstructuredGridLinearRayIntegrator(const vtkUnstructuredGridLinearRayIntegrator&); // Not implemented. 00102 void operator=(const vtkUnstructuredGridLinearRayIntegrator&); // Not implemented. 00103 }; 00104 00105 #endif //__vtkUnstructuredGridLinearRayIntegrator_h