Physics Simulation & Visualization Tool 0.1
A C++ physics simulation engine with real-time 3D visualization
Loading...
Searching...
No Matches
RotateHandle.h
Go to the documentation of this file.
1#include <glm/glm.hpp>
2#include <glm/detail/type_quat.hpp>
3
4#include "IHandle.h"
5
6class SceneObject;
7
8class RotateHandle : public IHandle{
9public:
11
12 void onDrag(const Math::Ray& ray) override;
13 void setDragState(glm::vec3 initHitPos) override;
14 glm::mat4 getModelMatrix() const override;
15 glm::vec3 getAxisDir() const override { return axisDir(axis); }
16
17private:
18 SceneObject* target;
19 Axis axis;
20
21 constexpr static float scale = 2.0f;
22
23 glm::vec3 initialHitPoint;
24 glm::quat originalQuat;
25};
Axis
Cardinal axes for handle orientation.
Definition Axis.h:7
Interface for interactive manipulation handles on gizmos.
constexpr glm::vec3 axisDir(Axis a)
Converts an axis enum to its corresponding unit vector.
Definition IHandle.h:17
Abstract interface for gizmo manipulation handles.
Definition IHandle.h:47
glm::mat4 getModelMatrix() const override
Gets the model transformation matrix for rendering this handle.
void onDrag(const Math::Ray &ray) override
Handles continuous dragging motion.
void setDragState(glm::vec3 initHitPos) override
Initializes the drag operation state.
glm::vec3 getAxisDir() const override
Gets the axis direction this handle operates along/around.
Represents a ray in 3D space.
Definition Ray.h:11