00001
00002 #include "figureCuttingModel.h"
00003
00004
00005
00006
00007 figureCuttingModel::figureCuttingModel()
00008 {
00009 _inversModel = vtkTransform::New();
00010 _matrixModel = vtkTransform::New();
00011 _matrixVisual = vtkTransform::New();
00012
00013 _spcX=1;
00014 _spcY=1;
00015 _spcZ=1;
00016 }
00017
00018 figureCuttingModel::~figureCuttingModel()
00019 {
00020 _inversModel->Delete();
00021 }
00022
00023 void figureCuttingModel::SetPosition(double x,double y, double z)
00024 {
00025 _px=x;
00026 _py=y;
00027 _pz=z;
00028 }
00029
00030 void figureCuttingModel::SetScale(double sx,double sy, double sz)
00031 {
00032 _sx=sx;
00033 _sy=sy;
00034 _sz=sz;
00035 }
00036
00037 void figureCuttingModel::SetRotation(double alfa,double beta, double teta)
00038 {
00039 _alfa=alfa;
00040 _beta=beta;
00041 _teta=teta;
00042 }
00043
00044
00045 void figureCuttingModel::CalculeMatrix()
00046 {
00047 _matrixModel->Identity();
00048 _matrixModel->Translate(_px,_py,_pz);
00049 _matrixModel->RotateY(_beta);
00050 _matrixModel->RotateX(_alfa);
00051 _matrixModel->RotateY(_teta);
00052 _matrixModel->Scale(_sx,_sy,_sz);
00053
00054 _matrixVisual->Identity();
00055 _matrixVisual->Translate( _px*_spcX , _py*_spcY , _pz*_spcZ );
00056 _matrixVisual->RotateY(_beta);
00057 _matrixVisual->RotateX(_alfa);
00058 _matrixVisual->RotateY(_teta);
00059 _matrixVisual->Scale( _sx*_spcX , _sy*_spcY , _sz*_spcZ );
00060
00061 }
00062
00063
00064
00065 void figureCuttingModel::CalculeInversMatrix()
00066 {
00067 _inversModel->Identity ();
00068 _inversModel->Concatenate ( _matrixModel );
00069 _inversModel->Inverse();
00070 }
00071
00072 bool figureCuttingModel::IfPointInside(double x, double y, double z)
00073 {
00074 return true;
00075 }
00076
00077
00078 vtkTransform *figureCuttingModel::GetVtkTransform()
00079 {
00080 return _matrixVisual;
00081 }
00082
00083
00084
00085
00086
00087
00088
00089
00090 double figureCuttingModel::GetTheoricVolume()
00091 {
00092 return 0;
00093 }
00094
00095
00096 double figureCuttingModel::GetPositionX()
00097 {
00098 return _px;
00099 }
00100
00101 double figureCuttingModel::GetPositionY()
00102 {
00103 return _py;
00104 }
00105
00106 double figureCuttingModel::GetPositionZ()
00107 {
00108 return _pz;
00109 }
00110
00111 double figureCuttingModel::GetScaleX()
00112 {
00113 return _sx;
00114 }
00115
00116 double figureCuttingModel::GetScaleY()
00117 {
00118 return _sy;
00119 }
00120
00121 double figureCuttingModel::GetScaleZ()
00122 {
00123 return _sz;
00124 }
00125
00126 double figureCuttingModel::GetAngleAlfa()
00127 {
00128 return _alfa;
00129 }
00130
00131 double figureCuttingModel::GetAngleBeta()
00132 {
00133 return _beta;
00134 }
00135
00136 double figureCuttingModel::GetAngleTeta()
00137 {
00138 return _teta;
00139 }
00140
00141 char *figureCuttingModel::GetName()
00142 {
00143 return "--";
00144 }
00145
00146
00147 void figureCuttingModel::SetSpacing(double spcX,double spcY, double spcZ)
00148 {
00149 _spcX = spcX;
00150 _spcY = spcY;
00151 _spcZ = spcZ;
00152 }