00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <geometry/line_segment.h>
00025
00026 namespace fawkes {
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 LineSegment::LineSegment(const HomPoint& a, const HomPoint& b)
00038 : m_p1(a),
00039 m_p2(b)
00040 {
00041 register_primitives();
00042 }
00043
00044
00045
00046
00047
00048
00049 LineSegment::LineSegment(const HomPoint& p, const HomVector& v)
00050 : m_p1(p),
00051 m_p2(p+v)
00052 {
00053 register_primitives();
00054 }
00055
00056
00057
00058
00059 LineSegment::LineSegment(const LineSegment& l)
00060 : m_p1(l.m_p1),
00061 m_p2(l.m_p2)
00062 {
00063 clear_primitives();
00064 register_primitives();
00065 }
00066
00067
00068 LineSegment::~LineSegment()
00069 {
00070 }
00071
00072
00073
00074
00075 float
00076 LineSegment::length() const
00077 {
00078 HomVector v;
00079 v = m_p2 - m_p1;
00080 return v.length();
00081 }
00082
00083
00084
00085
00086 const HomPoint&
00087 LineSegment::p1() const
00088 {
00089 return m_p1;
00090 }
00091
00092
00093
00094
00095 const HomPoint&
00096 LineSegment::p2() const
00097 {
00098 return m_p2;
00099 }
00100
00101 void
00102 LineSegment::register_primitives()
00103 {
00104 add_primitive(&m_p1);
00105 add_primitive(&m_p2);
00106 }
00107
00108 void
00109 LineSegment::post_transform()
00110 {
00111 }
00112
00113 std::ostream&
00114 LineSegment::print(std::ostream& stream) const
00115 {
00116 stream << "P1: " << m_p1 << " P2: " << m_p2;
00117 return stream;
00118 }
00119
00120 }