11 namespace visualization {
66 const Eigen::Vector3f& axis) {
68 model_matrix.rotate(Eigen::AngleAxis<float>(angle_rad, axis));
74 model_matrix.translate(v);
82 d_fov = float(-dy) * 0.1f;
85 d_fov = float(dy) * 0.2f;
88 d_fov = float(dy) * 2.0f;
93 old_fov = float(fov_at_mouse_down_);
97 float new_fov = old_fov + d_fov;
101 float to_radians = float(
M_PI / 180.0);
103 Eigen::Vector3f camera_pos, cor;
111 Eigen::Vector3f to_cor = cor - camera_pos;
112 float old_dist_from_plane_to_cor = to_cor.norm() - near_v;
113 float new_dist_from_plane_to_cor =
114 (near_v + old_dist_from_plane_to_cor) *
115 std::tan(old_fov / 2.0f * to_radians) /
116 std::tan(new_fov / 2.0f * to_radians) -
119 Dolly(-(new_dist_from_plane_to_cor - old_dist_from_plane_to_cor),
122 Dolly(-(new_dist_from_plane_to_cor - old_dist_from_plane_to_cor),
virtual Eigen::Vector3d GetCenter() const override
Returns the center of the geometry coordinates.
void RotateLocal(float angle_rad, const Eigen::Vector3f &axis)
void Zoom(int dy, DragType drag_type)
Sets camera field of view.
void RotateZ(int dx, int dy) override
Rotates about the forward axis of the matrix.
void Rotate(int dx, int dy) override
void UpdateMouseDragUI() override
void MoveLocal(const Eigen::Vector3f &v)
void SetBoundingBox(const ccBBox &bounds) override
void StartMouseDrag() override
void EndMouseDrag() override
void Pan(int dx, int dy) override
void Dolly(float dy, DragType type) override
CameraInteractorLogic(Camera *c, double min_far_plane)
void RotateFly(int dx, int dy)
Eigen::Transform< float, 3, Eigen::Affine > Transform
virtual void SetModelMatrix(const Transform &view)=0
virtual Eigen::Vector3f GetPosition() const =0
virtual double GetNear() const =0
virtual Transform GetModelMatrix() const =0
virtual double GetFar() const =0
virtual double GetFieldOfView() const =0
only valid if fov was passed to SetProjection()
virtual FovType GetFieldOfViewType() const =0
only valid if fov was passed to SetProjection()
virtual void SetProjection(double fov, double aspect, double near, double far, FovType fov_type)=0
void SetMouseDownInfo(const Camera::Transform &matrix, const Eigen::Vector3f ¢er_of_rotation)
const Camera::Transform & GetMatrix() const
virtual void RotateZ(int dx, int dy)
Rotates about the forward axis of the matrix.
Eigen::Vector3f center_of_rotation_
virtual void Rotate(int dx, int dy)
virtual void Dolly(float dy, DragType drag_type)
virtual void SetBoundingBox(const ccBBox &bounds)
Camera::Transform matrix_at_mouse_down_
Eigen::Vector3f center_of_rotation_at_mouse_down_
void UpdateCameraFarPlane()
virtual void Pan(int dx, int dy)
Generic file read and write utility for python interface.