Ignition Rendering

API Reference

5.0.0
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 IGNITION_RENDERING_TRANSFORMCONTROLLER_HH_
18 #define IGNITION_RENDERING_TRANSFORMCONTROLLER_HH_
19 
20 #include <memory>
21 
23 
25 #include <ignition/math/Plane.hh>
26 #include <ignition/math/Vector3.hh>
27 
28 #include "ignition/rendering/config.hh"
32 
33 namespace ignition
34 {
35  namespace rendering
36  {
37  inline namespace IGNITION_RENDERING_VERSION_NAMESPACE {
38  //
39  // forward declarations
40  class TransformControllerPrivate;
41 
42  /* \class TransformController TransformController.hh \
43  * ignition/rendering/TransformController.hh
44  */
46  class IGNITION_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 
68  public: virtual NodePtr Node() const;
69 
72  public: virtual void Attach(NodePtr _node);
73 
76  public: virtual void Detach();
77 
80  public: virtual void SetTransformMode(TransformMode _mode);
81 
84  public: virtual TransformMode Mode() const;
85 
88  public: virtual void SetTransformSpace(TransformSpace _space);
89 
92  public: virtual TransformSpace Space() const;
93 
96  public: virtual void SetActiveAxis(const math::Vector3d &_axis);
97 
100  public: virtual math::Vector3d ActiveAxis() const;
101 
105  public: virtual math::Vector3d AxisById(unsigned int _id) const;
106 
111  public: virtual void Translate(const math::Vector3d &_translation,
112  bool _snap = false);
113 
118  public: virtual void Rotate(const math::Quaterniond &_rotation,
119  bool _snap = false);
120 
125  public: virtual void Scale(const math::Vector3d &_scale,
126  bool _snap = false);
127 
136  public: static ignition::math::Vector3d SnapPoint(
137  const ignition::math::Vector3d &_point, const double _interval = 1.0,
138  const double _sensitivity = 0.4);
139 
143  public: virtual void Start();
144 
148  public: virtual void Stop();
149 
152  public: virtual bool Active() const;
153 
163  public: math::Vector3d TranslationFrom2d(const math::Vector3d &_axis,
164  const math::Vector2d &_start, const math::Vector2d &_end);
165 
175  public: math::Quaterniond RotationFrom2d(const math::Vector3d &_axis,
176  const math::Vector2d &_start, const math::Vector2d &_end);
177 
187  public: math::Vector3d ScaleFrom2d(const math::Vector3d &_axis,
188  const math::Vector2d &_start, const math::Vector2d &_end);
189 
193  public: static math::Vector3d ToAxis(TransformAxis _axis);
194 
202  protected: math::Planed CreatePlaneForTransform(
203  const math::Vector3d &_axis, const math::Vector2d &_pt2d);
204 
211  protected: bool RayPlaneIntersection(RayQueryPtr _ray,
212  const math::Planed &_plane, math::Vector3d &_result);
213 
218  };
219  }
220  }
221 }
222 #endif
std::unique_ptr< TransformControllerPrivate > dataPtr
Private data pointer.
Definition: TransformController.hh:216
TransformAxis
Definition: TransformType.hh:34
An transform tool for translating, rotating, and scaling objects.
Definition: TransformController.hh:46
#define IGN_COMMON_WARN_RESUME__DLL_INTERFACE_MISSING
Represents a single posable node in the scene graph.
Definition: Node.hh:37
Posable camera used for rendering the scene graph.
Definition: Camera.hh:40
TransformMode
Definition: TransformType.hh:60
TransformSpace
Definition: TransformType.hh:74
#define IGN_COMMON_WARN_IGNORE__DLL_INTERFACE_MISSING