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

kig

common.h File Reference

#include "coordinate.h"
#include "rect.h"
#include <qrect.h>
#include <vector>
#include <assert.h>

Include dependency graph for misc/common.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.


Classes

class  LineData
 Simple class representing a line. More...

Functions

double getDoubleFromUser (const QString &caption, const QString &label, double value, QWidget *parent, bool *ok, double min, double max, int decimals)
bool operator== (const LineData &l, const LineData &r)
Coordinate calcRotatedPoint (const Coordinate &a, const Coordinate &c, const double arc)
Coordinate calcPointOnPerpend (const LineData &l, const Coordinate &t)
Coordinate calcPointOnPerpend (const Coordinate &dir, const Coordinate &t)
Coordinate calcPointOnParallel (const LineData &l, const Coordinate &t)
Coordinate calcPointOnParallel (const Coordinate &dir, const Coordinate &t)
Coordinate calcIntersectionPoint (const LineData &l, const LineData &m)
const Coordinate calcCircleLineIntersect (const Coordinate &c, const double sqr, const LineData &l, int side)
const Coordinate calcArcLineIntersect (const Coordinate &c, const double sqr, const double sa, const double angle, const LineData &l, int side)
const Coordinate calcPointProjection (const Coordinate &p, const LineData &l)
double calcDistancePointLine (const Coordinate &p, const LineData &l)
void calcBorderPoints (Coordinate &p1, Coordinate &p2, const Rect &r)
void calcBorderPoints (double &xa, double &xb, double &ya, double &yb, const Rect &r)
const LineData calcBorderPoints (const LineData &l, const Rect &r)
void calcRayBorderPoints (const Coordinate &a, Coordinate &b, const Rect &r)
const Coordinate calcCenter (const Coordinate &a, const Coordinate &b, const Coordinate &c)
void calcRayBorderPoints (const double xa, const double xb, double &ya, double &yb, const Rect &r)
const Coordinate calcMirrorPoint (const LineData &l, const Coordinate &p)
bool areCollinear (const Coordinate &p1, const Coordinate &p2, const Coordinate &p3)
bool isSingular (const double &a, const double &b, const double &c, const double &d)
bool isOnLine (const Coordinate &o, const Coordinate &a, const Coordinate &b, const double fault)
bool isOnSegment (const Coordinate &o, const Coordinate &a, const Coordinate &b, const double fault)
bool isOnRay (const Coordinate &o, const Coordinate &a, const Coordinate &b, const double fault)
bool isOnArc (const Coordinate &o, const Coordinate &c, const double r, const double sa, const double a, const double fault)
Coordinate calcCircleRadicalStartPoint (const Coordinate &ca, const Coordinate &cb, double sqra, double sqrb)
bool lineInRect (const Rect &r, const Coordinate &a, const Coordinate &b, const int width, const ObjectImp *imp, const KigWidget &w)
template<typename T>
T kigMin (const T &a, const T &b)
template<typename T>
T kigMax (const T &a, const T &b)
template<typename T>
T kigAbs (const T &a)
template<typename T>
int kigSgn (const T &a)

Variables

const double double_inf
const double test_threshold

Function Documentation

bool areCollinear ( const Coordinate &  p1,
const Coordinate &  p2,
const Coordinate &  p3 
)

test collinearity of three points

Definition at line 486 of file common.cpp.

const Coordinate calcArcLineIntersect ( const Coordinate &  c,
const double  sqr,
const double  sa,
const double  angle,
const LineData &  l,
int  side 
)

this calcs the intersection points of the arc with center c, radius sqrt( r ), start angle sa and angle angle, and the line l.

As a arc and a line can have max two intersection points, side tells us which one we need... It should be 1 or -1. If the line and the arc have no intersection, valid is set to false, otherwise to true... Note that sqr is the _square_ of the radius. We do this to avoid rounding errors...

Definition at line 282 of file common.cpp.

const LineData calcBorderPoints ( const LineData &  l,
const Rect &  r 
)

cleaner overload, intended to replace the above two.

..

Definition at line 84 of file common.cpp.

void calcBorderPoints ( double &  xa,
double &  xb,
double &  ya,
double &  yb,
const Rect &  r 
)

overload.

..

Definition at line 91 of file common.cpp.

void calcBorderPoints ( Coordinate &  p1,
Coordinate &  p2,
const Rect &  r 
)

this sets p1 and p2 to p1' and p2' so that p1'p2' is the same line as p1p2, and so that p1' and p2' are on the border of the Rect.

..

Definition at line 79 of file common.cpp.

const Coordinate calcCenter ( const Coordinate &  a,
const Coordinate &  b,
const Coordinate &  c 
)

This function calculates the center of the circle going through the three given points.

Definition at line 363 of file common.cpp.

const Coordinate calcCircleLineIntersect ( const Coordinate &  c,
const double  sqr,
const LineData &  l,
int  side 
)

this calcs the intersection points of the circle with center c and radius sqrt( r ), and the line l.

As a circle and a line have two intersection points, side tells us which one we need... It should be 1 or -1. If the line and the circle have no intersection, valid is set to false, otherwise to true... Note that sqr is the _square_ of the radius. We do this to avoid rounding errors...

Definition at line 259 of file common.cpp.

