1 #include "manualView3VContour.h"
4 // ----------------------------------------------------------------------------
5 // ----------------------------------------------------------------------------
6 // ----------------------------------------------------------------------------
8 manualView3VContour::manualView3VContour(int type)
11 // JSTG 25-02-08 ------------------------------
12 //_manContModel= new manualContourModel();
13 //---------------------------------------------
15 // ----------------------------------------------------------------------------
16 manualView3VContour::~manualView3VContour()
22 // ----------------------------------------------------------------------------
23 manualView3VContour * manualView3VContour :: Clone()
25 manualView3VContour * clone = new manualView3VContour( GetType() );
26 CopyAttributesTo(clone);
30 // ---------------------------------------------------------------------------
32 void manualView3VContour::CopyAttributesTo( manualView3VContour * cloneObject)
35 manualViewContour::CopyAttributesTo(cloneObject);
38 int manualView3VContour::GetType()
43 // ----------------------------------------------------------------------------
44 void manualView3VContour::FilterCordinateXYZ(double &x,double &y,double &z)
59 // ----------------------------------------------------------------------------
61 void manualView3VContour::RefreshContour() // virtula
63 manualViewContour::RefreshContour();
77 // JSTG 25-02-08 ----------------------------------------
78 //int nps = GetNumberOfPointsSpline();
79 int nps = _manContModel->GetNumberOfPointsSpline();
80 //-------------------------------------------------------
81 for( i = 0; i < nps; i++ )
83 _pts->GetPoint( i, pp );
84 FilterCordinateXYZ(pp[0],pp[1],pp[2]);
87 _pts->SetPoint( i, pp[0] , pp[1] ,pp[2] );
92 if (pp[0] < _minX) { _minX = pp[0]; }
93 if (pp[1] < _minY) { _minY = pp[1]; }
94 if (pp[2] < _minZ) { _minZ = pp[2]; }
95 if (pp[0] > _maxX) { _maxX = pp[0]; }
96 if (pp[1] > _maxY) { _maxY = pp[1]; }
97 if (pp[2] > _maxZ) { _maxY = pp[2]; }
103 // ----------------------------------------------------------------------------
105 void manualView3VContour::UpdateViewPoint(int id){ // virtual
107 manualPoint *mp = _manContModel->GetManualPoint(id);
112 FilterCordinateXYZ(x,y,z);
113 _lstViewPoints[id]->SetPositionXY( x , y ,GetRange(), z );
116 // ----------------------------------------------------------------------------
118 int manualView3VContour::GetIdPoint(int x, int y, int z) // virtual
121 if (_manContModel!=NULL){
125 TransfromCoordViewWorld(xx,yy,zz,-1);
126 ii=_manContModel->GetIdPoint(xx,yy,zz,GetRange(),_type);
131 // ----------------------------------------------------------------------------
132 bool manualView3VContour::ifTouchContour(int x,int y,int z){ // virtual
140 TransfromCoordViewWorld(xx,yy,zz,-1);
147 if ( (xx>=_minX) && (yy>=_minY) && (xx<=_maxX) && (yy<=_maxY)) { // boundaring box
148 unsigned int i, nps,nps_t;
149 nps = _sizePointsContour;
150 if (this->_manContModel->IfCloseContour()==true)
156 FilterCordinateXYZ(xx,yy,zz);
158 for( i = 0; i < nps_t; i++ ) {
159 _pts->GetPoint(i%nps, ppA);
160 _pts->GetPoint((i+1)%nps, ppB);
161 FilterCordinateXYZ(ppA[0],ppA[1],ppA[2]);
162 FilterCordinateXYZ(ppB[0],ppB[1],ppB[2]);
163 d1= sqrt( (ppA[0]-xx)*(ppA[0]-xx) + (ppA[1]-yy)*(ppA[1]-yy) + (ppA[2]-zz)*(ppA[2]-zz));
164 d2= sqrt( (ppB[0]-xx)*(ppB[0]-xx) + (ppB[1]-yy)*(ppB[1]-yy) + (ppB[2]-zz)*(ppB[2]-zz));
165 d3= sqrt( (ppB[0]-ppA[0])*(ppB[0]-ppA[0]) + (ppB[1]-ppA[1])*(ppB[1]-ppA[1]) + (ppB[2]-ppA[2])*(ppB[2]-ppA[2]));
166 if ( ((d1+d2)>=d3) && ((d1+d2)<=d3*1.3) ) {