• Skip to content
  • Skip to link menu
KDE 4.2 API Reference
  • KDE API Reference
  • kdeedu
  • Sitemap
  • Contact Us
 

kig

common.h

Go to the documentation of this file.
00001 
00022 #ifndef KIG_MISC_COMMON_H
00023 #define KIG_MISC_COMMON_H
00024 
00025 #include "coordinate.h"
00026 #include "rect.h"
00027 
00028 #include <qrect.h>
00029 
00030 #include <vector>
00031 #include <assert.h>
00032 
00033 class ObjectImp;
00034 class KigWidget;
00035 
00036 extern const double double_inf;
00037 
00043 double getDoubleFromUser( const QString& caption, const QString& label, double value,
00044                           QWidget* parent, bool* ok, double min, double max, int decimals );
00045 
00049 class LineData {
00050 public:
00056   LineData() : a(), b() {}
00060   LineData( const Coordinate& na, const Coordinate& nb ) : a( na ), b( nb ) {}
00064   Coordinate a;
00068   Coordinate b;
00072   const Coordinate dir() const { return b - a; }
00076   double length() const { return ( b - a ).length(); }
00077 
00081   bool isParallelTo( const LineData& l ) const;
00082 
00086   bool isOrthogonalTo( const LineData& l ) const;
00087 };
00088 
00092 bool operator==( const LineData& l, const LineData& r );
00093 
00098 Coordinate calcRotatedPoint( const Coordinate& a, const Coordinate& c, const double arc );
00099 
00104 Coordinate calcPointOnPerpend( const LineData& l, const Coordinate& t );
00105 
00110 Coordinate calcPointOnPerpend( const Coordinate& dir, const Coordinate& t );
00111 
00116 Coordinate calcPointOnParallel( const LineData& l, const Coordinate& t );
00117 
00122 Coordinate calcPointOnParallel( const Coordinate& dir, const Coordinate& t );
00123 
00124 
00128 Coordinate calcIntersectionPoint( const LineData& l, const LineData& m );
00129 
00139 const Coordinate calcCircleLineIntersect( const Coordinate& c,
00140                                           const double sqr,
00141                                           const LineData& l,
00142                                           int side );
00143 
00153 const Coordinate calcArcLineIntersect( const Coordinate& c, const double sqr,
00154                                        const double sa, const double angle,
00155                                        const LineData& l, int side );
00156 
00161 const Coordinate calcPointProjection( const Coordinate& p,
00162                                       const LineData& l );
00163 
00167 double calcDistancePointLine( const Coordinate& p,
00168                               const LineData& l );
00169 
00174 void calcBorderPoints( Coordinate& p1, Coordinate& p2, const Rect& r );
00178 void calcBorderPoints( double& xa, double& xb, double& ya, double& yb, const Rect& r);
00182 const LineData calcBorderPoints( const LineData& l, const Rect& r );
00183 
00187 void calcRayBorderPoints( const Coordinate& a, Coordinate& b, const Rect& r );
00188 
00193 const Coordinate calcCenter(
00194   const Coordinate& a, const Coordinate& b, const Coordinate& c );
00195 
00199 void calcRayBorderPoints( const double xa, const double xb, double& ya,
00200                           double& yb, const Rect& r );
00201 
00205 const Coordinate calcMirrorPoint( const LineData& l,
00206                                   const Coordinate& p );
00207 
00211 bool areCollinear( const Coordinate& p1, const Coordinate& p2,
00212                const Coordinate& p3 );
00213 
00218 bool isSingular( const double& a, const double& b,
00219                  const double& c, const double& d );
00220 
00225 bool isOnLine( const Coordinate& o, const Coordinate& a,
00226                const Coordinate& b, const double fault );
00227 
00233 bool isOnSegment( const Coordinate& o, const Coordinate& a,
00234                   const Coordinate& b, const double fault );
00235 
00236 bool isOnRay( const Coordinate& o, const Coordinate& a,
00237               const Coordinate& b, const double fault );
00238 
00239 bool isOnArc( const Coordinate& o, const Coordinate& c, const double r,
00240               const double sa, const double a, const double fault );
00241 
00242 Coordinate calcCircleRadicalStartPoint( const Coordinate& ca,
00243                                         const Coordinate& cb,
00244                                         double sqra, double sqrb );
00245 
00251 bool lineInRect( const Rect& r, const Coordinate& a, const Coordinate& b,
00252                  const int width, const ObjectImp* imp, const KigWidget& w );
00253 
00254 template <typename T>
00255 T kigMin( const T& a, const T& b )
00256 {
00257   return a < b ? a : b;
00258 }
00259 
00260 template <typename T>
00261 T kigMax( const T& a, const T& b )
00262 {
00263   return a > b ? a : b;
00264 }
00265 
00266 template <typename T>
00267 T kigAbs( const T& a )
00268 {
00269   return a >= 0 ? a : -a;
00270 }
00271 
00272 template <typename T>
00273 int kigSgn( const T& a )
00274 {
00275   return a == 0 ? 0 : a > 0 ? +1 : -1;
00276 }
00277 
00278 extern const double test_threshold;
00279 
00280 #endif

kig

Skip menu "kig"
  • Main Page
  • Namespace List
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Namespace Members
  • Class Members

kdeedu

Skip menu "kdeedu"
  • kalzium
  • kanagram
  • kig
  •   lib
  • klettres
  • kstars
  • libkdeedu
  •   keduvocdocument
  •   docs
  •   src
  • parley
  •   stepcore
Generated for kdeedu by doxygen 1.5.4
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal