line_segment.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __GEOMETRY_LINE_SEGMENT_H_
00025 #define __GEOMETRY_LINE_SEGMENT_H_
00026
00027 #include <geometry/transformable.h>
00028 #include <geometry/printable.h>
00029 #include <geometry/hom_point.h>
00030 #include <geometry/hom_vector.h>
00031
00032 namespace fawkes {
00033
00034 class LineSegment
00035 : public Transformable,
00036 public Printable
00037
00038 {
00039 public:
00040 LineSegment(const HomPoint& a, const HomPoint& b);
00041 LineSegment(const HomPoint& p, const HomVector& v);
00042 LineSegment(const LineSegment& l);
00043 virtual ~LineSegment();
00044
00045 float length() const;
00046
00047 const HomPoint& p1() const;
00048 const HomPoint& p2() const;
00049
00050 protected:
00051 virtual void register_primitives();
00052 virtual void post_transform();
00053 virtual std::ostream& print(std::ostream& stream) const;
00054
00055 private:
00056 HomPoint m_p1;
00057 HomPoint m_p2;
00058 };
00059
00060 }
00061
00062 #endif