Program Listing for File linesegment2d.hpp
↰ Return to documentation for file (include/tuw_geometry/linesegment2d.hpp
)
#ifndef TUW_GEOMETRY__LINESEGMENT2D_HPP
#define TUW_GEOMETRY__LINESEGMENT2D_HPP
#include "tuw_geometry/line2d.hpp"
namespace tuw
{
class LineSegment2D;
using LineSegment2DPtr = std::shared_ptr<LineSegment2D>;
using LineSegment2DConstPtr = std::shared_ptr<LineSegment2D const>;
class LineSegment2D : public Line2D
{
protected:
Point2D p0_, p1_;
public:
LineSegment2D();
LineSegment2D(const LineSegment2D & l);
LineSegment2D(const Point2D & p0, const Point2D & p1);
LineSegment2D(const double & x0, const double & y0, const double & x1, const double & y1);
const double & x0() const;
const double & y0() const;
const double & x1() const;
const double & y1() const;
double angle() const;
const Point2D & p0() const;
const Point2D & p1() const;
Point2D pc() const;
const Line2D & line() const;
double length() const;
bool operator==(const LineSegment2D & o) const;
LineSegment2D & set(const double & x0, const double & y0, const double & x1, const double & y1);
LineSegment2D & set(const Point2D & p0, const Point2D & p1);
double distanceTo(const Point2D & p, double & dx, double & dy) const;
double distanceSqrTo(const Point2D & p, double & dx, double & dy) const;
double closestPointLineSegmentRatio(const Point2D & p) const;
Point2D closestPointTo(const Point2D & p) const;
double distanceTo(const Point2D & p) const;
friend std::ostream & operator<<(std::ostream & os, const LineSegment2D & o)
{
os << "[[" << o.x0() << ", " << o.y0() << "], [" << o.x1() << ", " << o.y1() << "] ]";
return os;
}
};
using LineSegments2D = std::vector<LineSegment2D>;
using LineSegments2DPtr = std::shared_ptr<LineSegments2D>;
using LineSegments2DConstPtr = std::shared_ptr<LineSegments2D const>;
} // namespace tuw
#endif // TUW_GEOMETRY__LINESEGMENT2D_HPP