Ejemplo n.º 1
0
PerspectiveCamera::PerspectiveCamera(float fieldOfView, float aspectRatio, float nearPlane, float farPlane) :
    Camera(),
    m_fieldOfView(fieldOfView),
    m_aspectRatio(aspectRatio),
    m_nearPlane(nearPlane),
    m_farPlane(farPlane)
{
    calculateProjectionMatrix();
}
Ejemplo n.º 2
0
/**
 * Projects a point in real world coordinates against the image
 * Output: image coordinate in pixels
 */
CvPoint MultipleViewGeomOld::getProjectionOf(float angle, CvPoint3D32f point) {

    //
    map<float, CvMat*>::iterator iter = projMatList.find(angle);

    CvMat *projMat = cvCreateMat(4, 3, CV_32FC1);

    if (iter == projMatList.end()) {
        // project matrix does not exist!!

        // Calculate rotation matrix
        CvMat* rtMat = calculateRotationMatrix(angle);

        // Calculate projection matrix
        projMat = calculateProjectionMatrix(rtMat);

        projMat = cvCloneMat(projMat);

        projMatList.insert(pair<float, CvMat*> (angle, projMat));

    } else {
        // otherwise it exists
        projMat = iter->second;
    }

    LOG4CPLUS_DEBUG(myLogger,"Projection matrix for angle: " << radToDegree(angle) << " and points: " << point << endl <<  printCvMat(projMat));

    //  [u v 1] = proj * [X Y Z 1]

    float uvContents[3];
    //CvMat* uvMat = cvMat(3, 1, CV_32F, uvContents);
    CvMat* uvMat = cvCreateMat(3, 1, CV_32F);
    cvInitMatHeader(uvMat, 3, 1, CV_32F, uvContents);


    float xyzContents[] = { point.x, point.y, point.z, 1 };
    //CvMat* xyzMat = cvMat(4, 1, CV_32F, xyzContents);
    CvMat* xyzMat = cvCreateMat(4, 1, CV_32F);
    cvInitMatHeader(xyzMat, 4, 1, CV_32F, xyzContents);

    cvMatMul (projMat, xyzMat,uvMat);

    LOG4CPLUS_DEBUG(myLogger, "Result [u v 1] = proj * [X Y Z 1]: " << endl << printCvMat(uvMat));

    return cvPoint(cvRound(cvmGet(uvMat, 0, 0)), cvRound(cvmGet(uvMat, 1, 0)));

}
Ejemplo n.º 3
0
Camera::Camera(glm::vec3 sceneDimensions):
    _angX(0),
    _angY(0),
    _locked(true),
	_interpolate(false),
	_attached(nullptr),
	_radius(2.0f)
{
    _model = glm::scale(glm::mat4(), glm::vec3(2 / sceneDimensions[0], 2 / sceneDimensions[1], 2 / sceneDimensions[2]));
    _vup = glm::vec3(0, 1, 0);
    _dir = glm::vec3(-1, -1, 0); // _vrp = (0, 0, 0) = (1, 1, 0) + (-1, -1, 0)
    _obs = glm::vec3(1, 1, 0);

    _aspect = 4.0f/ 3.0f;

    calculateViewMatrix();
    calculateProjectionMatrix();
}
Ejemplo n.º 4
0
void PerspectiveCamera::setFarPlane(float farPlane)
{
    m_farPlane = farPlane;
    calculateProjectionMatrix();
}
Ejemplo n.º 5
0
void PerspectiveCamera::setNearPlane(float nearPlane)
{
    m_nearPlane = nearPlane;
    calculateProjectionMatrix();
}
Ejemplo n.º 6
0
void PerspectiveCamera::setAspectRatio(float aspectRatio)
{
    m_aspectRatio = aspectRatio;
    calculateProjectionMatrix();
}
Ejemplo n.º 7
0
void PerspectiveCamera::setFieldOfView(float angle)
{
    m_fieldOfView = angle;
    calculateProjectionMatrix();
}
Ejemplo n.º 8
0
//==============================================================================
Mat4 PerspectiveFrustum::calculateProjectionMatrix() const
{
	Mat4 projectionMat;
	calculateProjectionMatrix(m_fovX, m_fovY, m_near, m_far, projectionMat);
	return projectionMat;
}
Ejemplo n.º 9
0
glm::mat4 Camera::getProjectionMatrix(){
    return calculateProjectionMatrix();
}