#pragma once
#include "Eigen/Eigen"
namespace DFF_VideoMat
{
class CCameraFrame
{
protected:
	Eigen::Matrix3d m_K;
	Eigen::Matrix4d m_objAbsRT;
	Eigen::Matrix4d m_viewAbsRT;

public:
	CCameraFrame();
	~CCameraFrame();

	Eigen::Matrix3d GetObjAbsRot() const;
	Eigen::Matrix3d GetViewAbsRot() const;

	Eigen::Vector3d GetObjAbsT() const;
	Eigen::Vector3d GetViewAbsT() const;

	Eigen::Matrix4d GetObjAbsRT() const{ return m_objAbsRT;};
	Eigen::Matrix4d GetViewAbsRT() const{ return m_viewAbsRT;};
	Eigen::Matrix3d GetK() const;
	double GetFx()const {return m_K(0,0);};
	double GetFy()const {return m_K(1,1);};
	double GetCx()const {return m_K(0,2);};
	double GetCy()const {return m_K(1,2);};
	double GetSkew()const {return m_K(0,1);};

	static Eigen::Matrix4d ConvertObjViewAbsRTF(const Eigen::Matrix4d& objAbsRT);

	bool SetK(double fx,double fy,double cx,double cy,double skew = 0.0);
	bool SetObjAbsRT(const Eigen::Matrix4d& objAbsRT);
	bool SetViewAbsRT(const Eigen::Matrix4d& ViewAbsRT);
};

}