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 _transformOrientation = NULL;
00031 _marImageData = NULL;
00032 }
00033
00034 vtkMPRBaseData::~vtkMPRBaseData()
00035 {
00036 if (_marImageData) delete _marImageData;
00037 if (_transformOrientation) _transformOrientation ->Delete();
00038 }
00039
00040 void vtkMPRBaseData::Configure()
00041 {
00042 vtkImageData* img = _marImageData->GetImageData();
00043 if(img !=NULL){
00044 img->GetExtent (_x1,_x2,_y1,_y2,_z1,_z2);
00045
00046 if(_transformOrientation==NULL){
00047 _transformOrientation=vtkTransform::New();
00048 }
00049 _transformOrientation->Identity();
00050 }
00051 }
00052
00053 void vtkMPRBaseData::GetDimensionExtention(int *x1,int *x2,int *y1,int *y2,int *z1,int *z2)
00054 {
00055 *x1=_x1;
00056 *x2=_x2;
00057 *y1=_y1;
00058 *y2=_y2;
00059 *z1=_z1;
00060 *z2=_z2;
00061 }
00062
00063
00064
00065 int vtkMPRBaseData::GetMaxPositionX( )
00066 {
00067 return _x2;
00068 }
00069
00070 int vtkMPRBaseData::GetMaxPositionY( )
00071 {
00072 return _y2;
00073 }
00074
00075 int vtkMPRBaseData::GetMaxPositionZ( )
00076 {
00077 return _z2;
00078 }
00079
00080 double vtkMPRBaseData::GetX()
00081 {
00082
00083 return _x;
00084 }
00085
00086 double vtkMPRBaseData::GetY()
00087 {
00088 return _y;
00089 }
00090
00094 void vtkMPRBaseData::SetX(double x)
00095 {
00096
00097 int ext[6];
00098
00099 vtkImageData* img = _marImageData->GetImageData();
00100 if(img!=NULL){
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111 img->GetExtent(ext);
00112 if (x < ext[0])
00113 {
00114 x=ext[0];
00115 }
00116 if (x > ext[1])
00117 {
00118 x=ext[1];
00119 }
00120 _x=x;
00121 }
00122 }
00123
00127 void vtkMPRBaseData::SetY(double y)
00128 {
00129
00130 int ext[6];
00131 vtkImageData* img = _marImageData->GetImageData();
00132 if(img!=NULL){
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143 img->GetExtent(ext);
00144 if (y<ext[2])
00145 {
00146 y=ext[2];
00147 }
00148 if (y > ext[3])
00149 {
00150 y=ext[3];
00151 }
00152 _y=y;
00153 }
00154 }
00155
00156 vtkTransform *vtkMPRBaseData::GetTransformOrientation()
00157 {
00158 return _transformOrientation;
00159 }
00160
00161 void vtkMPRBaseData::SetNormal(double nx, double ny, double nz)
00162 {
00163 double alfa = atan2(ny,nx) * 180.0 / 3.1416;
00164 double beta = atan2( nz, sqrt( nx*nx + ny*ny ) ) * 180.0 / 3.1416;
00165 _transformOrientation->Identity();
00166 _transformOrientation->RotateWXYZ(alfa,0,0,1);
00167 _transformOrientation->RotateWXYZ(-beta,0,1,0);
00168 }
00169
00170 void vtkMPRBaseData::InitTransformOrientation(vtkTransform *trans)
00171 {
00172 _transformOrientation->SetMatrix( trans->GetMatrix() );
00173 }
00174
00175
00176
00177
00178
00179
00180