Gazebo Physics

API Reference

8.0.0
AddedMass.hh
Go to the documentation of this file.
1/*
2 * Copyright (C) 2022 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_ADDED_MASS_HH_
19#define GZ_PHYSICS_ADDED_MASS_HH_
20
21#include <gz/math/Matrix6.hh>
22
24
25
26namespace gz::physics
27{
28
29class AddedMass: public virtual Feature
30{
31 public: template <typename PolicyT, typename FeaturesT>
32 class Link : public virtual Feature::Link<PolicyT, FeaturesT>
33 {
34 public: void SetAddedMass(const gz::math::Matrix6d &_addedMass);
35 public: gz::math::Matrix6d GetAddedMass() const;
36 };
37
38 public: template <typename PolicyT>
39 class Implementation : public virtual Feature::Implementation<PolicyT>
40 {
41 public: virtual void SetLinkAddedMass(const Identity &_link,
42 const gz::math::Matrix6d &_addedMass) = 0;
44 const Identity &_link) const = 0;
45 };
46};
47
48template <typename PolicyT, typename FeaturesT>
50 const gz::math::Matrix6d &_addedMass) -> void
51{
52 this->template Interface<AddedMass>()
53 ->SetLinkAddedMass(this->identity, _addedMass);
54}
55template <typename PolicyT, typename FeaturesT>
56
58) const -> gz::math::Matrix6d
59{
60 return this->template Interface<AddedMass>()
61 ->GetLinkAddedMass(this->identity);
62}
63
64} // namespace gz::physics
65
66#endif // GZ_PHYSICS_ADDED_MASS_HH_)