CameraManager::CameraManager()
    : m_conf(PERSPECTIVE),
      m_camSpeed(10.0f),
      m_useCam(false),
      m_active(0)
{
    m_aspect           = params::inst().windowSize.x / params::inst().windowSize.y;
    m_fov              = 45.0f;
    m_ncp              = 1.0f;
    m_fcp              = 10.0f * params::inst().scale;
    m_rotHeight        = -1.0f;
    m_rotate           = glm::vec3(20.0f, 0.0f, 0.0f);
    m_translate        = glm::vec3(0.0f, 0.0f, -1.5f * params::inst().scale);
    m_zoomTrans        = glm::vec3(0.0f);
    m_mouseSensitivity = 0.1f;

    m_camSpeed         = 1.0f;
    m_useCam           = false;
    m_active           = 0;
    unique_ptr<Camera> cam0(new Camera(glm::vec3(0.0f, 4.0f, 2.0f),
                                       180.0f,
                                       10.0f,
                                       0.0f,
                                       m_fov,
                                       m_ncp,
                                       m_fcp));
    cam0->setSpeed(m_camSpeed);
    cam0->update();
    cam0->loadFrameDirectory("../data/Camera");
    m_cameras.push_back(std::move(cam0));
}
void setupCasadiVars(const std::vector<Matrix<X_DIM> >& X, const std::vector<Matrix<U_DIM> >& U, double* XU_arr, double* Sigma0_arr, double* params_arr, double* cam0_arr, double* cam1_arr)
{
	int index = 0;
	for(int t = 0; t < T-1; ++t) {
		for(int i=0; i < X_DIM; ++i) {
			XU_arr[index++] = X[t][i];
		}

		for(int i=0; i < U_DIM; ++i) {
			XU_arr[index++] = U[t][i];
		}
	}
	for(int i=0; i < X_DIM; ++i) {
		XU_arr[index++] = X[T-1][i];
	}

	Matrix<X_DIM,X_DIM> Sigma0 = SqrtSigma0*SqrtSigma0;
	index = 0;
	for(int i=0; i < X_DIM; ++i) {
		for(int j=0; j < X_DIM; ++j) {
			Sigma0_arr[index++] = Sigma0(i,j);
		}
	}

	params_arr[0] = alpha_belief;
	params_arr[1] = alpha_control;
	params_arr[2] = alpha_final_belief;

	cam0_arr[0] = cam0(0,0);
	cam0_arr[1] = cam0(1,0);
	cam0_arr[2] = cam0(2,0);

	cam1_arr[0] = cam1(0,0);
	cam1_arr[1] = cam1(1,0);
	cam1_arr[2] = cam1(2,0);
}
Exemple #3
0
/*!
 *
 */
cv::Point3f CameraParameters::getCameraLocation(const cv::Mat &Rvec, const cv::Mat &Tvec)
{
  cv::Mat m33(3,3,CV_32FC1);
  cv::Rodrigues(Rvec, m33)  ;

  cv::Mat m44=cv::Mat::eye(4,4,CV_32FC1);
  for (int i=0; i<3; i++)
    for (int j=0; j<3; j++)
      m44.at<float>(i,j)=m33.at<float>(i,j);

  //now, add translation information
  for (int i=0; i<3; i++)
    m44.at<float>(i,3)=Tvec.at<float>(i,0);
  //invert the matrix
  cv::Mat cam0(4, 1, CV_32FC1, cv::Scalar(0.f));
  cam0.at<float>(3,0) = 1.f;
  cv::Mat pos = m44.inv() * cam0;
  return  cv::Point3f(pos.at<float>(0,0),pos.at<float>(1,0), pos.at<float>(2,0));
}