]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/manualContour/manualViewCircle.cpp
75cba5f5384dd3c7e43d3e97ee9393c6fcdcf42f
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / manualContour / manualViewCircle.cpp
1 #include "manualViewCircle.h"
2
3
4 // ----------------------------------------------------------------------------
5 // ----------------------------------------------------------------------------
6 // ----------------------------------------------------------------------------
7
8 // EED08
9
10 manualViewCircle::manualViewCircle()
11 {
12 //      _sizePointsContour=5;   // default 100
13 }
14 // ----------------------------------------------------------------------------
15 manualViewCircle::~manualViewCircle()
16 {
17 }
18
19
20 // ----------------------------------------------------------------------------
21 manualViewCircle * manualViewCircle :: Clone()
22 {
23         manualViewCircle * clone = new manualViewCircle();
24         CopyAttributesTo(clone);
25         return clone;
26 }
27
28 // ---------------------------------------------------------------------------
29
30 void manualViewCircle::CopyAttributesTo( manualViewCircle * cloneObject)
31 {
32         // Fathers object
33         manualViewBaseContour::CopyAttributesTo(cloneObject);
34 }
35
36
37 // ----------------------------------------------------------------------------
38 /*
39 void manualViewCircle::RefreshContour(){ // virtual
40
41         manualPoint     *mpA,*mpB;
42     unsigned int i, np,nps;
43         double angle,radio;
44         double difX,difY;
45         double XX,YY,ZZ;
46     np  = GetNumberOfPoints( );
47         nps = _manContModel->GetNumberOfPointsSpline();
48         double deltaAngle=(3.14159265*2)/(nps-1);
49         if ( np > 0)
50         {
51                 if (np==2)
52                 {
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);
60
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();
66                                 ZZ = mpA->GetZ();
67                                 _pts->SetPoint(i, XX*_spc[0] , YY*_spc[1] , ZZ*_spc[2] );
68                         } //  rof
69                 } else {
70                                 _pts->SetPoint(0, 0 , 0 , 0);
71                                 _pts->SetPoint(1, 0 , 0 , 0);
72                 } // if
73         }
74 }
75 */
76
77 // ----------------------------------------------------------------------------
78 int manualViewCircle::GetType() // virtual
79 {
80         return 3;
81 }
82
83 // ----------------------------------------------------------------------------
84
85 void manualViewCircle::GetMinMax(double &minX,double &minY, double &maxX, double &maxY)
86 {
87         manualPoint     *mpA,*mpB;
88     unsigned int  np;
89         double radio;
90         double difX,difY;
91     np  = GetNumberOfPoints( );
92         if (np==2)
93         {
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;
103         } else {
104                 minX=0;
105                 maxX=0;
106                 minY=0;
107                 maxY=0;
108         }
109 }
110
111 /*
112 // ----------------------------------------------------------------------------
113 bool manualViewCircle::ifTouchContour(int x,int y, int z) // virtual
114 {
115         bool    result=false;
116         double  px1=99999,py1=99999,px2=-9999,py2=-99999;
117
118         GetMinMax(px1,py1, px2, py2);
119
120         double xx=x;
121         double yy=y;
122         double zz=z;
123         TransfromCoordViewWorld(xx,yy,zz);
124
125         bool ok1=false;
126         bool ok2=false;
127         double ddx=GetRange();
128         double ddy=GetRange();
129
130         if ((xx>px1-ddx)&&(xx<px2+ddx) &&  (yy>py1-ddy)&&(yy<py2+ddy))
131         {
132                 ok1=true;
133         }
134
135         if ((xx>px1+ddx)&&(xx<px2-ddx) &&  (yy>py1+ddy)&&(yy<py2-ddy))
136         {
137                 ok2=true;
138         }
139
140         if ((ok1==true) && (ok2==false))
141         {
142                 result=true;
143         }
144
145         return result;
146 }
147 */
148
149 // ----------------------------------------------------------------------------
150
151 void manualViewCircle::InitMove(int x, int y, int z)  // virtual
152 {
153         manualPoint *mp;
154         double XX=x;
155         double YY=y;
156         double ZZ=z;
157         TransfromCoordViewWorld(XX,YY,ZZ);
158
159         if (_manContModel->GetSizeLstPoints()==2){
160                 mp = _manContModel->GetManualPoint(0);
161                 _dp0[0]= mp->GetX() - XX;
162                 _dp0[1]= mp->GetY() - YY;
163                 _dp0[2]= mp->GetZ();
164
165                 mp = _manContModel->GetManualPoint(1);
166                 _dp1[0]= mp->GetX() - XX;
167                 _dp1[1]= mp->GetY() - YY;
168                 _dp1[2]= mp->GetZ();
169 /*
170                 mp = _manContModel->GetManualPoint(2);
171                 _dp2[0]= mp->GetX() - XX;
172                 _dp2[1]= mp->GetY() - YY;
173                 _dp2[2]= mp->GetZ();
174
175                 mp = _manContModel->GetManualPoint(3);
176                 _dp3[0]= mp->GetX() - XX;
177                 _dp3[1]= mp->GetY() - YY;
178                 _dp3[2]= mp->GetZ();
179 */
180         }
181 }
182
183
184 // ----------------------------------------------------------------------------
185 void manualViewCircle::MoveContour(int x, int y, int z) // virtual
186 {
187         manualPoint *mp;
188         double XX=x;
189         double YY=y;
190         double ZZ=z;
191         TransfromCoordViewWorld(XX,YY,ZZ);
192
193         mp = _manContModel->GetManualPoint(0);
194         mp->SetPoint(_dp0[0]+XX,_dp0[1]+YY,_dp0[2]);
195
196         mp = _manContModel->GetManualPoint(1);
197         mp->SetPoint(_dp1[0]+XX,_dp1[1]+YY,_dp0[2]);
198
199 //      mp = _manContModel->GetManualPoint(2);
200 //      mp->SetPoint(_dp2[0]+XX,_dp2[1]+YY,_dp0[2]);
201
202 //      mp = _manContModel->GetManualPoint(3);
203 //      mp->SetPoint(_dp3[0]+XX,_dp3[1]+YY,_dp0[2]);
204
205         UpdateViewPoint(0);
206         UpdateViewPoint(1);
207 //      UpdateViewPoint(2);
208 //      UpdateViewPoint(3);
209
210 }