KJB
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | List of all members
kjb::Model_edge Class Reference

#include <model_edge.h>

Inheritance diagram for kjb::Model_edge:
kjb::Line_segment kjb::Readable kjb::Writeable

Public Member Functions

 Model_edge (double x1, double y1, double x2, double y2, bool isilhouette=false, bool isvisible=false, bool iflagged=false)
 Constructs a model edge from the position of its edge points. More...
 
 Model_edge (const kjb::Vector &istart, const kjb::Vector &iend, bool isilhouette=false, bool isvisible=false, bool iflagged=false)
 Constructs a model edge from the position of its edge points. More...
 
 Model_edge (const Model_edge &src)
 Copy constructor. More...
 
Model_edgeoperator= (const Model_edge &src)
 
bool operator== (const Model_edge &model_edge) const
 
void read (std::istream &in)
 Reads this Model segment from an input stream. More...
 
void write (std::ostream &out) const
 Writes this Model segment to an output stream. More...
 
bool is_silhouette () const
 Returns true if this model edge is a silhouette edge. More...
 
bool is_visible () const
 Returns true if this model edge is an visible edge. More...
 
void set_silhouette (bool isilhouette)
 Sets whether this model edge is a silhouette edge or not. More...
 
void set_flagged (bool iflagged)
 Sets whether this model edge is flagged or not. More...
 
void set_visible (bool isvisible)
 Sets whether this model edge is a visible edge or not. More...
 
void update_detected_segments (const Edge_segment &image_edge_segment, double collinear_distance_threshold, Vector &previous_center, bool &mapped, double noisy_length)
 Update the detectd parts when projecting an image segment onto the model edge. More...
 
double get_detected_length ()
 Return the detected length of this model segment. More...
 
bool is_flagged () const
 
- Public Member Functions inherited from kjb::Line_segment
 Line_segment ()
 Constructor without initializations. More...
 
 Line_segment (double icentre_x, double icentre_y, double iorientation, double ilength)
 Constructs a new Line_segment from centre, orientation, length. More...
 
 Line_segment (const Vector &start, const Vector &end)
 Constructs a new Line_segment from a starting and ending point. More...
 
 Line_segment (std::istream &in)
 Constructs this line segment by reading from an input stream. More...
 
 Line_segment (const Line_segment &ls)
 Copy constructor. More...
 
Line_segmentoperator= (const Line_segment &ls)
 Assignment operator. More...
 
bool operator== (const Line_segment &ls) const
 
bool operator< (const Line_segment &ls) const
 
void init_from_slope_and_intercept (double x_start, double x_end, double islope, double iintercept)
 Initialize from x_start, x_end, slope, y_axis intercept. More...
 
void init_vertical_segment (double y_start, double y_end, double x)
 Initialize a vertical Line_segment from y_start, y_end, x coord. More...
 
void init_from_end_points (double x_1, double y_1, double x_2, double y_2)
 Initialize a new Line_segment from position of its end points. More...
 
void init_from_centre_and_orientation (double icentre_x, double icentre_y, double iorientation, double ilength)
 
double get_centre_x () const
 Returns the x-coordinate of the mid-point. More...
 
double get_centre_y () const
 Returns the y-coordinate of the mid-point. More...
 
bool point_outside_segment (const Vector &point) const
 Check whether point is inside the ending points of this segment Note point is collinear with this line segment. More...
 
const kjb::Vectorget_centre () const
 Returns the mid-point. More...
 
double get_start_x () const
 Returns the x-coordinate of the leftmost point of the segment. More...
 
double get_start_y () const
 Returns the y-coordinate of the leftmost point of the segment. More...
 
const kjb::Vectorget_start () const
 Returns the leftmost point of the segment. More...
 
double get_end_x () const
 Returns the x-coordinate of the rightmost point of the segment. More...
 
double get_end_y () const
 Returns the y-coordinate of the rightmost point of the segment. More...
 
const kjb::Vectorget_end () const
 Returns the rightmost point of the segment. More...
 
double get_slope () const
 Returns the slope of the line segment. More...
 
double get_y_intercept () const
 Returns the y-intercept of the line segment. More...
 
double get_x_intercept () const
 Returns the x-intercept of the line segment. More...
 
const Vectorget_line_params () const
 
const Lineget_line () const
 
double get_orientation () const
 Returns the orientation. More...
 
double get_length () const
 Returns the length. More...
 
void draw (kjb::Image &img, double ir, double ig, double ib, double width=1.0) const
 Draws this line segment. More...
 
void randomly_color (kjb::Image &img, double width=1.0) const
 Randomly colors this line segment on an image. More...
 
bool get_intersection (const Line_segment &line, kjb::Vector &point) const
 Finds the intersection point of the this line_segment and the input Line_segment line. Return false if these two lines are parallel and therefore do not intersect. More...
 
double get_distance_from_point (const kjb::Vector &point) const
 Returns distance between this line segment and the input point. More...
 
double get_angle_between_line (const Line_segment &line) const
 Returns the angle between this line segment and the input line. More...
 
double find_t (const kjb::Vector &point) const
 
double get_distance_from_point (const kjb::Vector &point, double *perp_dist) const
 Returns distance between this line segment and the input point. More...
 
double get_dx () const
 Returns the dx of this segment. More...
 
double get_dy () const
 Returns the dy of this segment. More...
 
bool is_horizontal () const
 Function object of testing whehter a line is horizontal. More...
 
bool is_vertical () const
 Function object of testing whehter a line is horizontal. More...
 
