Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/08/2008, 10:49
topa
 
Fecha de Ingreso: agosto-2008
Mensajes: 5
Antigüedad: 15 años, 8 meses
Puntos: 0
Ayuda! Matrices!

Hola a todos, soy nueva en esto y creo que con el mensaje de antes no me he explicado lo suficiente. Allá va otro intento.
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 el problema se encuentra en el acceso al fichero. Como lo puedo resolver??

-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 <fstream>
#include "ccolinealitat.h"
using namespace std;

int main()
{
CColinealitat popo;


void printArray(int inCoordenades [][3]);

cout<<"X= "<< popo.CalculDe_x() << endl;
cout<<"Y= "<< popo.CalculDe_y() << endl;

system("PAUSE");
return EXIT_SUCCESS;
}


-ARCHIVO.CPP (ccolinealitat.cpp):

#include <stdio.h>
#include <stdlib.h>
#include <fstream>
#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;
i=j=0.0;
}

// class destructor
CColinealitat::~CColinealitat()
{
// insert your code here
}
double CColinealitat::CoordCentreProjeccio()
{
ifstream inCoordenades ("CordenadasDelCentroProyeccion.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[i][j]=m_dXo;
inCoordenades[i][j]=m_dYo;
inCoordenades[i][j]=m_dZo;
}
}
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;
}


- ARCHIVO.HPP (ccolinealitat.h):

#ifndef CCOLINEALITAT_H
#define CCOLINEALITAT_H


class CColinealitat
{
public:
// class constructor
CColinealitat();
// class destructor
~CColinealitat();

double CalculDe_x();
double CalculDe_y();
double CColinealitat::CoordCentreProjeccio();
int i,j;
int inCoordenades;
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];
double m_m11, m_m12, m_m13, m_m21, m_m22, m_m23, m_m31, m_m32, m_m33;

private:
double m_dX, m_dY, m_dZ;

};

#endif // CCOLINEALITAT_H




Os agradezco vuestra ayudaa! Muchas gracias!!!!!!!!!!!!!!!!!!!!