Hola de nuevo!
Mi programa quiere calcular unas llamadas equaciones de colinealidad. Para eso, el programa necesita varios datos, tres de ellos son las cordenadas del centro de proyección (Xo, Yo, Zo). Estos valores se encuentran almacenados en un fichero .txt i el programa tiene que dirigirse al programa, coger las cordenadas del primer centro de proyección y calcular dos funciones (CalculoDeX() y CalculoDeY()). Así sucesivamente hasta obtener la X e Y respectivas a cada centro de proyección del fichero.
Creo que ya tengo solucionado el tema del acceso a un fichero, pero ahora el problema se encuentra en la función que pretende acceder al fichero. El compilador no me reconoce CXo_Yo_Zo() como una función y me dice que esta declarada fuera de la clase y o esta definida. Junto con ella hay dos funciones más que si me las reconoce (CalculoDeX() y CalculoDeY()), qual es la diferencia entre ellas y CXo_Yo_Zo() ?????
-El formato de fichero és del suguiente estilo:
Xo1 Yo1 Zo1
Xo2 Yo2 Zo2
Xo3 Yo3 Zo3
... ... ...
Xon Yon Zon
-Trabajo con clases, os mando los tres ficheros.
-MAIN.CPP:
#include <cstdlib>
#include <iostream>
#include "ccolinealitat.h"
using namespace std;
int main(int argc, char *argv[])
{
CColinealitat popo;
popo.CXo_Yo_Zo ();
{
cout<< popo.CalculDe_x() << endl;
cout<< popo.CalculDe_y() << endl;
}
system("PAUSE");
return EXIT_SUCCESS;
}
-ccolinealitat.h:
#ifndef CCOLINEALITAT_H
#define CCOLINEALITAT_H
class CColinealitat
{
public:
// class constructor
CColinealitat();
// class destructor
~CColinealitat();
double CXo_Yo_Zo();
double CalculDe_x();
double CalculDe_y();
void XTerreny( double X){ m_dX= X; };
double m_dOM, m_dPHI, m_dKP;
double m_dXo, m_dYo, m_dZo;
double m_dFocal;
double m_dx, m_dy;
double m_dRotacio[3][3];
int i,j;
double m_m11, m_m12, m_m13, m_m21, m_m22, m_m23, m_m31, m_m32, m_m33;
double llistaCentreProjeccio [6][3];
private:
double m_dX, m_dY, m_dZ;
};
#endif // CCOLINEALITAT_H
-ccolinealitat.cpp:
#include <stdio.h>
#include <stdlib.h>
#include "ccolinealitat.h" // class's header file
#include <math.h>
// class constructor
CColinealitat::CColinealitat()
{
m_dOM, m_dPHI, m_dKP= 84.32,24.85,75.42;
m_dFocal=153.28;
}
// class destructor
CColinealitat::~CColinealitat()
{
// insert your code here
}
double CColinealitat::CalculDe_x()
{
m_m11=cos(m_dOM)*cos(m_dKP);
m_m12=-cos(m_dPHI)*sin(m_dKP);
m_m13=sin(m_dPHI);
m_m21=cos(m_dOM)*sin(m_dKP)+sin(m_dOM)*sin(m_dPHI) *cos(m_dKP);
m_m22=cos(m_dOM)*cos(m_dKP)-sin(m_dOM)*sin(m_dPHI)*sin(m_dKP);
m_m23=-sin(m_dOM)*cos(m_dPHI);
m_m31=sin(m_dOM)*sin(m_dKP)-cos(m_dOM)*sin(m_dPHI)*cos(m_dKP);
m_m32=sin(m_dOM)*cos(m_dKP)+cos(m_dOM)*sin(m_dPHI) *sin(m_dKP);
m_m33=cos(m_dOM)*cos(m_dPHI);
m_dRotacio[1][1]=m_m11;
m_dRotacio[1][2]=m_m12;
m_dRotacio[1][3]=m_m13;
m_dRotacio[2][1]=m_m21;
m_dRotacio[2][2]=m_m22;
m_dRotacio[2][3]=m_m23;
m_dRotacio[3][1]=m_m31;
m_dRotacio[3][2]=m_m32;
m_dRotacio[3][3]=m_m33;
m_dx= m_dFocal*(m_m11*(m_dX-m_dXo)+m_m12*(m_dY-m_dYo)+m_m13*(m_dZ-m_dZo))/(m_m31*(m_dX-m_dXo)+m_m32*(m_dY-m_dYo)+m_m33*(m_dZ-m_dZo));
return m_dx;
}
double CColinealitat::CalculDe_y()
{
m_m11=cos(m_dOM)*cos(m_dKP);
m_m12=-cos(m_dPHI)*sin(m_dKP);
m_m13=sin(m_dPHI);
m_m21=cos(m_dOM)*sin(m_dKP)+sin(m_dOM)*sin(m_dPHI) *cos(m_dKP);
m_m22=cos(m_dOM)*cos(m_dKP)-sin(m_dOM)*sin(m_dPHI)*sin(m_dKP);
m_m23=-sin(m_dOM)*cos(m_dPHI);
m_m31=sin(m_dOM)*sin(m_dKP)-cos(m_dOM)*sin(m_dPHI)*cos(m_dKP);
m_m32=sin(m_dOM)*cos(m_dKP)+cos(m_dOM)*sin(m_dPHI) *sin(m_dKP);
m_m33=cos(m_dOM)*cos(m_dPHI);
m_dRotacio[1][1]=m_m11;
m_dRotacio[1][2]=m_m12;
m_dRotacio[1][3]=m_m13;
m_dRotacio[2][1]=m_m21;
m_dRotacio[2][2]=m_m22;
m_dRotacio[2][3]=m_m23;
m_dRotacio[3][1]=m_m31;
m_dRotacio[3][2]=m_m32;
m_dRotacio[3][3]=m_m33;
m_dy= m_dFocal*( m_m21*(m_dX-m_dXo)+m_m22*(m_dY-m_dYo)+m_m23*(m_dZ-m_dZo) )/(m_m31*(m_dX-m_dXo)+m_m32*(m_dY-m_dYo)+m_m33*(m_dZ-m_dZo));
return m_dy;
}
double CColinealitat::CXo_Yo_Zo();
{
ifstream inCoordenades [6][3] ("CoordenadesDelCentreProjeccio.txt", ios::in);
if (!inCoordenades)
{
cerr<<"No se puede abrir el fichero"<<endl;
exit(1);
}
for (i=0;i<6;i++){
for(j=0;j<3;j++){
inCoordenades >> llistaCentreProjeccio [i][0]=m_dXo;
inCoordenades >> llistaCentreProjeccio [i][1]=m_dYo;
inCoordenades >> llistaCentreProjeccio [i][2]=m_dZo;
}
}
return m_dXo, m_dYo, m_dZo;
}
Graciaaas a todos!!!