29/4/10

Implementación del programa de la cámara

//ARCHIVO main.cpp de la implementacion del programa de transformaciones de matrices para la representación de una imágen//


#include <cstdlib>
#include <iostream>
#include <math.h>
#include "Camara.hpp"
#define PI 3.14159265
using namespace std;

void title_head (){
    cout<<"*********************************************************"<<endl;
    cout<<endl;
    cout<<"*******************C*A*M*A*R*I*T*A***********************"<<endl;
    cout<<endl;
    cout<<"*********************************************************"<<endl;
    cout<<endl;
    cout<<"*********************************************************"<<endl;
    cout<<"********************-----------------**********************"<<endl;
    cout<<"********************|             º |*********************"<<endl;
    cout<<"********************|       o       |*********************"<<endl;
    cout<<"********************|               |*********************"<<endl;
    cout<<"*********************---------------*********************"<<endl;
    cout<<"*********************************************************"<<endl;

    cout<<"*********************************************************"<<endl;
    cout<<"              Joanna Dulima Ochoa Mancipe                "<<endl;
    cout<<"                  COD.:258050                "<<endl;
    cout<<"   Departamento de Ingeniería de Sistemas e Industrial   "<<endl;
    cout<<"*********************************************************"<<endl;
    }
int main(int argc, char *argv[])
{
        double IMAGEN[3][0];
        double m_translacion[3][0];
        double m_rotacion[3][3];
        double m_perspectiva[3][3];
        double centrocamara[2];
        double centroobjeto[3];
        double xd;
        double yd;
        double zd;
        int k;
        char centro[3]={'x','y','z'};
title_head();
system ("pause");
system ("cls");
cout<<endl;
cout<<"Programa que implementa las transformaciones necesarias para la "<<endl;
cout<<"       representación de la imagen de una camara"<<endl;
cout<<endl;
cout<<"Ingreso de centros de camara y objeto"<<endl;
cout<<"Ingrese las coordenadas el centro del objeto a enfocar: "<<endl;
//Camara= new Camara cam;
for (int j=0;j<3;j++)
{
    cout<<"Coordenada "<< centro[j] <<" = ";
    cin>>centroobjeto[j];
}
cout<<"Ingrese las coordenadas del centro de la camara: "<<endl;
for (int h=0;h<3;h++)
{
    cout<<"Coordenada "<<centro [h]<<"= ";
    cin>>centrocamara[h];
}
//matriztranslacion();
    system("PAUSE");
    return 0;
}

CLASE CAMARA

//ARCHIVO Camara.hpp de la implementacion del programa de transformaciones de matrices para la representación de una imágen//
#include <iostream>
#include <math.h>
#define PI 3.14159265
using namespace std;

class Camara
{
    private:
        double imagen[3];
        double m_translacion[3];
        double m_rotacion[3][3];
        double m_perspectiva[3][3];
        double centro_camara[2];
        double centro_objeto[2];
        int k;
        double distanciacentros;
        double catad;
        double catop;
        double teta, beta, alfa;
        double mrotmtrans[3];
    public:
        Camara(){
            for(int h=0;h<4;h++)
            {
                imagen[h]= 0;
                m_translacion[h]=0;
            }
            for(int h=0;h<4;h++)
            {
                for(int k=0;k<4;k++)
                {
                double m_rotacion[h][k];
                double m_perspectiva[h][k];
                }
            }
             for(int l=0;l<2;l++)
             {
/*                double centro_camara[l]={0};
                double centro_objeto[l]={0};
             }
             k=1;*/
        }
        public:
        void matriztranslacion ();
        void matrizrotacion ();
        void matrizpespectiva ();
        void mrotacionportranslacion ();
        void ImagenCamara ();
        double Teta();
        double Beta ();
        double Alfa ();
};
void matriztranslacion (double centro_camara, double centro_objeto, double m_translacion){
for (int k=0;k<3;k++)
{
    m_translacion[k]=centro_camara[k]-centro_objeto[k];
}
    cout<<endl;
    cout<<"LA MATRIZ DE TRANSLACION ES: "<<endl;
    cout<<endl;
    for (int j=0;j<4;j++)
    {
        for (int k=0;k<4;k++)
        {
            cout<<m_translacion<<" ";
        }
        cout<<endl;
    }
}
void matrizrotacion (double m_rotacion, double teta, double beta, double alfa){
    m_rotacion [0][0]=cos(teta)*cos(beta);
    m_rotacion [0][1]=sen(teta);
    m_rotacion [0][2]=-sen(beta)*cos(teta);
    m_rotacion [1][0]=-sen(teta)*cos(beta)*cos(alfa)+sen(alfa)*sen(beta);
    m_rotacion [1][1]=cos(alfa)*cos(teta);
    m_rotacion [1][2]=sen(alfa)*sen(teta)*sen(beta);
    m_rotacion [2][0]=sen(teta)*cos(beta)*sen(alfa)+cos(alfa)*sen(beta);
    m_rotacion [2][1]=-sen(alfa)*cos(teta);
    m_rotacion [2][2]=cos(alfa)*cos(beta)-sen(alfa)*sen(teta)*sen(beta);
    m_rotacion [3][3]=1;
    for (int d=0;d<4;d++)
    {
        m_rotacion [d][0]=0;
        m_rotacion [3][d]=0;
    }
    cout<<endl;
    cout<<"LA MATRIZ DE ROTACION ES: "<<endl;
    cout<<endl;
    for (int j=0;j<4;j++)
    {
        for (int k=0;k<4;k++)
        {
            cout<<m_rotacion<<" ";
        }
        cout<<endl;
    }
    }
void matrizperspectiva(double m_perspectiva, double lambda) {
    for (int g=0;g<4;g++)
    {
        for (int q=0;q<4;q++)
        {
            if(g==3 && q==2)
            {
            m_perspectiva=-1/Camara.lambda;
            }
            else if (g=q)
            {
            m_perspectiva=1;
            }else
            {
            m_perspectiva=0;
            }
        }
    }
    cout<<endl;
    cout<<"LA MATRIZ DE PERSPECTIVA ES: "<<endl;
    cout<<endl;
    for (int j=0;j<4;j++)
    {
        for (int k=0;k<4;k++)
        {
            cout<<m_perspectiva<<" ";
        }
        cout<<endl;
    }
    }

void mrotacionpormtranslacion (double m_translacion, double m_rotacion){
for (int m=0;m<4;m++)
{
mrotmtrans[0]=(m_translacion[0])*cos(teta)*cos(beta)+(m_trasnlacion[1])*sen(teta)-(mtranslacion[2])*sen(teta)*cos(beta);
mrotmtrans[1]=(m_translacion[0])*sen(alfa)*sen(beta)-sen(teta)*cos(beta)*cos(alfa)+(m_trasnlacion[1])*cos(alfa)*cos(teta)+(mtranslacion[2])*cos(alfa)*sen(teta)*sen(beta)+sen(alfa)*cos(beta);
mrotmtrans[2]=(m_translacion[0])*cos(alfa)*sen(beta)+cos(teta)*sen(alfa)+(m_trasnlacion[1])(-sen(alfa)*cos(teta))+(m_trasnlacion[2])(cos(alfa)*cos(beta)-sen(alfa)*sen(teta)*sen(beta));
mrotmtrans[3]=1;
}

}