Visual Computing Library
Loading...
Searching...
No Matches
vcl::PlaneConcept Concept Reference

A C++ concept that requires a type to represent a plane in 3D space. More...

#include <vclib/concepts/space/plane.h>

Concept definition

template<typename T>
concept vcl::PlaneConcept = requires (
T&& obj,
typename RemoveRef<T>::PointType p,
typename RemoveRef<T>::ScalarType s) {
typename RemoveRef<T>::ScalarType;
typename RemoveRef<T>::PointType;
RemoveRef<T>();
RemoveRef<T>(p, s);
RemoveRef<T>(p, p);
RemoveRef<T>(p, p, p);
{ obj.direction() } -> Point3Concept;
{ obj.offset() } -> std::same_as<decltype(s)>;
{ obj.projectPoint(p) } -> Point3Concept;
{ obj.mirrorPoint(p) } -> Point3Concept;
{ obj == obj } -> std::same_as<bool>;
{ obj != obj } -> std::same_as<bool>;
}
A class representing a line segment in n-dimensional space. The class is parameterized by a PointConc...
Definition segment.h:43
A C++ concept that requires a type to represent a plane in 3D space.
Definition plane.h:57
Concept for points in three-dimensional space.
Definition point.h:130

Detailed Description

A C++ concept that requires a type to represent a plane in 3D space.

Template Parameters
TThe type to check for compliance with the PlaneConcept.

This concept requires that the input type T has the following public member functions:

  • typename T::ScalarType: A type alias representing the scalar type used in the plane equations.
  • typename T::PointType: A type alias representing the Point type used in the plane equations.
  • const typename T::PointType& T::direction(): A const reference to the direction vector of the plane.
  • typename T::ScalarType T::offset(): The offset of the plane from the origin.
  • typename T::PointType T::projectPoint(const typename T::PointType& p): Projects a point onto the plane.
  • typename T::PointType T::mirrorPoint(const typename T::PointType& p): Mirrors a point across the plane.
  • bool T::operator==(const T& o): Equality comparison operator for planes.
  • bool T::operator!=(const T& o): Inequality comparison operator for planes.

All of the member functions must satisfy the requirements listed in the Doxygen comments above.