wxMPRBaseData.cxx
Go to the documentation of this file.00001
00002
00003 #include <vtkPlanes.h>
00004 #include <vtkProperty.h>
00005 #include <vtkPolyData.h>
00006 #include <vtkDataSet.h>
00007 #include <vtkCellArray.h>
00008 #include <vtkTransform.h>
00009 #include <vtkTransformFilter.h>
00010 #include <vtkDataSetReader.h>
00011
00012 #include "wxMPRBaseData.h"
00013 #include "pPlotter/HistogramDialog.h"
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 vtkMPRBaseData::vtkMPRBaseData()
00026 {
00027 _x=0;
00028 _y=0;
00029 _z=0;
00030 _x1 = 0;
00031 _x2 = 0;
00032 _y1 = 0;
00033 _y2 = 0;
00034 _z1 = 0;
00035 _z2 = 0;
00036 _transformOrientation = NULL;
00037 _marImageData = NULL;
00038 }
00039
00040 vtkMPRBaseData::~vtkMPRBaseData()
00041 {
00042 if (_marImageData) delete _marImageData;
00043 if (_transformOrientation) _transformOrientation ->Delete();
00044 }
00045
00046 void vtkMPRBaseData::Configure()
00047 {
00048 vtkImageData* img = _marImageData->GetImageData();
00049 if(img !=NULL){
00050 img->GetExtent (_x1,_x2,_y1,_y2,_z1,_z2);
00051
00052
00053 }
00054 if(_transformOrientation==NULL){
00055 _transformOrientation=vtkTransform::New();
00056 }
00057 _transformOrientation->Identity();
00058 }
00059
00060 void vtkMPRBaseData::GetDimensionExtention(int *x1,int *x2,int *y1,int *y2,int *z1,int *z2)
00061 {
00062 *x1=_x1;
00063 *x2=_x2;
00064 *y1=_y1;
00065 *y2=_y2;
00066 *z1=_z1;
00067 *z2=_z2;
00068 }
00069
00070
00071
00072 int vtkMPRBaseData::GetMaxPositionX( )
00073 {
00074 return _x2;
00075 }
00076
00077 int vtkMPRBaseData::GetMaxPositionY( )
00078 {
00079 return _y2;
00080 }
00081
00082 int vtkMPRBaseData::GetMaxPositionZ( )
00083 {
00084 return _z2;
00085 }
00086
00087 double vtkMPRBaseData::GetX()
00088 {
00089
00090 return _x;
00091 }
00092
00093 double vtkMPRBaseData::GetY()
00094 {
00095 return _y;
00096 }
00097
00101 void vtkMPRBaseData::SetX(double x)
00102 {
00103
00104 int ext[6];
00105 double* origin;
00106 vtkImageData* img = _marImageData->GetImageData();
00107 if(img!=NULL){
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118 img->GetExtent(ext);
00119 origin = img->GetOrigin();
00120 if (x < ext[0])
00121 {
00122 x=ext[0] + origin[0];
00123 }
00124 if (x > ext[1])
00125 {
00126 x=ext[1] + origin[0];
00127 }
00128
00129 _x=x;
00130 }
00131 }
00132
00136 void vtkMPRBaseData::SetY(double y)
00137 {
00138
00139 int ext[6];
00140 double* origin;
00141 vtkImageData* img = _marImageData->GetImageData();
00142 if(img!=NULL){
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153 img->GetExtent(ext);
00154 origin = img->GetOrigin();
00155 if (y<ext[2])
00156 {
00157 y=ext[2] + origin[1];
00158 }
00159 if (y > ext[3])
00160 {
00161 y=ext[3] + origin[1];
00162 }
00163 _y=y;
00164 }
00165 }
00166
00167 vtkTransform *vtkMPRBaseData::GetTransformOrientation()
00168 {
00169 return _transformOrientation;
00170 }
00171
00172 void vtkMPRBaseData::SetNormal(double nx, double ny, double nz)
00173 {
00174 double alfa = atan2(ny,nx) * 180.0 / 3.1416;
00175 double beta = atan2( nz, sqrt( nx*nx + ny*ny ) ) * 180.0 / 3.1416;
00176 _transformOrientation->Identity();
00177 _transformOrientation->RotateWXYZ(alfa,0,0,1);
00178 _transformOrientation->RotateWXYZ(-beta,0,1,0);
00179 }
00180
00181 void vtkMPRBaseData::InitTransformOrientation(vtkTransform *trans)
00182 {
00183 _transformOrientation->SetMatrix( trans->GetMatrix() );
00184 }
00185
00186
00187
00188
00189
00190
00191