Directed segment preserving source-to-target order plus optional segment label.
More...
|
| constexpr | OrientedSegment ()=default |
| | Creates the degenerate oriented segment (0,0)->(0,0).
|
| constexpr | OrientedSegment (PointType source, PointType target) |
| | Creates an oriented segment from a source and target.
|
| constexpr | OrientedSegment (NumberType x1, NumberType y1, NumberType x2, NumberType y2) |
| | Creates an oriented segment from four coordinates.
|
template<class A>
requires (detail::has_label_v<LabelType> && std::constructible_from<LabelType, A&&>) |
| constexpr | OrientedSegment (PointType source, PointType target, A &&label) |
| | Creates an oriented segment from a source and target and stores a label.
|
template<class A>
requires (detail::has_label_v<LabelType> && std::constructible_from<LabelType, A&&>) |
| constexpr | OrientedSegment (NumberType x1, NumberType y1, NumberType x2, NumberType y2, A &&label) |
| | Same as the four-coordinate constructor, and stores a label.
|
template<PointConcept OtherPointType, class OtherLabelType>
requires (std::constructible_from<PointType, const OtherPointType&>) |
| constexpr | OrientedSegment (const OrientedSegment< OtherPointType, OtherLabelType > &other) |
| | Converts an oriented segment with a different point and/or label type.
|
template<PointConcept OtherPointType, class OtherLabelType>
requires (std::constructible_from<PointType, const OtherPointType&>) |
| constexpr OrientedSegment & | operator= (const OrientedSegment< OtherPointType, OtherLabelType > &other) |
| | Assigns from an oriented segment with compatible point and label types.
|
| constexpr const PointType & | operator[] (std::size_t index) const |
| | Returns endpoint 0 for the source and 1 for the target.
|
| constexpr PointType & | operator[] (std::size_t index) |
| | Returns endpoint 0 for the source and 1 for the target.
|
| constexpr const PointType & | get (std::ptrdiff_t index) const |
| | Cyclic access: same as operator[] but index is taken modulo size(); negative indices wrap from the end.
|
| constexpr PointType & | get (std::ptrdiff_t index) |
| constexpr std::ptrdiff_t | index (const PointType &point) const |
| | Returns the smallest index i with (*this)[i] == point, or -1 if no endpoint equals point.
|
| constexpr const PointType & | source () const |
| | Returns the source endpoint.
|
| constexpr PointType & | source () |
| constexpr const PointType & | target () const |
| | Returns the target endpoint.
|
| constexpr PointType & | target () |
| constexpr const PointType & | min () const |
| | Returns the lexicographically smallest endpoint.
|
| constexpr const PointType & | max () const |
| | Returns the lexicographically largest endpoint.
|
| constexpr OrientedSegment | opposite () const |
| | Returns the opposite orientation of the same geometric segment.
|
| constexpr auto | begin () const |
| | Returns an iterator to the source endpoint.
|
| constexpr auto | begin () |
| constexpr auto | cbegin () const |
| | Returns an iterator to the source endpoint.
|
| constexpr auto | end () const |
| | Returns an iterator past the target endpoint.
|
| constexpr auto | end () |
| constexpr auto | cend () const |
| | Returns an iterator past the target endpoint.
|
| constexpr bool | operator== (const OrientedSegment &other) const |
| | Compares two oriented segments by their endpoints; the label is ignored.
|
| template<AnyShapeConcept OtherShape> |
| constexpr bool | samePointSet (const OtherShape &other) const |
| | Tests whether another shape defines exactly the same point set.
|
| constexpr auto | operator<=> (const OrientedSegment &other) const |
| | Provides lexicographic ordering on (source, target).
|
template<class A = LabelType>
requires (detail::has_label_v<A>) |
| constexpr A & | label () const |
| | Returns the segment label.
|
| constexpr | operator Segment< PointType > () const |
| | Converts to the unordered geometric segment with the same endpoints.
|
| constexpr Segment< PointType > | asSegment () const |
| | Returns the segment without orientation.
|
| constexpr | operator OrientedLine< PointType > () const |
| | Converts to the oriented supporting line.
|
| constexpr OrientedLine< PointType > | asOrientedLine () const |
| | Returns the oriented supporting line.
|
| constexpr Line< PointType > | asLine () const |
| | Returns the supporting line without orientation.
|
| constexpr | operator Ray< PointType > () const |
| | Converts to the ray with the same source and direction.
|
| constexpr Ray< PointType > | asRay () const |
| | Returns the ray with the same source and direction.
|
| constexpr OrientedSegment | rotated90 (int k=1) const |
| | Returns the segment rotated by 90k degrees around the origin.
|
| constexpr void | rotate90 (int k=1) |
| | Rotates the segment by 90k degrees around the origin in place.
|
| template<class OtherNumber> |
| constexpr OrientedSegment | scaledUpX (const OtherNumber scalar) const |
| | Returns the segment with its x-coordinates multiplied by a factor.
|
| template<class OtherNumber> |
| constexpr void | scaleUpX (const OtherNumber scalar) |
| | Multiplies the segment's x-coordinates by a factor in place.
|
| template<class OtherNumber> |
| constexpr OrientedSegment | scaledUpY (const OtherNumber scalar) const |
| | Returns the segment with its y-coordinates multiplied by a factor.
|
| template<class OtherNumber> |
| constexpr void | scaleUpY (const OtherNumber scalar) |
| | Multiplies the segment's y-coordinates by a factor in place.
|
| template<class OtherNumber> |
| constexpr OrientedSegment | scaledDownX (const OtherNumber scalar) const |
| | Returns the segment with its x-coordinates divided by a divisor.
|
| template<class OtherNumber> |
| constexpr void | scaleDownX (const OtherNumber scalar) |
| | Divides the segment's x-coordinates by a divisor in place.
|
| template<class OtherNumber> |
| constexpr OrientedSegment | scaledDownY (const OtherNumber scalar) const |
| | Returns the segment with its y-coordinates divided by a divisor.
|
| template<class OtherNumber> |
| constexpr void | scaleDownY (const OtherNumber scalar) |
| | Divides the segment's y-coordinates by a divisor in place.
|
| constexpr bool | isDegenerate () const |
| | Returns whether both endpoints coincide.
|
| constexpr bool | isPoint () const |
| | Returns whether the segment collapses to a single point.
|
| constexpr std::optional< PointType > | getIfPoint () const |
| | Returns the point the segment collapses to, if it does.
|
| constexpr bool | isUndefined () const |
| | Returns whether the segment is degenerate without collapsing to a point or to a segment.
|
| constexpr bool | isVertical () const |
| | Returns whether the segment is vertical.
|
| constexpr bool | isHorizontal () const |
| | Returns whether the segment is horizontal.
|
| template<class ResultNumber = NumberType> |
| constexpr ResultNumber | area () const |
| | Returns the area of the segment.
|
| constexpr NumberType | twiceArea () const |
| | Returns twice the area of the segment.
|
| constexpr auto | squaredLength () const |
| | Returns the squared Euclidean length.
|
| template<class ApproximateNumber = double> |
| ApproximateNumber | length () const |
| | Returns the Euclidean length.
|
| constexpr auto | lengthL1 () const |
| | Returns the Manhattan length.
|
| constexpr auto | lengthLInf () const |
| | Returns the Chebyshev length.
|
| template<PointConcept OtherPoint> |
| constexpr bool | verticesContain (const OtherPoint &point) const |
| | Returns whether one endpoint equals the given point.
|
| template<PointConcept OtherPoint> |
| constexpr bool | containsEndpoint (const OtherPoint &point) const |
| | Returns whether the given point is one endpoint.
|
| template<PointConcept OtherPoint> |
| constexpr bool | boundaryContains (const OtherPoint &point) const |
| | Tests whether this shape's boundary contains the other shape (∂A ⊇ B).
|
| template<SegmentConcept OtherSegment> |
| constexpr bool | boundaryContains (const OtherSegment &other) const |
| | Tests whether this shape's boundary contains the other shape (∂A ⊇ B).
|
| template<OrientedSegmentConcept OtherOrientedSegment> |
| constexpr bool | boundaryContains (const OtherOrientedSegment &other) const |
| | Tests whether this shape's boundary contains the other shape (∂A ⊇ B).
|
| template<LineConcept OtherLine> |
| constexpr bool | boundaryContains (const OtherLine &) const |
| | Tests whether this shape's boundary contains the other shape (∂A ⊇ B).
|
| template<OrientedLineConcept OtherOrientedLine> |
| constexpr bool | boundaryContains (const OtherOrientedLine &) const |
| | Tests whether this shape's boundary contains the other shape (∂A ⊇ B).
|
| template<RayConcept OtherRay> |
| constexpr bool | boundaryContains (const OtherRay &) const |
| | Tests whether this shape's boundary contains the other shape (∂A ⊇ B).
|
| template<HalfplaneConcept OtherHalfplane> |
| constexpr bool | boundaryContains (const OtherHalfplane &) const |
| | Tests whether this shape's boundary contains the other shape (∂A ⊇ B).
|
| template<RectangleConcept OtherRectangle> |
| constexpr bool | boundaryContains (const OtherRectangle &other) const |
| | Tests whether this shape's boundary contains the other shape (∂A ⊇ B).
|
| template<TriangleConcept OtherTriangle> |
| constexpr bool | boundaryContains (const OtherTriangle &other) const |
| | Tests whether this shape's boundary contains the other shape (∂A ⊇ B).
|
| template<ConvexConcept OtherConvex> |
| constexpr bool | boundaryContains (const OtherConvex &other) const |
| | Tests whether this shape's boundary contains the other shape (∂A ⊇ B).
|
| template<PolygonConcept OtherPolygon> |
| constexpr bool | boundaryContains (const OtherPolygon &other) const |
| | Tests whether this shape's boundary contains the other shape (∂A ⊇ B).
|
| template<DiskConcept OtherDisk> |
| constexpr bool | boundaryContains (const OtherDisk &other) const |
| | Tests whether this shape's boundary contains the other shape (∂A ⊇ B).
|
| template<PointConcept OtherPoint> |
| constexpr bool | containsCollinear (const OtherPoint &point) const |
| | Returns whether the segment contains the given point that is collinear with the segment.
|
| template<PointConcept OtherPoint> |
| constexpr bool | contains (const OtherPoint &point) const |
| | Tests whether this shape contains the other shape (A ⊇ B).
|
| template<SegmentConcept OtherSegment> |
| constexpr bool | contains (const OtherSegment &other) const |
| | Tests whether this shape contains the other shape (A ⊇ B).
|
| template<OrientedSegmentConcept OtherOrientedSegment> |
| constexpr bool | contains (const OtherOrientedSegment &other) const |
| | Tests whether this shape contains the other shape (A ⊇ B).
|
| template<LineConcept OtherLine> |
| constexpr bool | contains (const OtherLine &other) const |
| | Tests whether this shape contains the other shape (A ⊇ B).
|
| template<OrientedLineConcept OtherOrientedLine> |
| constexpr bool | contains (const OtherOrientedLine &other) const |
| | Tests whether this shape contains the other shape (A ⊇ B).
|
| template<RayConcept OtherRay> |
| constexpr bool | contains (const OtherRay &other) const |
| | Tests whether this shape contains the other shape (A ⊇ B).
|
| template<HalfplaneConcept OtherHalfplane> |
| constexpr bool | contains (const OtherHalfplane &other) const |
| | Tests whether this shape contains the other shape (A ⊇ B).
|
| template<RectangleConcept OtherRectangle> |
| constexpr bool | contains (const OtherRectangle &other) const |
| | Tests whether this shape contains the other shape (A ⊇ B).
|
| template<TriangleConcept OtherTriangle> |
| constexpr bool | contains (const OtherTriangle &other) const |
| | Tests whether this shape contains the other shape (A ⊇ B).
|
| template<ConvexConcept OtherConvex> |
| constexpr bool | contains (const OtherConvex &other) const |
| | Tests whether this shape contains the other shape (A ⊇ B).
|
| template<PolygonConcept OtherPolygon> |
| constexpr bool | contains (const OtherPolygon &other) const |
| | Tests whether this shape contains the other shape (A ⊇ B).
|
| template<DiskConcept OtherDisk> |
| constexpr bool | contains (const OtherDisk &other) const |
| | Tests whether this shape contains the other shape (A ⊇ B).
|
| constexpr bool | contains (const Shape< PointType > &other) const |
| | Tests whether this shape contains the other shape (A ⊇ B).
|
| constexpr bool | boundaryContains (const Shape< PointType > &other) const |
| | Tests whether this shape's boundary contains the other shape (∂A ⊇ B).
|
| template<class EmptyPoint> |
| constexpr bool | contains (const EmptyShape< EmptyPoint > &) const |
| | Tests whether this shape contains the other shape (A ⊇ B).
|
| template<class EmptyPoint> |
| constexpr bool | boundaryContains (const EmptyShape< EmptyPoint > &) const |
| | Tests whether this shape's boundary contains the other shape (∂A ⊇ B).
|
| template<class EmptyPoint> |
| constexpr bool | interiorContains (const EmptyShape< EmptyPoint > &) const |
| | Tests whether this shape's interior contains the other shape (A∖∂A ⊇ B).
|
| template<class EmptyPoint> |
| constexpr bool | separates (const EmptyShape< EmptyPoint > &) const |
| | Tests whether removing this shape disconnects the other shape (B∖A is disconnected).
|
| template<PointConcept OtherPoint> |
| constexpr bool | interiorContains (const OtherPoint &point) const |
| | Tests whether this shape's interior contains the other shape (A∖∂A ⊇ B).
|
| template<SegmentConcept OtherSegment> |
| constexpr bool | interiorContains (const OtherSegment &other) const |
| | Tests whether this shape's interior contains the other shape (A∖∂A ⊇ B).
|
| template<OrientedSegmentConcept OtherOrientedSegment> |
| constexpr bool | interiorContains (const OtherOrientedSegment &other) const |
| | Tests whether this shape's interior contains the other shape (A∖∂A ⊇ B).
|
| template<LineConcept OtherLine> |
| constexpr bool | interiorContains (const OtherLine &other) const |
| | Tests whether this shape's interior contains the other shape (A∖∂A ⊇ B).
|
| template<OrientedLineConcept OtherOrientedLine> |
| constexpr bool | interiorContains (const OtherOrientedLine &other) const |
| | Tests whether this shape's interior contains the other shape (A∖∂A ⊇ B).
|
| template<RayConcept OtherRay> |
| constexpr bool | interiorContains (const OtherRay &other) const |
| | Tests whether this shape's interior contains the other shape (A∖∂A ⊇ B).
|
| template<HalfplaneConcept OtherHalfplane> |
| constexpr bool | interiorContains (const OtherHalfplane &other) const |
| | Tests whether this shape's interior contains the other shape (A∖∂A ⊇ B).
|
| template<RectangleConcept OtherRectangle> |
| constexpr bool | interiorContains (const OtherRectangle &other) const |
| | Tests whether this shape's interior contains the other shape (A∖∂A ⊇ B).
|
| template<TriangleConcept OtherTriangle> |
| constexpr bool | interiorContains (const OtherTriangle &other) const |
| | Tests whether this shape's interior contains the other shape (A∖∂A ⊇ B).
|
| template<PointConcept OtherPoint> |
| constexpr bool | collinear (const OtherPoint &point) const |
| | Returns whether the given point is collinear with the oriented segment.
|
| template<SegmentConcept OtherSegment> |
| constexpr bool | collinear (const OtherSegment &other) const |
| | Returns whether the given segment is collinear with the oriented segment.
|
| template<OrientedSegmentConcept OtherOrientedSegment> |
| constexpr bool | collinear (const OtherOrientedSegment &other) const |
| | Returns whether another oriented segment is collinear with this oriented segment.
|
| template<LineConcept OtherLine> |
| constexpr bool | collinear (const OtherLine &other) const |
| | Returns whether the given line is collinear with the oriented segment.
|
| template<OrientedLineConcept OtherOrientedLine> |
| constexpr bool | collinear (const OtherOrientedLine &other) const |
| | Returns whether the given oriented line is collinear with the oriented segment.
|
| template<RayConcept OtherRay> |
| constexpr bool | collinear (const OtherRay &other) const |
| | Returns whether the given ray is collinear with the oriented segment.
|
| template<PointConcept OtherPoint> |
| constexpr std::partial_ordering | orientation (const OtherPoint &point) const |
| | Returns the orientation sign of a point with respect to the segment.
|
| template<class ResultNumber = division_result_t<NumberType>> |
| constexpr ResultNumber | slope () const |
| | Returns the slope of the segment.
|
| constexpr Halfplane< PointType > | rightHalfplane () const |
| | Returns the half-plane on the right of the segment direction.
|
| constexpr Halfplane< PointType > | leftHalfplane () const |
| | Returns the half-plane on the left of the segment direction.
|
| template<SegmentConcept OtherSegment> |
| constexpr bool | parallel (const OtherSegment &other) const |
| | Returns whether the given segment is parallel to the oriented segment.
|
| template<OrientedSegmentConcept OtherOrientedSegment> |
| constexpr bool | parallel (const OtherOrientedSegment &other) const |
| | Returns whether another oriented segment is parallel to this oriented segment.
|
| template<LineConcept OtherLine> |
| constexpr bool | parallel (const OtherLine &other) const |
| | Returns whether the given line is parallel to the oriented segment.
|
| template<OrientedLineConcept OtherOrientedLine> |
| constexpr bool | parallel (const OtherOrientedLine &other) const |
| | Returns whether the given oriented line is parallel to the oriented segment.
|
| template<RayConcept OtherRay> |
| constexpr bool | parallel (const OtherRay &other) const |
| | Returns whether the given ray is parallel to the oriented segment.
|
| template<PointConcept OtherPoint> |
| constexpr bool | intersects (const OtherPoint &other) const |
| | Tests whether this shape and the other shape intersect (A ∩ B ≠ ∅).
|
| template<SegmentConcept OtherSegment> |
| constexpr bool | intersects (const OtherSegment &other) const |
| | Tests whether this shape and the other shape intersect (A ∩ B ≠ ∅).
|
| template<OrientedSegmentConcept OtherOrientedSegment> |
| constexpr bool | intersects (const OtherOrientedSegment &other) const |
| | Tests whether this shape and the other shape intersect (A ∩ B ≠ ∅).
|
| constexpr bool | intersects (const Shape< PointType > &other) const |
| | Tests whether this shape and the other shape intersect (A ∩ B ≠ ∅).
|
template<typename OtherShape>
requires (!PointConcept<OtherShape> && detail::shapeRank<OtherShape> > detail::shapeRank<OrientedSegment>) |
| constexpr bool | intersects (const OtherShape &other) const |
| | Tests whether this shape and the other shape intersect (A ∩ B ≠ ∅).
|
| template<class EmptyPoint> |
| constexpr bool | intersects (const EmptyShape< EmptyPoint > &) const |
| | Tests whether this shape and the other shape intersect (A ∩ B ≠ ∅).
|
| template<class ResultNumber = NumberType, PointConcept OtherPoint> |
| constexpr std::optional< Point< ResultNumber, typename PointType::LabelType > > | intersection (const OtherPoint &other) const |
| | Returns the intersection of the two shapes (A ∩ B), empty when they are disjoint.
|
| template<class ResultNumber = division_result_t<NumberType>, SegmentConcept OtherSegment> |
| constexpr auto | intersection (const OtherSegment &other) const |
| | Returns the intersection of the two shapes (A ∩ B), empty when they are disjoint.
|
| template<class ResultNumber = division_result_t<NumberType>, OrientedSegmentConcept OtherOrientedSegment> |
| constexpr auto | intersection (const OtherOrientedSegment &other) const |
| | Returns the intersection of the two shapes (A ∩ B), empty when they are disjoint.
|
template<class ResultNumber = division_result_t<NumberType>, typename OtherShape>
requires (!PointConcept<OtherShape> && (detail::shapeRank<OtherShape> > detail::shapeRank<OrientedSegment>) && requires(const
OtherShape& o, const OrientedSegment& self) { o.template intersection<ResultNumber>(self); }) |
| constexpr auto | intersection (const OtherShape &other) const |
| | Returns the intersection of the two shapes (A ∩ B), empty when they are disjoint.
|
| template<class ResultNumber = NumberType, class EmptyPoint> |
| constexpr EmptyShape< EmptyPoint > | intersection (const EmptyShape< EmptyPoint > &) const |
| | Returns the intersection of the two shapes (A ∩ B), empty when they are disjoint.
|
| template<class ResultNumber = division_result_t<NumberType>, class OtherNumber> |
| constexpr std::optional< ResultNumber > | yAtX (const OtherNumber &x) const |
| | Returns the value of the y coordinate for a given x, if it exists.
|
| template<class ResultNumber = division_result_t<NumberType>, class OtherNumber> |
| constexpr std::optional< ResultNumber > | xAtY (const OtherNumber &y) const |
| | Returns the value of the x coordinate for a given y, if it exists.
|
| template<PointConcept OtherPoint> |
| constexpr bool | separates (const OtherPoint &other) const |
| | Tests whether removing this shape disconnects the other shape (B∖A is disconnected).
|
| template<SegmentConcept OtherSegment> |
| constexpr bool | separates (const OtherSegment &other) const |
| | Tests whether removing this shape disconnects the other shape (B∖A is disconnected).
|
| template<OrientedSegmentConcept OtherOrientedSegment> |
| constexpr bool | separates (const OtherOrientedSegment &other) const |
| | Tests whether removing this shape disconnects the other shape (B∖A is disconnected).
|
| template<LineConcept OtherLine> |
| constexpr bool | separates (const OtherLine &other) const |
| | Tests whether removing this shape disconnects the other shape (B∖A is disconnected).
|
| template<OrientedLineConcept OtherOrientedLine> |
| constexpr bool | separates (const OtherOrientedLine &other) const |
| | Tests whether removing this shape disconnects the other shape (B∖A is disconnected).
|
| template<RayConcept OtherRay> |
| constexpr bool | separates (const OtherRay &other) const |
| | Tests whether removing this shape disconnects the other shape (B∖A is disconnected).
|
| template<RectangleConcept OtherRectangle> |
| constexpr bool | separates (const OtherRectangle &other) const |
| | Tests whether removing this shape disconnects the other shape (B∖A is disconnected).
|
| template<TriangleConcept OtherTriangle> |
| constexpr bool | separates (const OtherTriangle &other) const |
| | Tests whether removing this shape disconnects the other shape (B∖A is disconnected).
|
| template<HalfplaneConcept OtherHalfplane> |
| constexpr bool | separates (const OtherHalfplane &other) const |
| | Tests whether removing this shape disconnects the other shape (B∖A is disconnected).
|
| template<ConvexConcept OtherConvex> |
| constexpr bool | separates (const OtherConvex &other) const |
| | Tests whether removing this shape disconnects the other shape (B∖A is disconnected).
|
| template<PolygonConcept OtherPolygon> |
| constexpr bool | separates (const OtherPolygon &other) const |
| | Tests whether removing this shape disconnects the other shape (B∖A is disconnected).
|
| template<MonotoneChainConcept OtherChain> |
| constexpr bool | contains (const OtherChain &other) const |
| | Tests whether this shape contains the other shape (A ⊇ B).
|
| template<MonotoneChainConcept OtherChain> |
| constexpr bool | boundaryContains (const OtherChain &other) const |
| | Tests whether this shape's boundary contains the other shape (∂A ⊇ B).
|
| template<MonotoneChainConcept OtherChain> |
| constexpr bool | interiorContains (const OtherChain &other) const |
| | Tests whether this shape's interior contains the other shape (A∖∂A ⊇ B).
|
| template<MonotoneChainConcept OtherChain> |
| constexpr bool | separates (const OtherChain &other) const |
| | Tests whether removing this shape disconnects the other shape (B∖A is disconnected).
|
| template<PolylineConcept OtherPolyline> |
| constexpr bool | contains (const OtherPolyline &other) const |
| | Tests whether this shape contains the other shape (A ⊇ B).
|
| template<PolylineConcept OtherPolyline> |
| constexpr bool | boundaryContains (const OtherPolyline &other) const |
| | Tests whether this shape's boundary contains the other shape (∂A ⊇ B).
|
| template<PolylineConcept OtherPolyline> |
| constexpr bool | interiorContains (const OtherPolyline &other) const |
| | Tests whether this shape's interior contains the other shape (A∖∂A ⊇ B).
|
| template<PolylineConcept OtherPolyline> |
| constexpr bool | separates (const OtherPolyline &other) const |
| | Tests whether removing this shape disconnects the other shape (B∖A is disconnected).
|
| template<HalfplaneIntersectionConcept OtherRegion> |
| constexpr bool | contains (const OtherRegion &other) const |
| | Tests whether this shape contains the other shape (A ⊇ B).
|
| template<HalfplaneIntersectionConcept OtherRegion> |
| constexpr bool | boundaryContains (const OtherRegion &other) const |
| | Tests whether this shape's boundary contains the other shape (∂A ⊇ B).
|
| template<HalfplaneIntersectionConcept OtherRegion> |
| constexpr bool | interiorContains (const OtherRegion &other) const |
| | Tests whether this shape's interior contains the other shape (A∖∂A ⊇ B).
|
| template<HalfplaneIntersectionConcept OtherRegion> |
| constexpr bool | separates (const OtherRegion &other) const |
| | Tests whether removing this shape disconnects the other shape (B∖A is disconnected).
|
| template<PolygonWithHolesConcept OtherRegion> |
| constexpr bool | contains (const OtherRegion &other) const |
| | Tests whether this shape contains the other shape (A ⊇ B).
|
| template<PolygonWithHolesConcept OtherRegion> |
| constexpr bool | boundaryContains (const OtherRegion &other) const |
| | Tests whether this shape's boundary contains the other shape (∂A ⊇ B).
|
| template<PolygonWithHolesConcept OtherRegion> |
| constexpr bool | interiorContains (const OtherRegion &other) const |
| | Tests whether this shape's interior contains the other shape (A∖∂A ⊇ B).
|
| template<PolygonWithHolesConcept OtherRegion> |
| bool | separates (const OtherRegion &other) const |
| | Tests whether removing this shape disconnects the other shape (B∖A is disconnected).
|
| template<PolygonSetConcept OtherSet> |
| constexpr bool | contains (const OtherSet &other) const |
| | Tests whether this shape contains the other shape (A ⊇ B).
|
| template<PolygonSetConcept OtherSet> |
| constexpr bool | boundaryContains (const OtherSet &other) const |
| | Tests whether this shape's boundary contains the other shape (∂A ⊇ B).
|
| template<PolygonSetConcept OtherSet> |
| constexpr bool | interiorContains (const OtherSet &other) const |
| | Tests whether this shape's interior contains the other shape (A∖∂A ⊇ B).
|
| template<PolygonSetConcept OtherSet> |
| bool | separates (const OtherSet &other) const |
| | Tests whether removing this shape disconnects the other shape (B∖A is disconnected).
|
| template<DiskConcept OtherDisk> |
| constexpr bool | separates (const OtherDisk &other) const |
| | Tests whether removing this shape disconnects the other shape (B∖A is disconnected).
|
| constexpr bool | separates (const Shape< PointType > &other) const |
| | Tests whether removing this shape disconnects the other shape (B∖A is disconnected).
|
| template<DiskConcept OtherDisk> |
| constexpr bool | interiorContains (const OtherDisk &other) const |
| | Tests whether this shape's interior contains the other shape (A∖∂A ⊇ B).
|
| template<ConvexConcept OtherConvex> |
| constexpr bool | interiorContains (const OtherConvex &other) const |
| | Tests whether this shape's interior contains the other shape (A∖∂A ⊇ B).
|
| template<PolygonConcept OtherPolygon> |
| constexpr bool | interiorContains (const OtherPolygon &other) const |
| | Tests whether this shape's interior contains the other shape (A∖∂A ⊇ B).
|
| template<PointConcept OtherPoint> |
| constexpr bool | interiorsIntersect (const OtherPoint &other) const |
| | Tests whether the interiors of the two shapes intersect ((A∖∂A) ∩ (B∖∂B) ≠ ∅).
|
| template<SegmentConcept OtherSegment> |
| constexpr bool | interiorsIntersect (const OtherSegment &other) const |
| | Tests whether the interiors of the two shapes intersect ((A∖∂A) ∩ (B∖∂B) ≠ ∅).
|
| template<OrientedSegmentConcept OtherOrientedSegment> |
| constexpr bool | interiorsIntersect (const OtherOrientedSegment &other) const |
| | Tests whether the interiors of the two shapes intersect ((A∖∂A) ∩ (B∖∂B) ≠ ∅).
|
template<typename OtherShape>
requires (!PointConcept<OtherShape> && detail::shapeRank<OtherShape> > detail::shapeRank<OrientedSegment>) |
| constexpr bool | interiorsIntersect (const OtherShape &other) const |
| | Tests whether the interiors of the two shapes intersect ((A∖∂A) ∩ (B∖∂B) ≠ ∅).
|
| template<class EmptyPoint> |
| constexpr bool | interiorsIntersect (const EmptyShape< EmptyPoint > &) const |
| | Tests whether the interiors of the two shapes intersect ((A∖∂A) ∩ (B∖∂B) ≠ ∅).
|
| constexpr bool | interiorsIntersect (const Shape< PointType > &other) const |
| | Tests whether the interiors of the two shapes intersect ((A∖∂A) ∩ (B∖∂B) ≠ ∅).
|
| template<SegmentConcept OtherSegment> |
| constexpr bool | crosses (const OtherSegment &other) const |
| | Tests whether the two shapes mutually separate each other (each disconnects the other).
|
| template<OrientedSegmentConcept OtherOrientedSegment> |
| constexpr bool | crosses (const OtherOrientedSegment &other) const |
| | Tests whether the two shapes mutually separate each other (each disconnects the other).
|
| template<PointConcept OtherPoint> |
| constexpr bool | crosses (const OtherPoint &other) const |
| | Tests whether the two shapes mutually separate each other (each disconnects the other).
|
template<typename OtherShape>
requires (!PointConcept<OtherShape> && detail::shapeRank<OtherShape> > detail::shapeRank<OrientedSegment>) |
| constexpr bool | crosses (const OtherShape &other) const |
| | Tests whether the two shapes mutually separate each other (each disconnects the other).
|
| template<class EmptyPoint> |
| constexpr bool | crosses (const EmptyShape< EmptyPoint > &) const |
| | Tests whether the two shapes mutually separate each other (each disconnects the other).
|
| constexpr bool | crosses (const Shape< PointType > &other) const |
| | Tests whether the two shapes mutually separate each other (each disconnects the other).
|
| template<class ResultNumber = division_result_t<NumberType>, PointConcept OtherPoint> |
| constexpr auto | squaredDistance (const OtherPoint &point) const |
| | Returns the squared Euclidean distance to the given shape.
|
| template<class ResultNumber = division_result_t<NumberType>, SegmentConcept OtherSegment> |
| constexpr auto | squaredDistance (const OtherSegment &other) const |
| | Returns the squared Euclidean distance to the given shape.
|
| template<class ResultNumber = division_result_t<NumberType>, OrientedSegmentConcept OtherOrientedSegment> |
| constexpr auto | squaredDistance (const OtherOrientedSegment &other) const |
| | Returns the squared Euclidean distance to the given shape.
|
template<class ResultNumber = division_result_t<NumberType>, typename OtherShape>
requires ((detail::shapeRank<OtherShape> > detail::shapeRank<OrientedSegment>) && requires(const OtherShape& o, const
OrientedSegment& self) { o.template squaredDistance<ResultNumber>(self); }) |
| constexpr auto | squaredDistance (const OtherShape &other) const |
| | Returns the squared Euclidean distance to the given shape.
|
| template<class ResultNumber = double, class DiskPointType, class DiskLabel> |
| detail::floating_result_t< ResultNumber > | squaredDistance (const Disk< DiskPointType, DiskLabel > &disk) const |
| | Returns the squared Euclidean distance to a disk.
|
template<class ResultNumber = NumberType, BoundedPolygonalConcept OtherShape>
requires detail::ClosestPairConcept<OrientedSegment<PointType_, TLabel>, OtherShape> |
| constexpr auto | closestSegments (const OtherShape &other) const |
| | Returns the pair of elements realizing the distance, nothing when the shapes meet.
|
template<class ResultNumber = division_result_t<NumberType>, class OtherShape>
requires detail::ClosestPointsPairConcept<OrientedSegment<PointType_, TLabel>, OtherShape> |
| constexpr auto | closestPoints (const OtherShape &other) const |
| | Returns the pair of points realizing the distance, nothing when the shapes meet.
|
| template<class ResultNumber = division_result_t<NumberType>, PointConcept OtherPoint> |
| constexpr auto | distanceL1 (const OtherPoint &point) const |
| | Returns the Manhattan (L1) distance to the given shape.
|
| template<class ResultNumber = division_result_t<NumberType>, SegmentConcept OtherSegment> |
| constexpr auto | distanceL1 (const OtherSegment &other) const |
| | Returns the Manhattan (L1) distance to the given shape.
|
| template<class ResultNumber = division_result_t<NumberType>, OrientedSegmentConcept OtherOrientedSegment> |
| constexpr auto | distanceL1 (const OtherOrientedSegment &other) const |
| | Returns the Manhattan (L1) distance to the given shape.
|
template<class ResultNumber = division_result_t<NumberType>, typename OtherShape>
requires ((detail::shapeRank<OtherShape> > detail::shapeRank<OrientedSegment>) && requires(const OtherShape& o, const
OrientedSegment& self) { o.template distanceL1<ResultNumber>(self); }) |
| constexpr auto | distanceL1 (const OtherShape &other) const |
| | Returns the Manhattan (L1) distance to the given shape.
|
| template<class ResultNumber = division_result_t<NumberType>, PointConcept OtherPoint> |
| constexpr auto | intersection (const Shape< OtherPoint > &other) const |
| | Returns the intersection of the two shapes (A ∩ B), re-dispatching through the wrapper's own intersection.
|
| template<class ResultNumber = double, PointConcept OtherPoint> |
| constexpr auto | distanceL1 (const Shape< OtherPoint > &other) const |
| | Returns the distance to the given shape, using symmetry to re-dispatch through the wrapper's own distanceL1.
|
| template<class ResultNumber = division_result_t<NumberType>, PointConcept OtherPoint> |
| constexpr auto | distanceLInf (const OtherPoint &point) const |
| | Returns the Chebyshev (LInf) distance to the given shape.
|
| template<class ResultNumber = division_result_t<NumberType>, SegmentConcept OtherSegment> |
| constexpr auto | distanceLInf (const OtherSegment &other) const |
| | Returns the Chebyshev (LInf) distance to the given shape.
|
| template<class ResultNumber = division_result_t<NumberType>, OrientedSegmentConcept OtherOrientedSegment> |
| constexpr auto | distanceLInf (const OtherOrientedSegment &other) const |
| | Returns the Chebyshev (LInf) distance to the given shape.
|
template<class ResultNumber = division_result_t<NumberType>, typename OtherShape>
requires ((detail::shapeRank<OtherShape> > detail::shapeRank<OrientedSegment>) && requires(const OtherShape& o, const
OrientedSegment& self) { o.template distanceLInf<ResultNumber>(self); }) |
| constexpr auto | distanceLInf (const OtherShape &other) const |
| | Returns the Chebyshev (LInf) distance to the given shape.
|
| template<class ResultNumber = double, PointConcept OtherPoint> |
| constexpr auto | distanceLInf (const Shape< OtherPoint > &other) const |
| | Returns the distance to the given shape, using symmetry to re-dispatch through the wrapper's own distanceLInf.
|
| template<class ResultNumber = division_result_t<NumberType>, SegmentConcept OtherSegment> |
| constexpr auto | hausdorffDistanceL1 (const OtherSegment &other) const |
| | Returns the Manhattan (L1) Hausdorff distance to the given shape.
|
| template<class ResultNumber = division_result_t<NumberType>, OrientedSegmentConcept OtherOrientedSegment> |
| constexpr auto | hausdorffDistanceL1 (const OtherOrientedSegment &other) const |
| | Returns the Manhattan (L1) Hausdorff distance to the given shape.
|
| template<class ResultNumber = NumberType, PointConcept OtherPoint> |
| constexpr auto | hausdorffDistanceL1 (const OtherPoint &point) const |
| | Returns the Manhattan (L1) Hausdorff distance to the given shape.
|
template<class ResultNumber = division_result_t<NumberType>, typename OtherShape>
requires ((detail::shapeRank<OtherShape> > detail::shapeRank<OrientedSegment>) && requires(const OtherShape& o, const
OrientedSegment& self) { o.template hausdorffDistanceL1<ResultNumber>(self); }) |
| constexpr auto | hausdorffDistanceL1 (const OtherShape &other) const |
| | Returns the Manhattan (L1) Hausdorff distance to the given shape.
|
| template<class ResultNumber = division_result_t<NumberType>, PointConcept OtherPoint> |
| constexpr auto | hausdorffDistanceL1 (const Shape< OtherPoint > &other) const |
| | Returns the distance to the given shape, using symmetry to re-dispatch through the wrapper's own hausdorffDistanceL1.
|
| template<class ResultNumber = division_result_t<NumberType>, SegmentConcept OtherSegment> |
| constexpr auto | hausdorffDistanceLInf (const OtherSegment &other) const |
| | Returns the Chebyshev (LInf) Hausdorff distance to the given shape.
|
| template<class ResultNumber = division_result_t<NumberType>, OrientedSegmentConcept OtherOrientedSegment> |
| constexpr auto | hausdorffDistanceLInf (const OtherOrientedSegment &other) const |
| | Returns the Chebyshev (LInf) Hausdorff distance to the given shape.
|
| template<class ResultNumber = NumberType, PointConcept OtherPoint> |
| constexpr auto | hausdorffDistanceLInf (const OtherPoint &point) const |
| | Returns the Chebyshev (LInf) Hausdorff distance to the given shape.
|
template<class ResultNumber = division_result_t<NumberType>, typename OtherShape>
requires ((detail::shapeRank<OtherShape> > detail::shapeRank<OrientedSegment>) && requires(const OtherShape& o, const
OrientedSegment& self) { o.template hausdorffDistanceLInf<ResultNumber>(self); }) |
| constexpr auto | hausdorffDistanceLInf (const OtherShape &other) const |
| | Returns the Chebyshev (LInf) Hausdorff distance to the given shape.
|
| template<class ResultNumber = division_result_t<NumberType>, PointConcept OtherPoint> |
| constexpr auto | hausdorffDistanceLInf (const Shape< OtherPoint > &other) const |
| | Returns the distance to the given shape, using symmetry to re-dispatch through the wrapper's own hausdorffDistanceLInf.
|
| template<class ResultNumber = division_result_t<NumberType>, SegmentConcept OtherSegment> |
| constexpr auto | squaredHausdorffDistance (const OtherSegment &other) const |
| | Returns the squared Hausdorff distance to another unordered segment.
|
| template<class ResultNumber = division_result_t<NumberType>, OrientedSegmentConcept OtherOrientedSegment> |
| constexpr auto | squaredHausdorffDistance (const OtherOrientedSegment &other) const |
| | Returns the squared Hausdorff distance to another oriented segment.
|
| template<class ResultNumber = NumberType, PointConcept OtherPoint> |
| constexpr auto | squaredHausdorffDistance (const OtherPoint &point) const |
| | Returns the squared Hausdorff distance to a point.
|
template<class ResultNumber = division_result_t<NumberType>, typename OtherShape>
requires ((detail::shapeRank<OtherShape> > detail::shapeRank<OrientedSegment>) && requires(const OtherShape& o, const
OrientedSegment& self) { o.template squaredHausdorffDistance<ResultNumber>(self); }) |
| constexpr auto | squaredHausdorffDistance (const OtherShape &other) const |
| | Returns the squared Hausdorff distance to the given shape.
|
| constexpr Segment< PointType > | diameter () const |
| | Returns an unordered segment defining the diameter.
|
template<class ResultNumber = grid_number_t<typename PointType_::NumberType>>
requires (detail::extended_integral<ResultNumber> || std::same_as<ResultNumber, BigInt>) |
| std::vector< Point< ResultNumber, typename PointType::LabelType > > | latticePoints () const |
| | Returns the integer points the oriented segment contains.
|
| constexpr Rectangle< PointType > | bbox () const |
| | Returns the bounding box of the oriented segment.
|
| template<std::floating_point ResultNumber = double> |
| constexpr Rectangle< Point< ResultNumber > > | fbox () const |
| | Returns a bounding box of the oriented segment with floating point coordinates.
|
| constexpr std::array< PointType, 2 > | vertices () const |
| | Returns the two endpoints in source-to-target order.
|
| constexpr Convex< PointType > | convexHull () const |
| | Returns the convex hull of the segment's endpoints.
|
| constexpr std::array< Segment< PointType >, 1 > | edges () const |
| | Returns the unique geometric edge of the oriented segment.
|
| constexpr std::array< OrientedSegment, 1 > | orientedEdges () const |
| | Returns the unique oriented edge of the oriented segment.
|
| template<class ResultNumber = division_result_t<NumberType>> |
| constexpr Point< ResultNumber > | midpoint () const |
| | Returns the midpoint of the segment.
|
| template<class ResultNumber = division_result_t<NumberType>> |
| constexpr Point< ResultNumber > | pointInside () const |
| | Returns a point inside the segment.
|
| template<class OtherShape> |
| constexpr bool | pointInsideInteriorContainedIn (const OtherShape &shape) const |
| | Tests whether some point in this shape's relative interior lies in the strict interior of shape.
|
template<class OtherShape>
requires MinkowskiSummableConcept<OrientedSegment<PointType_, TLabel>, OtherShape> |
| constexpr auto | minkowskiSum (const OtherShape &other) const |
| | Returns the Minkowski sum of this shape and another (A ⊕ B).
|
template<class OtherShape>
requires MinkowskiSummableConcept<OrientedSegment<PointType_, TLabel>, OtherShape> |
| constexpr auto | minkowskiErosion (const OtherShape &other) const |
| | Returns the Minkowski erosion of this shape by another (A ⊖ B).
|
template<class OtherShape>
requires (!MinkowskiSummableConcept<OrientedSegment<PointType_, TLabel>, OtherShape> && BoundedPolygonalConcept<OtherShape>) |
| constexpr auto | minkowskiErosion (const OtherShape &other) const |
| | Returns the Minkowski erosion of this shape by a bounded polygonal one (A ⊖ B).
|
template<class ResultNumber = division_result_t<NumberType>, typename OtherShape>
requires (!MinkowskiSummableConcept<OrientedSegment<PointType_, TLabel>, OtherShape> && (detail::shapeRank<OtherShape>
> detail::shapeRank<OrientedSegment>) && requires(const OtherShape& o, const OrientedSegment& self) { o.template
minkowskiSum<ResultNumber>(self); }) |
| auto | minkowskiSum (const OtherShape &other) const |
| | Returns the regularized Minkowski sum of the two shapes (A ⊕ B).
|
| template<PointConcept OtherPoint> |
| constexpr OrientedSegment & | operator+= (const OtherPoint &translation) |
| | Translates the oriented segment by the given point in place.
|
| template<PointConcept OtherPoint> |
| constexpr OrientedSegment & | operator-= (const OtherPoint &translation) |
| | Translates the oriented segment by the negation of the given point in place.
|
template<class Scalar>
requires (!detail::is_point_v<Scalar> && !TransformationConcept<Scalar>) |
| constexpr OrientedSegment & | operator*= (const Scalar &scalar) |
| | Scales the oriented segment around the origin by a scalar in place.
|
template<class Scalar>
requires (!detail::is_point_v<Scalar> && !TransformationConcept<Scalar>) |
| constexpr OrientedSegment & | operator/= (const Scalar &scalar) |
| | Divides the oriented segment coordinates by a scalar in place.
|
| template<PointConcept OtherPoint> |
| constexpr OrientedSegment< PointType, LabelType > & | operator+= (const OtherPoint &translation) |
| template<PointConcept OtherPoint> |
| constexpr OrientedSegment< PointType, LabelType > & | operator-= (const OtherPoint &translation) |
template<class Scalar>
requires (!detail::is_point_v<Scalar> && !TransformationConcept<Scalar>) |
| constexpr OrientedSegment< PointType, LabelType > & | operator*= (const Scalar &scalar) |
template<class Scalar>
requires (!detail::is_point_v<Scalar> && !TransformationConcept<Scalar>) |
| constexpr OrientedSegment< PointType, LabelType > & | operator/= (const Scalar &scalar) |
| template<class OtherNumber> |
| constexpr OrientedSegment< PointType, LabelType > | scaledUpX (const OtherNumber scalar) const |
| template<class OtherNumber> |
| constexpr OrientedSegment< PointType, LabelType > | scaledUpY (const OtherNumber scalar) const |
| template<class OtherNumber> |
| constexpr OrientedSegment< PointType, LabelType > | scaledDownX (const OtherNumber scalar) const |
| template<class OtherNumber> |
| constexpr OrientedSegment< PointType, LabelType > | scaledDownY (const OtherNumber scalar) const |