Gazebo Rendering

API Reference

7.4.2
gz/rendering/TransformController.hh
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2019 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 #ifndef GZ_RENDERING_TRANSFORMCONTROLLER_HH_
18 #define GZ_RENDERING_TRANSFORMCONTROLLER_HH_
19 
20 #include <memory>
21 
22 #include <gz/utils/SuppressWarning.hh>
23 
24 #include <gz/math/Quaternion.hh>
25 #include <gz/math/Plane.hh>
26 #include <gz/math/Vector3.hh>
27 
28 #include "gz/rendering/config.hh"
29 #include "gz/rendering/Camera.hh"
32 
33 namespace gz
34 {
35  namespace rendering
36  {
37  inline namespace GZ_RENDERING_VERSION_NAMESPACE {
38  //
39  // forward declarations
40  class TransformControllerPrivate;
41 
42  /* \class TransformController TransformController.hh \
43  * gz/rendering/TransformController.hh
44  */
46  class GZ_RENDERING_VISIBLE TransformController
47  {
49  public: TransformController();
50 
52  public: virtual ~TransformController();
53 
56  public: virtual void Update();
57 
60  public: virtual void SetCamera(const CameraPtr &_camera);
61 
64  public: virtual CameraPtr Camera() const;
65 
69  public: virtual NodePtr Node() const;
70 
73  public: virtual void Attach(NodePtr _node);
74 
77  public: virtual void Detach();
78 
81  public: virtual void SetTransformMode(TransformMode _mode);
82 
85  public: virtual TransformMode Mode() const;
86 
89  public: virtual void SetTransformSpace(TransformSpace _space);
90 
93  public: virtual TransformSpace Space() const;
94 
97  public: virtual void SetActiveAxis(const math::Vector3d &_axis);
98 
101  public: virtual math::Vector3d ActiveAxis() const;
102 
106  public: virtual math::Vector3d AxisById(unsigned int _id) const;
107 
112  public: virtual void Translate(const math::Vector3d &_translation,
113  bool _snap = false);
114 
119  public: virtual void Rotate(const math::Quaterniond &_rotation,
120  bool _snap = false);
121 
126  public: virtual void Scale(const math::Vector3d &_scale,
127  bool _snap = false);
128 
137  public: static gz::math::Vector3d SnapPoint(
138  const gz::math::Vector3d &_point, const double _interval = 1.0,
139  const double _sensitivity = 0.4);
140 
144  public: virtual void Start();
145 
149  public: virtual void Stop();
150 
153  public: virtual bool Active() const;
154 
164  public: math::Vector3d TranslationFrom2d(const math::Vector3d &_axis,
165  const math::Vector2d &_start, const math::Vector2d &_end);
166 
176  public: math::Quaterniond RotationFrom2d(const math::Vector3d &_axis,
177  const math::Vector2d &_start, const math::Vector2d &_end);
178 
188  public: math::Vector3d ScaleFrom2d(const math::Vector3d &_axis,
189  const math::Vector2d &_start, const math::Vector2d &_end);
190 
194  public: static math::Vector3d ToAxis(TransformAxis _axis);
195 
203  protected: math::Planed CreatePlaneForTransform(
204  const math::Vector3d &_axis, const math::Vector2d &_pt2d);
205 
212  protected: bool RayPlaneIntersection(RayQueryPtr _ray,
213  const math::Planed &_plane, math::Vector3d &_result);
214 
216  GZ_UTILS_WARN_IGNORE__DLL_INTERFACE_MISSING
218  GZ_UTILS_WARN_RESUME__DLL_INTERFACE_MISSING
219  };
220  }
221  }
222 }
223 #endif