1 #include "manualViewCircle.h"
4 // ----------------------------------------------------------------------------
5 // ----------------------------------------------------------------------------
6 // ----------------------------------------------------------------------------
10 manualViewCircle::manualViewCircle()
12 // _sizePointsContour=5; // default 100
14 // ----------------------------------------------------------------------------
15 manualViewCircle::~manualViewCircle()
20 // ----------------------------------------------------------------------------
21 manualViewCircle * manualViewCircle :: Clone()
23 manualViewCircle * clone = new manualViewCircle();
24 CopyAttributesTo(clone);
28 // ---------------------------------------------------------------------------
30 void manualViewCircle::CopyAttributesTo( manualViewCircle * cloneObject)
33 manualViewBaseContour::CopyAttributesTo(cloneObject);
37 // ----------------------------------------------------------------------------
39 void manualViewCircle::RefreshContour(){ // virtual
41 manualPoint *mpA,*mpB;
42 unsigned int i, np,nps;
46 np = GetNumberOfPoints( );
47 nps = _manContModel->GetNumberOfPointsSpline();
48 double deltaAngle=(3.14159265*2)/(nps-1);
53 mpA = _manContModel->GetManualPoint(0);
54 mpB = _manContModel->GetManualPoint(1);
55 difX = mpA->GetX() - mpB->GetX();
56 difY = mpA->GetY() - mpB->GetY();
57 radio = sqrt( difX*difX + difY*difY );
58 manualContourModelCircle *manContModelCir = (manualContourModelCircle*)_manContModel;
59 manContModelCir->SetRadio(radio);
61 for( i = 0; i < nps; i++ ) {
62 manContModelCir->GetSpline_i_Point(i, &XX, &YY, &ZZ);
63 // angle = deltaAngle*i;
64 // XX = cos(angle)*radio+mpA->GetX();
65 // YY = sin(angle)*radio+mpA->GetY();
67 _pts->SetPoint(i, XX*_spc[0] , YY*_spc[1] , ZZ*_spc[2] );
70 _pts->SetPoint(0, 0 , 0 , 0);
71 _pts->SetPoint(1, 0 , 0 , 0);
77 // ----------------------------------------------------------------------------
78 int manualViewCircle::GetType() // virtual
83 // ----------------------------------------------------------------------------
85 void manualViewCircle::GetMinMax(double &minX,double &minY, double &maxX, double &maxY)
87 manualPoint *mpA,*mpB;
91 np = GetNumberOfPoints( );
94 mpA = _manContModel->GetManualPoint(0);
95 mpB = _manContModel->GetManualPoint(1);
96 difX = mpA->GetX() - mpB->GetX();
97 difY = mpA->GetY() - mpB->GetY();
98 radio = sqrt( difX*difX + difY*difY );
99 minX=mpA->GetX()-radio;
100 minY=mpA->GetY()-radio;
101 maxX=mpA->GetX()+radio;
102 maxY=mpA->GetY()+radio;
112 // ----------------------------------------------------------------------------
113 bool manualViewCircle::ifTouchContour(int x,int y, int z) // virtual
116 double px1=99999,py1=99999,px2=-9999,py2=-99999;
118 GetMinMax(px1,py1, px2, py2);
123 TransfromeCoordViewWorld(xx,yy,zz);
127 double ddx=GetRange();
128 double ddy=GetRange();
130 if ((xx>px1-ddx)&&(xx<px2+ddx) && (yy>py1-ddy)&&(yy<py2+ddy))
135 if ((xx>px1+ddx)&&(xx<px2-ddx) && (yy>py1+ddy)&&(yy<py2-ddy))
140 if ((ok1==true) && (ok2==false))
149 // ----------------------------------------------------------------------------
151 void manualViewCircle::InitMove(int x, int y, int z) // virtual
157 TransfromeCoordViewWorld(XX,YY,ZZ);
159 if (_manContModel->GetSizeLstPoints()==2){
160 mp = _manContModel->GetManualPoint(0);
161 _dp0[0]= mp->GetX() - XX;
162 _dp0[1]= mp->GetY() - YY;
165 mp = _manContModel->GetManualPoint(1);
166 _dp1[0]= mp->GetX() - XX;
167 _dp1[1]= mp->GetY() - YY;
170 mp = _manContModel->GetManualPoint(2);
171 _dp2[0]= mp->GetX() - XX;
172 _dp2[1]= mp->GetY() - YY;
175 mp = _manContModel->GetManualPoint(3);
176 _dp3[0]= mp->GetX() - XX;
177 _dp3[1]= mp->GetY() - YY;
184 // ----------------------------------------------------------------------------
185 void manualViewCircle::MoveContour(int x, int y, int z) // virtual
191 TransfromeCoordViewWorld(XX,YY,ZZ);
193 mp = _manContModel->GetManualPoint(0);
194 mp->SetPoint(_dp0[0]+XX,_dp0[1]+YY,_dp0[2]);
196 mp = _manContModel->GetManualPoint(1);
197 mp->SetPoint(_dp1[0]+XX,_dp1[1]+YY,_dp0[2]);
199 // mp = _manContModel->GetManualPoint(2);
200 // mp->SetPoint(_dp2[0]+XX,_dp2[1]+YY,_dp0[2]);
202 // mp = _manContModel->GetManualPoint(3);
203 // mp->SetPoint(_dp3[0]+XX,_dp3[1]+YY,_dp0[2]);
207 // UpdateViewPoint(2);
208 // UpdateViewPoint(3);