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; }

Rispondi quotando