kig
common.cpp File Reference
#include "common.h"
#include "../kig/kig_view.h"
#include "../objects/object_imp.h"
#include <cmath>
#include <kdebug.h>
#include <knumvalidator.h>
#include <klocale.h>
#include <kglobal.h>
#include <kinputdialog.h>

Go to the source code of this file.
Functions | |
| 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 &l1, const LineData &l2) |
| void | calcBorderPoints (Coordinate &p1, Coordinate &p2, const Rect &r) |
| const LineData | calcBorderPoints (const LineData &l, const Rect &r) |
| void | calcBorderPoints (double &xa, double &ya, double &xb, double &yb, const Rect &r) |
| void | calcRayBorderPoints (const Coordinate &a, Coordinate &b, const Rect &r) |
| void | calcRayBorderPoints (const double xa, const double ya, double &xb, double &yb, const Rect &r) |
| 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) |
| const Coordinate | calcMirrorPoint (const LineData &l, const Coordinate &p) |
| 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) |
| Coordinate | calcRotatedPoint (const Coordinate &a, const Coordinate &c, const double arc) |
| Coordinate | calcCircleRadicalStartPoint (const Coordinate &ca, const Coordinate &cb, double sqra, double sqrb) |
| double | getDoubleFromUser (const QString &caption, const QString &label, double value, QWidget *parent, bool *ok, double min, double max, int decimals) |
| const Coordinate | calcCenter (const Coordinate &a, const Coordinate &b, const Coordinate &c) |
| bool | lineInRect (const Rect &r, const Coordinate &a, const Coordinate &b, const int width, const ObjectImp *imp, const KigWidget &w) |
| bool | operator== (const LineData &l, const LineData &r) |
| 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) |
Variables | |
| const double | double_inf = HUGE_VAL |
| const double | test_threshold = 1e-6 |
Function Documentation
| bool areCollinear | ( | const Coordinate & | p1, | |
| const Coordinate & | p2, | |||
| const Coordinate & | p3 | |||
| ) |
| 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.
| void calcBorderPoints | ( | double & | xa, | |
| double & | xb, | |||
| double & | ya, | |||
| double & | yb, | |||
| const Rect & | r | |||
| ) |
| 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 | |||
| ) |
| 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 file is part of Kig, a KDE program for Interactive Geometry.
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 | |||
| ) |
| 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.
| 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.
Variable Documentation
| const double double_inf = HUGE_VAL |
Definition at line 506 of file common.cpp.
| const double test_threshold = 1e-6 |
Definition at line 507 of file common.cpp.
KDE 4.0 API Reference