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>