18#ifndef GZ_PHYSICS_PLANESHAPE_HH_
19#define GZ_PHYSICS_PLANESHAPE_HH_
33 class GetPlaneShapeProperties
34 :
public virtual FeatureWithRequirements<PlaneShapeCast>
36 public:
template <
typename PolicyT,
typename FeaturesT>
37 class PlaneShape :
public virtual Entity<PolicyT, FeaturesT>
39 public:
using Normal =
40 typename FromPolicy<PolicyT>::template Use<LinearVector>;
43 typename FromPolicy<PolicyT>::template Use<LinearVector>;
47 public: Normal GetNormal()
const;
51 public: Point GetPoint()
const;
54 public:
template <
typename PolicyT>
55 class Implementation :
public virtual Feature::Implementation<PolicyT>
57 public:
using Normal =
58 typename FromPolicy<PolicyT>::template Use<LinearVector>;
61 typename FromPolicy<PolicyT>::template Use<LinearVector>;
64 public:
virtual Normal GetPlaneShapeNormal(
65 const Identity &_planeID)
const = 0;
68 public:
virtual Point GetPlaneShapePoint(
69 const Identity &_planeID)
const = 0;
77 public:
template <
typename PolicyT,
typename FeaturesT>
98 public:
template <
typename PolicyT>
108 const Identity &_planeID,
109 const Normal &_normal) = 0;
112 const Identity &_planeID,
113 const Point &_point) = 0;
124 public:
template <
typename PolicyT,
typename FeaturesT>
144 const Point &_point = Point::Zero());
147 public:
template <
typename PolicyT>
157 const Identity &_linkID,
160 const Point &_point) = 0;
166#include <gz/physics/detail/PlaneShape.hh>