|
degate 0.1.1
|
#include <LineSegmentExtraction.h>

Public Member Functions | |
| LineSegment (LinearPrimitive_shptr lp) | |
| void | merge (LineSegment_shptr seg) |
Private Attributes | |
| std::list< LinearPrimitive_shptr > | segments |
Line segment.
Definition at line 54 of file LineSegmentExtraction.h.
| degate::LineSegment::LineSegment | ( | LinearPrimitive_shptr | lp | ) | [inline] |
Definition at line 58 of file LineSegmentExtraction.h.
:
LinearPrimitive(lp->get_from_x(), lp->get_from_y(), lp->get_to_x(), lp->get_to_y()) {
}
| void degate::LineSegment::merge | ( | LineSegment_shptr | seg | ) | [inline] |
Definition at line 62 of file LineSegmentExtraction.h.
References degate::Point::get_distance(), degate::Line::get_p1(), degate::Line::get_p2(), degate::Line::set_p1(), and degate::Line::set_p2().
{
//std::cout << "merging lines:" << std::endl;
//print();
//seg->print();
Point a1 = get_p1();
Point a2 = get_p2();
Point b1 = seg->get_p1();
Point b2 = seg->get_p2();
unsigned int a1b1 = a1.get_distance(b1);
unsigned int a1b2 = a1.get_distance(b2);
unsigned int a2b1 = a2.get_distance(b1);
unsigned int a2b2 = a2.get_distance(b2);
// +-----------------+ +--------------+
// A1 A2 B1 B2
if(a2b1 <= a1b1 && a2b1 <= a1b2 && a2b1 <= a2b2) {
set_p1(a1);set_p2(b2);
}
// +-----------------+ +--------------+
// A2 A1 B1 B2
else if(a1b1 <= a1b2 && a1b1 <= a2b1 && a1b1 <= a2b2) {
set_p1(a2); set_p2(b2);
}
// +-----------------+ +--------------+
// A2 A1 B2 B1
else if(a1b2 <= a1b1 && a1b2 <= a2b1 && a1b2 <= a2b2) {
set_p1(a2);set_p2(b1);
}
// +-----------------+ +--------------+
// A1 A2 B2 B1
else if(a2b2 <= a1b1 && a2b2 <= a1b2 && a2b2 <= a2b1) {
set_p1(a1);set_p2(b1);
}
//std::cout << "Result: " << std::endl;
//print();
}

std::list<LinearPrimitive_shptr> degate::LineSegment::segments [private] |
Definition at line 56 of file LineSegmentExtraction.h.
1.7.4