Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef JSK_RECOGNITION_UTILS_GEO_SEGMENT_H_
00037 #define JSK_RECOGNITION_UTILS_GEO_SEGMENT_H_
00038
00039 #include <iostream>
00040 #include "jsk_recognition_utils/geo/line.h"
00041 #include "visualization_msgs/Marker.h"
00042
00043 namespace jsk_recognition_utils
00044 {
00045 class Plane;
00050 class Segment: public Line
00051 {
00052 public:
00053 typedef boost::shared_ptr<Segment> Ptr;
00054
00062 Segment(const Eigen::Vector3f& from, const Eigen::Vector3f to);
00063
00068 virtual void getEnd(Eigen::Vector3f& output) const;
00069 virtual Eigen::Vector3f getEnd() const;
00070
00071 virtual void foot(const Eigen::Vector3f& point, Eigen::Vector3f& output) const;
00072 virtual double dividingRatio(const Eigen::Vector3f& point) const;
00073 virtual double distance(const Eigen::Vector3f& point) const;
00074 virtual double distance(const Eigen::Vector3f& point, Eigen::Vector3f& foot_point) const;
00075 virtual bool intersect(Plane& plane, Eigen::Vector3f& point) const;
00076 virtual void midpoint(Eigen::Vector3f& midpoint) const;
00077
00078 friend std::ostream& operator<<(std::ostream& os, const Segment& seg);
00079
00087 virtual double distanceWithInfo(const Eigen::Vector3f& from,
00088 Eigen::Vector3f& foot_point,
00089 double &distance_to_goal) const;
00090
00095 virtual Segment::Ptr flipSegment() const;
00096
00101 virtual double length() const;
00102
00107 void toMarker(visualization_msgs::Marker& marker) const;
00108
00113 virtual bool isCross (const Line &ln, double distance_threshold = 1e-5) const;
00114 virtual bool isCross (const Segment &ln, double distance_threshold = 1e-5) const;
00115
00116 protected:
00117 Eigen::Vector3f to_;
00118 double length_;
00119 private:
00120 };
00121 }
00122
00123 #endif