Salve a tutti,
ho un problema: quando assegno dei valori a dei double anche parte di matrici si sovrascrivono.
Riporto il codice che va a sovrascrivere la matrice maT in modo inspiegabile per me.
Potete darmi una mano, sono disperato.
GRAZIE
codice:
\\\\\\\\\\\\\\\\\\\ MAIN \\\\\\\\\\\\\
//Istanzio le classi
CCAD_Elaborazioni Cad;
CUtilityFile FileUtility_src;
//dichiarazioni e inizializzazioni
double X,Y,Z,A_fi,B_teta,C_psi;
X = 0;
Y= 0;
Z = 0;
A_fi = 0;
B_teta = 0;
C_psi = 0;
double maT_base_offset[4][4];
double maT[4][4];
// inizializzo le matrici con una semplice funzione
GeneraMatIdentita(Matrice);
GeneraMatIdentita(maT_base_offset);
//apro file di testo e lo carico in un vettore
...
//
//scorro il vettore e cerco la tiga interessata
for(int indice_linea=0;indice_linea<max_ind_linea_src;indice_linea++)
{
// assegno alla stringa line una riga alla volta del vettore
string line = FileUtility_src.GetLineaString(indice_linea);
cerco in ogni riga del vettore "Base_Offset"
int pos = line.find("Base_Offset = {",0);
if(pos!=string::npos)
{
// trovata la riga: Base_Offset = {X 1, Y 2, Z 3, A 4, B 5, C 6}
//in questo punto la matrice è corretta:
// maT = [ 1 0 0 0
// 0 1 0 0
// 0 0 1 0
// 0 0 0 1 ]
//PROBLEMA>>>>>>>>>>>>>>>>>>>>>>
// estraggo dalla riga i valori della sestina e li metto in double
//(la funzione è riportata sotto)
Cad.EstrazioneDatiRigaDat(line,X, Y, Z, A_fi, B_teta, C_psi);
//la matrice diventa:
// maT = [ 1 0 0 0
// 0 1 0 0
// 0 0 1 6
// 5 4 3 2 ]
//notare la somiglianza dell'ultima riga della matrice con con la linea letta
//PROBLEMA>>>>>>>>>>>>>>>>>>>>
// costruisco la matrice dalla sestina
CostruzioneMatOmogeneaTrasformazione(X, Y, Z, A_fi, B_teta, C_psi, maT_base_offset);
}
}
.......
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//
//Estrae dalla riga del file dat i valori di
//X, Y, Z, A_fi, B_teta, C_psi
//
void CCAD_Elaborazioni::EstrazioneDatiRigaDat(string linea_dat, double &O_X, double &O_Y, double &O_Z, double, &O_A, double &O_B, double &O_C)
{
//questa funzione avrebbe dovuto estrare dei numeri dalla stringa che riceveva e
//restituire dei double, ma l'ho semplificata per evitare errori inutili
O_X = 1;
O_Y = 2;
O_Z = 3;
O_A = 4;
O_B = 5;
O_C = 6;
}