//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;
}
}
No hay comentarios:
Publicar un comentario