creation of a set of segments, please help

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • aaragon

    creation of a set of segments, please help

    Hello everybody,

    I have an interesting problem for which I still don't have a solution.
    Imagine that you're working with points in two-dimesional space, so
    the point class should be (simplifying):

    class Point {

    double x_,y_;

    public:

    Point(double x, double y) : x_(x), y_(y) {}
    // other constructors and member functions
    };

    Now, imagine that you're also working with segments in 2D. A segment
    consists of its endpoints:

    class Segment {

    Point source_, target_;
    public:
    Segment(const Point& s, const Point& t) : source_(s), target_(t)
    {}
    // other constructors and member functions
    };


    Now, I want to enforce that if I have points P1, P2, the segment P1-P2
    is the same as the segment P2-P1. That is, the orientation of the
    segment doesn't matter so as long as the endpoints are the same, the
    segments are equal. This could be enforced by operator== in the
    Segment class:

    bool Segment::operat or==(const Segment& s)
    { return ((source_ == s.source_ && target_ == s.target_) || (target_
    == s.source_ && source_ == s.target_)); }


    Now, I would like to create a set of segments. Of course, the segment
    does not have to have duplicates. However, sets are defined by using
    operator< which is not defined here.

    So the question is, how do I create a std::set of segments? Any ideas?
    I could just write operator< so that it compares the smaller point
    from both segments, but I thought that someone could have a better
    solution.

    Thank you all,

    aa
Working...