kinect/codes/Azure-Kinect-Sensor-SDK/tools/k4aviewer/k4apointcloudviewcontrol.h

69 lines
1.7 KiB
C++

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
#ifndef K4APOINTCLOUDVIEWCONTROL_H
#define K4APOINTCLOUDVIEWCONTROL_H
// System headers
//
// Library headers
//
#include "k4aimgui_all.h"
#include "linmath.h"
// Project headers
//
namespace k4aviewer
{
// The type of movement that a mouse movement should be interpreted as (if any)
//
enum class MouseMovementType
{
None,
Rotation,
Translation
};
// A camera class that processes input and calculates the view matrices for use in OpenGL
//
class ViewControl
{
public:
ViewControl();
// Returns the view matrix calculated using an arcball camera
//
void GetViewMatrix(linmath::mat4x4 viewMatrix);
// Gets a matrix representing the perspective transformation
//
void GetPerspectiveMatrix(linmath::mat4x4 perspectiveMatrix, const linmath::vec2 renderDimensions) const;
// Processes input received from a mouse input system.
// Mouse position is relative to the start of the point cloud display, not the window.
//
void ProcessMouseMovement(const linmath::vec2 displayDimensions,
const linmath::vec2 mousePos,
const linmath::vec2 mouseDelta,
MouseMovementType movementType);
// Processes input received from a mouse scroll-wheel event. Only requires input on the vertical wheel-axis
//
void ProcessMouseScroll(float yoffset);
// Reset camera view back to default position
//
void ResetPosition();
private:
float m_zoom;
linmath::mat4x4 m_userRotations;
linmath::vec3 m_pointCloudPosition;
};
} // namespace k4aviewer
#endif