diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2019-03-03 21:09:10 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2019-03-03 21:10:13 +0100 |
commit | f0238cfb6997c4acfc2bd200de7295f3fa36968f (patch) | |
tree | b215183760e4f615b9c1dabc1f116383b72a1b55 /eigen/demos/opengl/camera.h | |
parent | 543edd372a5193d04b3de9f23c176ab439e51b31 (diff) |
don't index Eigen
Diffstat (limited to 'eigen/demos/opengl/camera.h')
-rw-r--r-- | eigen/demos/opengl/camera.h | 118 |
1 files changed, 0 insertions, 118 deletions
diff --git a/eigen/demos/opengl/camera.h b/eigen/demos/opengl/camera.h deleted file mode 100644 index 15714d2..0000000 --- a/eigen/demos/opengl/camera.h +++ /dev/null @@ -1,118 +0,0 @@ -// This file is part of Eigen, a lightweight C++ template library -// for linear algebra. -// -// Copyright (C) 2008 Gael Guennebaud <gael.guennebaud@inria.fr> -// -// This Source Code Form is subject to the terms of the Mozilla -// Public License v. 2.0. If a copy of the MPL was not distributed -// with this file, You can obtain one at http://mozilla.org/MPL/2.0/. - -#ifndef EIGEN_CAMERA_H -#define EIGEN_CAMERA_H - -#include <Eigen/Geometry> -#include <QObject> -// #include <frame.h> - -class Frame -{ - public: - EIGEN_MAKE_ALIGNED_OPERATOR_NEW - - inline Frame(const Eigen::Vector3f& pos = Eigen::Vector3f::Zero(), - const Eigen::Quaternionf& o = Eigen::Quaternionf()) - : orientation(o), position(pos) - {} - Frame lerp(float alpha, const Frame& other) const - { - return Frame((1.f-alpha)*position + alpha * other.position, - orientation.slerp(alpha,other.orientation)); - } - - Eigen::Quaternionf orientation; - Eigen::Vector3f position; -}; - -class Camera -{ - public: - EIGEN_MAKE_ALIGNED_OPERATOR_NEW - - Camera(void); - - Camera(const Camera& other); - - virtual ~Camera(); - - Camera& operator=(const Camera& other); - - void setViewport(uint offsetx, uint offsety, uint width, uint height); - void setViewport(uint width, uint height); - - inline uint vpX(void) const { return mVpX; } - inline uint vpY(void) const { return mVpY; } - inline uint vpWidth(void) const { return mVpWidth; } - inline uint vpHeight(void) const { return mVpHeight; } - - inline float fovY(void) const { return mFovY; } - void setFovY(float value); - - void setPosition(const Eigen::Vector3f& pos); - inline const Eigen::Vector3f& position(void) const { return mFrame.position; } - - void setOrientation(const Eigen::Quaternionf& q); - inline const Eigen::Quaternionf& orientation(void) const { return mFrame.orientation; } - - void setFrame(const Frame& f); - const Frame& frame(void) const { return mFrame; } - - void setDirection(const Eigen::Vector3f& newDirection); - Eigen::Vector3f direction(void) const; - void setUp(const Eigen::Vector3f& vectorUp); - Eigen::Vector3f up(void) const; - Eigen::Vector3f right(void) const; - - void setTarget(const Eigen::Vector3f& target); - inline const Eigen::Vector3f& target(void) { return mTarget; } - - const Eigen::Affine3f& viewMatrix(void) const; - const Eigen::Matrix4f& projectionMatrix(void) const; - - void rotateAroundTarget(const Eigen::Quaternionf& q); - void localRotate(const Eigen::Quaternionf& q); - void zoom(float d); - - void localTranslate(const Eigen::Vector3f& t); - - /** Setup OpenGL matrices and viewport */ - void activateGL(void); - - Eigen::Vector3f unProject(const Eigen::Vector2f& uv, float depth, const Eigen::Matrix4f& invModelview) const; - Eigen::Vector3f unProject(const Eigen::Vector2f& uv, float depth) const; - - protected: - void updateViewMatrix(void) const; - void updateProjectionMatrix(void) const; - - protected: - - uint mVpX, mVpY; - uint mVpWidth, mVpHeight; - - Frame mFrame; - - mutable Eigen::Affine3f mViewMatrix; - mutable Eigen::Matrix4f mProjectionMatrix; - - mutable bool mViewIsUptodate; - mutable bool mProjIsUptodate; - - // used by rotateAroundTarget - Eigen::Vector3f mTarget; - - float mFovY; - float mNearDist; - float mFarDist; -}; - -#endif // EIGEN_CAMERA_H |