00001 #include "manualContourModelCircle.h" 00002 00003 // ---------------------------------------------------------------------------- 00004 // ---------------------------------------------------------------------------- 00005 // ---------------------------------------------------------------------------- 00006 00007 manualContourModelCircle::manualContourModelCircle() 00008 : manualContourModel() 00009 { 00010 } 00011 00012 manualContourModelCircle::~manualContourModelCircle() 00013 { 00014 } 00015 00016 00017 // ---------------------------------------------------------------------------- 00018 manualContourModelCircle * manualContourModelCircle :: Clone() // virtual 00019 { 00020 manualContourModelCircle * clone = new manualContourModelCircle(); 00021 CopyAttributesTo(clone); 00022 return clone; 00023 } 00024 00025 // --------------------------------------------------------------------------- 00026 00027 void manualContourModelCircle::CopyAttributesTo( manualContourModelCircle * cloneObject) 00028 { 00029 // Fathers object 00030 manualContourModel::CopyAttributesTo(cloneObject); 00031 } 00032 00033 //---------------------------------------------------------------- 00034 int manualContourModelCircle::GetTypeModel() //virtual 00035 { 00036 return 3; 00037 } 00038 00039 //---------------------------------------------------------------- 00040 void manualContourModelCircle::GetSpline_i_Point(int i, double *x, double *y, double *z) // virtal 00041 { 00042 double angle = _deltaAngle*i; 00043 *x = _radio*cos(angle) + _centerX; 00044 *y = _radio*sin(angle) + _centerY; 00045 *z = _centerZ; 00046 } 00047 00048 // 00049 // --------------------------------------------------------------------------- 00050 void manualContourModelCircle::UpdateSpline() // virtal 00051 { 00052 manualPoint *mpA,*mpB; 00053 double difX,difY; 00054 int np = GetSizeLstPoints( ); 00055 int nps = GetNumberOfPointsSpline(); 00056 _deltaAngle=(3.14159265*2)/(nps-1); 00057 00058 if (np==2){ 00059 mpA = GetManualPoint(0); 00060 mpB = GetManualPoint(1); 00061 difX = mpA->GetX() - mpB->GetX(); 00062 difY = mpA->GetY() - mpB->GetY(); 00063 _radio = sqrt( difX*difX + difY*difY ); 00064 _centerX = mpA->GetX(); 00065 _centerY = mpA->GetY(); 00066 _centerZ = mpA->GetZ(); 00067 } else { 00068 _radio = -1; 00069 _centerX = -1; 00070 _centerY = -1; 00071 _centerZ = -1; 00072 } 00073 }