Gazebo Physics

API Reference

8.0.0
CylinderShape.hh
Go to the documentation of this file.
1/*
2 * Copyright (C) 2018 Open Source Robotics Foundation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *
16*/
17
18#ifndef GZ_PHYSICS_CYLINDERSHAPE_HH_
19#define GZ_PHYSICS_CYLINDERSHAPE_HH_
20
21#include <string>
22
25
26namespace gz
27{
28 namespace physics
29 {
31
32 class GZ_PHYSICS_VISIBLE GetCylinderShapeProperties
33 : public virtual FeatureWithRequirements<CylinderShapeCast>
34 {
35 public: template <typename PolicyT, typename FeaturesT>
36 class CylinderShape : public virtual Entity<PolicyT, FeaturesT>
37 {
38 public: using Scalar = typename PolicyT::Scalar;
39
42 public: Scalar GetRadius() const;
43
47 public: Scalar GetHeight() const;
48 };
49
50 public: template <typename PolicyT>
51 class Implementation : public virtual Feature::Implementation<PolicyT>
52 {
53 public: using Scalar = typename PolicyT::Scalar;
54
55 public: virtual Scalar GetCylinderShapeRadius(
56 const Identity &_cylinderID) const = 0;
57
58 public: virtual Scalar GetCylinderShapeHeight(
59 const Identity &_cylinderID) const = 0;
60 };
61 };
62
66 class GZ_PHYSICS_VISIBLE SetCylinderShapeProperties
67 : public virtual FeatureWithRequirements<CylinderShapeCast>
68 {
69 public: template <typename PolicyT, typename FeaturesT>
70 class CylinderShape : public virtual Entity<PolicyT, FeaturesT>
71 {
72 public: using Scalar = typename PolicyT::Scalar;
73
77 public: void SetRadius(Scalar _radius);
78
82 public: void SetHeight(Scalar _height);
83 };
84
85 public: template <typename PolicyT>
86 class Implementation : public virtual Feature::Implementation<PolicyT>
87 {
88 public: using Scalar = typename PolicyT::Scalar;
89
90 public: virtual void SetCylinderShapeRadius(
91 const Identity &_cylinderID, Scalar _radius) = 0;
92
93 public: virtual void SetCylinderShapeHeight(
94 const Identity &_cylinderID, Scalar _height) = 0;
95 };
96 };
97
102 class GZ_PHYSICS_VISIBLE AttachCylinderShapeFeature
103 : public virtual FeatureWithRequirements<CylinderShapeCast>
104 {
105 public: template <typename PolicyT, typename FeaturesT>
106 class Link : public virtual Feature::Link<PolicyT, FeaturesT>
107 {
108 public: using Scalar = typename PolicyT::Scalar;
109
110 public: using PoseType =
111 typename FromPolicy<PolicyT>::template Use<Pose>;
112
113 public: using ShapePtrType = CylinderShapePtr<PolicyT, FeaturesT>;
114
124 const std::string &_name = "cylinder",
125 Scalar _radius = 1.0,
126 Scalar _height = 1.0,
127 const PoseType &_pose = PoseType::Identity());
128 };
129
130 public: template <typename PolicyT>
131 class Implementation : public virtual Feature::Implementation<PolicyT>
132 {
133 public: using Scalar = typename PolicyT::Scalar;
134
135 public: using PoseType =
136 typename FromPolicy<PolicyT>::template Use<Pose>;
137
138 public: virtual Identity AttachCylinderShape(
139 const Identity &_linkID,
140 const std::string &_name,
141 Scalar _radius,
142 Scalar _height,
143 const PoseType &_pose) = 0;
144 };
145 };
146 }
147}
148
149#include <gz/physics/detail/CylinderShape.hh>
150
151#endif