#pragma once /** * @file IKApplication.h * * @brief Application class for labo 2. * * Nom: William Nolin * Code permanent : NOLW76060101 * Email : william.nolin.1@ens.etsmtl.ca */ #include #include #include #include #include #include #include #include #include "Armature.h" #include "LinkUI.h" #include "TargetUI.h" #include "IKSolver.h" #include "Math3D.h" class IKGLCanvas; // Iterative closest point algorithm // class IKApplication : public nanogui::Screen { public: IKApplication(); virtual bool keyboard_event(int key, int scancode, int action, int modifiers) override; virtual void draw(NVGcontext *ctx) override; nanogui::Window* getWindow() { return m_window.get(); } gti320::Armature* getArmature() const { return m_armature.get(); } const gti320::Vector3f& getTargetPos() const { return m_targetPos; } private: // Reset the source transform and the initial transform. // void reset(); void ikSolve(); void initializeArmature(); void initializeTarget(); std::unique_ptr m_ikSolver; std::unique_ptr m_canvas; nanogui::ref m_window; std::vector m_linkUIArr; std::unique_ptr m_targetUI; std::unique_ptr m_armature; gti320::Vector3f m_targetPos; };