static point_type get(const Segment<T>& segment, direction_1d dir) { return dir.to_int() ? segment.p1 : segment.p0; }
static void set( Segment<T>& segment, direction_1d dir, const point_type& point) { dir.to_int() ? segment.p1 = point : segment.p0 = point;; }
void set(direction_1d dir, coordinate_type value) { coords_[dir.to_int()] = value; }
coordinate_type get(direction_1d dir) const { return coords_[dir.to_int()]; }
void set(direction_1d dir, const point_type& point) { points_[dir.to_int()] = point; }
point_type get(direction_1d dir) const { return points_[dir.to_int()]; }
static inline point_type get(const Line& line, direction_1d dir) { return dir.to_int() ? line.b : line.a; }