void get_direction (kjb::Vector &idirection) const
 Returns a vector representing the normalized direction of this line_segment. More...
 
bool is_line_segment_consistent ()
 
bool is_collinear (const Line_segment &ls, double collinear_threshold) const
 
- Public Member Functions inherited from kjb::Readable
virtual ~Readable ()
 Deletes this Readable. More...
 
virtual void read (const char *fname)
 Reads this Readable from a file. More...
 
- Public Member Functions inherited from kjb::Writeable
virtual ~Writeable ()
 Deletes this Writeable. More...
 
virtual void write (const char *fname) const
 Writes this Writeable to a file. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from kjb::Line_segment
static std::pair< Vector, Vectorproject_line_segment_onto_line (const Line_segment &segment, const Line &iline)
 Project a line segment onto a line. More...
 
static bool project_line_segment_onto_line_segment (const Line_segment &segment_project, const Line_segment &segment_target, std::pair< Vector, Vector > &projected_points, double &length_inside, double &length_outside)
 Project a line segment onto a line segment. More...
 
static bool less_than (const Vector &point1, const Vector &point2)
 Returns true if point1.x < point2.x || (point1.x == point2.x && point1.y < point2.y. More...
 
static bool collision_detection (double start_1, double end_1, double start_2, double end_2, int &direction, double &delta)
 
static bool collision_detection_with_direction (double start_1, double end_1, double start_2, double end_2, int &direction, double &delta, int idirection)
 
static double get_overlap (double start_1, double end_1, double start_2, double end_2)
 
- Static Public Member Functions inherited from kjb::Readable
static const char * read_field_value (std::istream &in, const char *field_name, char *field_buf, size_t buf_len, char separator=':')
 Reads a line off in into a buffer and returns a pointer to the field value in the buffer. More...
 
static const char * read_field_value (std::istream &in, const char *field_name, char separator=':')
 Reads a line off in into an internal buffer and returns a pointer to the field value in the buffer. More...
 
- Protected Member Functions inherited from kjb::Line_segment
void compute_extrema ()
 Computes the extrema of this line segments from centre, orientation, and length. This information is redundant, but it can be very useful to have them pre-computed. More...
 
void compute_line_parameters ()
 
- Protected Attributes inherited from kjb::Line_segment
kjb::Vector centre
 X coordinate of the centre of this line segment. More...
 
double orientation
 Orientation of this line segment, defined as the angle between the x axis and the segment, positive angle meaning counter clockwise. Ranges between 0 and 180 degrees. Stored in radian. More...
 
double length
 length of the line segment More...
 
kjb::Vector start_point
 
kjb::Vector end_point
 
Line line
 
- Static Protected Attributes inherited from kjb::Line_segment
static Matrix _line_segment_rotation
 

Constructor & Destructor Documentation

Model_edge::Model_edge ( double  x1,
double  y1,
double  x2,
double  y2,
bool  isilhouette = false,
bool  isvisible = false,
bool  iflagged = false 
)

Constructs a model edge from the position of its edge points.

Parameters
x1The x coordinate of the first end point
y1The y coordinate of the first end point
x2The x coordinate of the second end point
y2The y coordinate of the second end point
isilhouetteindicates whether this is a silhouette edge or not
kjb::Model_edge::Model_edge ( const kjb::Vector istart,
const kjb::Vector iend,
bool  isilhouette = false,
bool  isvisible = false,
bool  iflagged = false 
)
inline

Constructs a model edge from the position of its edge points.

Parameters
istartThe position of the first end point of this segment
iendThe position of the second end point of this segment
isilhouetteindicates whether this is a silhouette edge or not
kjb::Model_edge::Model_edge ( const Model_edge src)
inline

Copy constructor.

Parameters
srcThe model edge to copy into this one

Member Function Documentation

double Model_edge::get_detected_length ( )

Return the detected length of this model segment.

bool kjb::Model_edge::is_flagged ( ) const
inline
bool kjb::Model_edge::is_silhouette ( ) const
inline

Returns true if this model edge is a silhouette edge.

bool kjb::Model_edge::is_visible ( ) const
inline

Returns true if this model edge is an visible edge.

Model_edge& kjb::Model_edge::operator= ( const Model_edge src)
inline

@ brief Assignment operator

Parameters
srcThe model edge to assign to this one
bool kjb::Model_edge::operator== ( const Model_edge model_edge) const
inline
void Model_edge::read ( std::istream &  in)
virtual

Reads this Model segment from an input stream.

Reimplemented from kjb::Line_segment.

void kjb::Model_edge::set_flagged ( bool  iflagged)
inline

Sets whether this model edge is flagged or not.

void kjb::Model_edge::set_silhouette ( bool  isilhouette)
inline

Sets whether this model edge is a silhouette edge or not.

void kjb::Model_edge::set_visible ( bool  isvisible)
inline

Sets whether this model edge is a visible edge or not.

void Model_edge::update_detected_segments ( const Edge_segment image_edge_segment,
double  collinear_distance_threshold,
Vector previous_center,
bool &  mapped,
double  noisy_length 
)

Update the detectd parts when projecting an image segment onto the model edge.

Returns
the overlapped length between teh image_edge_segment and the already detected parts
the overlapped length between teh image_edge_segment and the already detected parts TODO: need to think of a more efficient way to check the overlapping parts
void Model_edge::write ( std::ostream &  out) const
virtual

Writes this Model segment to an output stream.

Reimplemented from kjb::Line_segment.


The documentation for this class was generated from the following files: