|
Kig Python Scripting API Documentation |
||||
|
00001 00021 #ifndef KIG_MISC_CONIC_COMMON_H 00022 #define KIG_MISC_CONIC_COMMON_H 00023 00024 #include "coordinate.h" 00025 #include <vector> 00026 #include "kignumerics.h" 00027 00028 class ConicPolarData; 00029 class Transformation; 00030 class LineData; 00031 00037 class ConicCartesianData 00038 { 00039 public: 00040 double coeffs[6]; 00041 ConicCartesianData(); 00047 explicit ConicCartesianData( const ConicPolarData& d ); 00053 ConicCartesianData( double a, double b, double c, 00054 double d, double e, double f ) 00055 { 00056 coeffs[0] = a; 00057 coeffs[1] = b; 00058 coeffs[2] = c; 00059 coeffs[3] = d; 00060 coeffs[4] = e; 00061 coeffs[5] = f; 00062 } 00063 ConicCartesianData( const double incoeffs[6] ); 00064 00070 static ConicCartesianData invalidData(); 00076 bool valid() const; 00077 }; 00078 00085 class ConicPolarData 00086 { 00087 public: 00094 explicit ConicPolarData( const ConicCartesianData& data ); 00095 explicit ConicPolarData(); 00100 ConicPolarData( const Coordinate& focus1, double dimen, 00101 double ecostheta0, double esintheta0 ); 00102 00106 Coordinate focus1; 00110 double pdimen; 00114 double ecostheta0; 00118 double esintheta0; 00119 }; 00120 00121 bool operator==( const ConicPolarData& lhs, const ConicPolarData& rhs ); 00122 00137 enum LinearConstraints { 00138 noconstraint, zerotilt, parabolaifzt, circleifzt, 00139 equilateral, ysymmetry, xsymmetry 00140 }; 00141 00153 const ConicCartesianData calcConicThroughPoints ( 00154 const std::vector<Coordinate>& points, 00155 const LinearConstraints c1 = noconstraint, 00156 const LinearConstraints c2 = noconstraint, 00157 const LinearConstraints c3 = noconstraint, 00158 const LinearConstraints c4 = noconstraint, 00159 const LinearConstraints c5 = noconstraint); 00160 00169 const ConicPolarData calcConicBFFP( 00170 const std::vector<Coordinate>& args, 00171 int type ); 00172 00177 const ConicPolarData calcConicBDFP( 00178 const LineData& d, const Coordinate& f, const Coordinate& p ); 00179 00184 const ConicCartesianData calcConicByAsymptotes( 00185 const LineData& line1, 00186 const LineData& line2, 00187 const Coordinate& p ); 00188 00197 const LineData calcConicPolarLine ( 00198 const ConicCartesianData& data, 00199 const Coordinate& cpole, 00200 bool& valid ); 00201 00210 const Coordinate calcConicPolarPoint ( 00211 const ConicCartesianData& data, 00212 const LineData& polar ); 00213 00230 const Coordinate calcConicLineIntersect( const ConicCartesianData& c, 00231 const LineData& l, 00232 double knownparam, 00233 int which ); 00234 00244 const LineData calcConicAsymptote( 00245 const ConicCartesianData data, 00246 int which, bool &valid ); 00247 00261 const LineData calcConicRadical( const ConicCartesianData& cequation1, 00262 const ConicCartesianData& cequation2, 00263 int which, int zeroindex, bool& valid ); 00264 00274 const ConicCartesianData calcConicTransformation ( 00275 const ConicCartesianData& data, 00276 const Transformation& t, bool& valid ); 00277 00278 #endif // KIG_MISC_CONIC_COMMON_H