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

Represent a collinear line segment, a collinear line segment is inherited from an Line_segment. More...

#include <collinear_segment_chain.h>

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

Public Member Functions

 Collinear_segment_chain (const std::vector< Line_segment > &segments)
 Constructs a new Collinear_segment_chain. More...
 
 Collinear_segment_chain (const Collinear_segment_chain &csc)
 Copy Constructor constructrs a new Collinear_segment_chain from an existing Collinear_segment_chain. More...
 
Collinear_segment_chainoperator= (const Collinear_segment_chain &csc)
 Assignment operator Assigns a Collinear_segment_chain to another Collinear_segment_chain. More...
 
 ~Collinear_segment_chain ()
 Nothing. More...
 
const std::vector< Line_segment > & get_segments () const
 Returns underlying vector of Line_segment's. More...
 
void read (std::istream &in)
 Reads this Collinear_segment_chain from an input stream. More...
 
void write (std::ostream &out) const
 Writes this Collinear_segment_chain to an output stream. More...
 
- 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 read (std::istream &in)
 Reads this Line segment from an input stream. More...
 
void write (std::ostream &out) const
 Writes this Line segment to an output stream. 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
 

Detailed Description

Represent a collinear line segment, a collinear line segment is inherited from an Line_segment.

Constructor & Destructor Documentation

kjb::Collinear_segment_chain::Collinear_segment_chain ( const std::vector< Line_segment > &  segments)

Constructs a new Collinear_segment_chain.

kjb::Collinear_segment_chain::Collinear_segment_chain ( const Collinear_segment_chain csc)
inline

Copy Constructor constructrs a new Collinear_segment_chain from an existing Collinear_segment_chain.

kjb::Collinear_segment_chain::~Collinear_segment_chain ( )
inline

Nothing.

Member Function Documentation

const std::vector<Line_segment>& kjb::Collinear_segment_chain::get_segments ( ) const
inline

Returns underlying vector of Line_segment's.

Collinear_segment_chain& kjb::Collinear_segment_chain::operator= ( const Collinear_segment_chain csc)
inline

Assignment operator Assigns a Collinear_segment_chain to another Collinear_segment_chain.

void kjb::Collinear_segment_chain::read ( std::istream &  in)
virtual

Reads this Collinear_segment_chain from an input stream.

Implements kjb::Readable.

void kjb::Collinear_segment_chain::write ( std::ostream &  out) const
virtual

Writes this Collinear_segment_chain to an output stream.

Implements kjb::Writeable.


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