52 lines
1.6 KiB
C++
Executable File
52 lines
1.6 KiB
C++
Executable File
// ----------------------------------------------------------------------------
|
|
// - Open3D: www.open3d.org -
|
|
// ----------------------------------------------------------------------------
|
|
// Copyright (c) 2018-2023 www.open3d.org
|
|
// SPDX-License-Identifier: MIT
|
|
// ----------------------------------------------------------------------------
|
|
|
|
#pragma once
|
|
|
|
#include "open3d/visualization/rendering/RotationInteractorLogic.h"
|
|
|
|
namespace open3d {
|
|
namespace visualization {
|
|
namespace rendering {
|
|
|
|
class CameraInteractorLogic : public RotationInteractorLogic {
|
|
using Super = RotationInteractorLogic;
|
|
|
|
public:
|
|
CameraInteractorLogic(Camera* c, double min_far_plane);
|
|
|
|
void SetBoundingBox(
|
|
const geometry::AxisAlignedBoundingBox& bounds) override;
|
|
|
|
void Rotate(int dx, int dy) override;
|
|
void RotateZ(int dx, int dy) override;
|
|
void Dolly(float dy, DragType type) override;
|
|
void Dolly(float z_dist, Camera::Transform matrix_in) override;
|
|
|
|
void Pan(int dx, int dy) override;
|
|
|
|
/// Sets camera field of view
|
|
void Zoom(int dy, DragType drag_type);
|
|
|
|
void RotateLocal(float angle_rad, const Eigen::Vector3f& axis);
|
|
void MoveLocal(const Eigen::Vector3f& v);
|
|
|
|
void RotateFly(int dx, int dy);
|
|
|
|
void StartMouseDrag() override;
|
|
void ResetMouseDrag();
|
|
void UpdateMouseDragUI() override;
|
|
void EndMouseDrag() override;
|
|
|
|
private:
|
|
double fov_at_mouse_down_;
|
|
};
|
|
|
|
} // namespace rendering
|
|
} // namespace visualization
|
|
} // namespace open3d
|