11 namespace visualization {
40 const Eigen::Vector3f& center_of_rotation) {
58 Eigen::AngleAxisf rot_matrix(0, Eigen::Vector3f(1, 0, 0));
73 Eigen::Vector3f axis(
float(-dy),
float(dx), 0);
74 axis = axis.normalized();
77 axis = matrix.rotation() * axis;
78 rot_matrix = rot_matrix * Eigen::AngleAxisf(-theta, axis);
80 auto pos = matrix * Eigen::Vector3f(0, 0, 0);
82 auto dist = to_cor.norm();
87 Eigen::Vector3f forward =
88 matrix.rotation() * Eigen::Vector3f{0.0f, 0.0f, -1.0f};
89 if (to_cor.dot(forward) < 0) {
94 rot_matrix * matrix.rotation(),
95 Eigen::Vector3f(1, 1, 1));
96 m.translate(Eigen::Vector3f(0, 0,
dist));
103 const Eigen::Vector3f& x_axis,
104 const Eigen::Vector3f& y_axis) {
109 Eigen::Vector3f axis = dx * x_axis + dy * y_axis;
110 axis = axis.normalized();
113 axis = matrix.rotation() * axis;
115 Camera::Transform::Identity() * Eigen::AngleAxisf(-theta, axis);
117 auto pos = matrix * Eigen::Vector3f(0, 0, 0);
121 rot_matrix * matrix.rotation(),
122 Eigen::Vector3f(1, 1, 1));
123 m.translate(Eigen::Vector3f(0, 0,
dist));
129 Eigen::Vector3f moved(
float(dx),
float(dy), 0);
137 Eigen::Vector3f axis(0, 0, 1);
140 matrix.rotate(Eigen::AngleAxisf(rad, axis));
146 const Eigen::Vector3f& forward) {
148 Eigen::AngleAxisf rot_matrix(rad, forward);
152 matrix *= rot_matrix;
184 auto forward = Eigen::Vector3f(0, 0, -z_dist);
185 matrix.translate(forward);
virtual Eigen::Vector3d GetMaxBound() const override
Returns max bounds for geometry coordinates.
virtual Eigen::Vector3d GetMinBound() const override
Returns min bounds for geometry coordinates.
Eigen::Transform< float, 3, Eigen::Affine > Transform
float CalcRotateRadians(int dx, int dy)
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.
void SetMatrix(const Camera::Transform &matrix)
virtual ~MatrixInteractorLogic()
Eigen::Vector3f center_of_rotation_
const ccBBox & GetBoundingBox() const
int GetViewHeight() const
virtual void Rotate(int dx, int dy)
virtual void Dolly(float dy, DragType drag_type)
virtual void SetBoundingBox(const ccBBox &bounds)
float CalcDollyDist(float dy, DragType drag_type, const Camera::Transform &matrix)
void SetViewSize(int width, int height)
virtual void RotateZWorld(int dx, int dy, const Eigen::Vector3f &forward)
Eigen::Vector3f GetCenterOfRotation() const
Camera::Transform matrix_at_mouse_down_
float CalcRotateZRadians(int dx, int dy)
Eigen::Vector3f center_of_rotation_at_mouse_down_
virtual void RotateWorld(int dx, int dy, const Eigen::Vector3f &x_axis, const Eigen::Vector3f &y_axis)
__host__ __device__ float length(float2 v)
static double dist(double x1, double y1, double x2, double y2)
Generic file read and write utility for python interface.