diff options
| author | Tavmjong Bah <tavmjong@free.fr> | 2015-03-29 20:21:29 +0000 |
|---|---|---|
| committer | tavmjong-free <tavmjong@free.fr> | 2015-03-29 20:21:29 +0000 |
| commit | 953a5c690f328fc989ffc7692312937454ae3677 (patch) | |
| tree | aea0bba1d6ed380d18a945bab5a8f4984e6faaea /src | |
| parent | clean up previous commit (diff) | |
| download | inkscape-953a5c690f328fc989ffc7692312937454ae3677.tar.gz inkscape-953a5c690f328fc989ffc7692312937454ae3677.zip | |
make_angle_bisector_line(): Return sensible line if three input points are colinear.
Add output operator, useful for debugging.
(bzr r14035)
Diffstat (limited to 'src')
| -rw-r--r-- | src/2geom/line.h | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/src/2geom/line.h b/src/2geom/line.h index ade67f818..cbd68fa08 100644 --- a/src/2geom/line.h +++ b/src/2geom/line.h @@ -35,6 +35,7 @@ #define LIB2GEOM_SEEN_LINE_H #include <cmath> +#include <iostream> #include <boost/optional.hpp> #include <2geom/bezier-curve.h> // for LineSegment #include <2geom/rect.h> @@ -258,9 +259,19 @@ public: dist = -dot(n, m_origin); return n; } - /// @} + + friend inline std::ostream &operator<< (std::ostream &out_file, const Geom::Line &in_line); +/// @} }; // end class Line +/** @brief Output operator for lines. + * Prints out representation (point + versor) + */ +inline std::ostream &operator<< (std::ostream &out_file, const Geom::Line &in_line) { + out_file << "X: " << in_line.m_origin[X] << " Y: " << in_line.m_origin[Y] + << " dX: " << in_line.m_versor[X] << " dY: " << in_line.m_versor[Y]; + return out_file; +} inline double distance(Point const& _point, Line const& _line) @@ -365,6 +376,10 @@ inline Line make_angle_bisector_line(Point const& A, Point const& O, Point const& B) { Point M = middle_point(A,B); + if (are_near(O,M)) { + Line l(A,B); + M += (make_orthogonal_line(O,l)).versor(); + } return Line(O,M); } |