Coordinate calcCircleRadicalStartPoint ( const Coordinate &  ca,
const Coordinate &  cb,
double  sqra,
double  sqrb 
)

Definition at line 332 of file common.cpp.

double calcDistancePointLine ( const Coordinate &  p,
const LineData &  l 
)

calc the distance of point p to the line through a and b.

..

Definition at line 299 of file common.cpp.

Coordinate calcIntersectionPoint ( const LineData &  l,
const LineData &  m 
)

this calcs the point where the lines l and m intersect.

..

Definition at line 54 of file common.cpp.

const Coordinate calcMirrorPoint ( const LineData &  l,
const Coordinate &  p 
)

calc the mirror point of p over the line l

Definition at line 247 of file common.cpp.

Coordinate calcPointOnParallel ( const Coordinate &  dir,
const Coordinate &  t 
)

this returns a point, so that the line through point t and the point returned is parallel with the direction given in dir.

..

Definition at line 49 of file common.cpp.

Coordinate calcPointOnParallel ( const LineData &  l,
const Coordinate &  t 
)

this returns a point, so that the line through point t and the point returned is parallel with the line l

Definition at line 44 of file common.cpp.

Coordinate calcPointOnPerpend ( const Coordinate &  dir,
const Coordinate &  t 
)

this returns a point, so that the line through point t and the point returned is perpendicular to the direction given in dir.

..

Definition at line 39 of file common.cpp.

Coordinate calcPointOnPerpend ( const LineData &  l,
const Coordinate &  t 
)

this returns a point, so that the line through point t and the point returned is perpendicular to the line l.

this returns a point, so that the line through point t and the point returned is perpendicular to the line l.

.. Copyright (C) 2002 Dominique Devriese <devriese@kde.org>

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA

Definition at line 34 of file common.cpp.

const Coordinate calcPointProjection ( const Coordinate &  p,
const LineData &  l 
)

this calculates the perpendicular projection of point p on line ab.

..

Definition at line 292 of file common.cpp.

void calcRayBorderPoints ( const double  xa,
const double  xb,
double &  ya,
double &  yb,
const Rect &  r 
)

overload.

..

Definition at line 133 of file common.cpp.

void calcRayBorderPoints ( const Coordinate &  a,
Coordinate &  b,
const Rect &  r 
)

this does the same as the above function, but only for b.

Definition at line 128 of file common.cpp.

Coordinate calcRotatedPoint ( const Coordinate &  a,
const Coordinate &  c,
const double  arc 
)

This calcs the rotation of point a around point c by arc arc.

Arc is in radians, in the range 0 < arc < 2*pi ...

Definition at line 312 of file common.cpp.

double getDoubleFromUser ( const QString &  caption,
const QString &  label,
double  value,
QWidget *  parent,
bool *  ok,
double  min,
double  max,
int  decimals 
)

Here, we define some algorithms which we need in various places.

..

Definition at line 346 of file common.cpp.

bool isOnArc ( const Coordinate &  o,
const Coordinate &  c,
const double  r,
const double  sa,
const double  a,
const double  fault 
)

Definition at line 235 of file common.cpp.

bool isOnLine ( const Coordinate &  o,
const Coordinate &  a,
const Coordinate &  b,
const double  fault 
)

is o on the line defined by point a and point b ? fault is the allowed difference.

..

Definition at line 185 of file common.cpp.

bool isOnRay ( const Coordinate &  o,
const Coordinate &  a,
const Coordinate &  b,
const double  fault 
)

Definition at line 223 of file common.cpp.

bool isOnSegment ( const Coordinate &  o,
const Coordinate &  a,
const Coordinate &  b,
const double  fault 
)

is o on the segment defined by point a and point b ? this calls isOnLine(), but also checks if o is "between" a and b.

.. fault is the allowed difference...

Definition at line 209 of file common.cpp.

bool isSingular ( const double &  a,
const double &  b,
const double &  c,
const double &  d 
)

test if a 2x2 matrix is singular (relatively to the norm of the two row vectors)

Definition at line 492 of file common.cpp.

template<typename T>
T kigAbs ( const T &  a  )  [inline]

Definition at line 267 of file misc/common.h.

template<typename T>
T kigMax ( const T &  a,
const T &  b 
) [inline]

Definition at line 261 of file misc/common.h.

template<typename T>
T kigMin ( const T &  a,
const T &  b 
) [inline]

Definition at line 255 of file misc/common.h.

template<typename T>
int kigSgn ( const T &  a  )  [inline]

Definition at line 273 of file misc/common.h.

bool lineInRect ( const Rect &  r,
const Coordinate &  a,
const Coordinate &  b,
const int  width,
const ObjectImp *  imp,
const KigWidget &  w 
)

Is the line, segment, ray or vector inside r ? We need the imp to distinguish between rays, lines, segments or whatever.

. ( we use their contains functions actually.. )

Definition at line 398 of file common.cpp.

bool operator== ( const LineData &  l,
const LineData &  r 
)

Equality.

Tests two LineData's for equality.

Definition at line 451 of file common.cpp.


Variable Documentation

const double double_inf

Definition at line 506 of file common.cpp.

const double test_threshold

Definition at line 507 of file common.cpp.

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
  • klettres
  • kstars
  • libkdeedu
  •   keduvocdocument
  •   docs
  •   src
  • parley
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