PDA

View Full Version : [Opengl]inversa di matrice


NA01
10-05-2007, 16:40
per affrontare una serie di calcoli moooollltooooo lunghi sto cercando di sfruttare anche il processore della scheda video.
fondamentalmente una parte del problema si risolve invertendo una matrice 4x4 e moltiplicandola per un'altra...

ho provato a vedere quanto ci mette a moltiplicare qualche milione di volte due matrici con multmatrix e ci mette un casino di meno della moltiplicazione implementata a mano...
se ora riuscissi a spiegarli anche che deve invertire matrici (che non hanno nessuna buona caratteristica che mi permetta di invertirle banalmente) il giocone sarebbe fatto e il processore si potrebbe mettere a generare le matrici da usare...

ho cercato un po`, ma non ho trovato nessuna funzione opengl che mi invertisse matrici...
sapreste aiutarmi?

graaaaaazieeeeeee :)

ciao!

NA01
11-05-2007, 09:06
help :D
o una libreria per c++ decetemene velcoe e ben fatta per matrici piccole che sappia invertire una matrice?

ciaaaAAAAAAAAAaaaaaAAAAAaaooOOOOOOoooOOOOOoooooooo

Ziosilvio
11-05-2007, 09:34
Se le matrici da invertire sono solo 4x4, potresti scrivere una funzioncina tu sfruttando la regola di Laplace, oppure usando la diagonalizzazione di Gauss... sempre se la scheda grafica è in grado di eseguire il codice risultante, cosa che mi piacerebbe sapere...

NA01
11-05-2007, 09:47
eh, a saperla usare dovrebbe potersi fare...
a quanto ne so ormai e` una cosa abbastanza usata...
ho trovato dei buoni tutorial in giro, solo che non ho tutto sto tempo :D (sopratutto dato che alla fine non so quanto ne guadagno in termini di tempo e se si puo` effettivamente fare...)
speravo esistesse qualcosa di pronto....

alla fine ho provato le boost ma su matrici piccole sono penosamente lente, e le alternative non sono tantissime...
e poi i calcoli da fare sono tanti, e il tempo e` poco :D
e a peggiorare la situazione per ora l'algoritmo che lo chiama nel caso pessimo ha complessita` N^N, e le ottimizzazioni che posso fare sono su base euristica, nulla di algoritmico.

NA01
11-05-2007, 09:53
qualcuno in giro dice che si perde a fare calcoli su matrici troppo piccole.. aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahhh
:D
ehm... nessuna libreria??? :D

mi sa che me le dovro` scrivere a mano...

ciaaaoooooooooo

Floris
11-05-2007, 11:50
Fino a matrici di dimensione 5 (se non ricordo male) risulta più efficiente applicare la regola di Laplace piuttosto che l'algoritmo di Gauss.
A scrivere la regola di Laplace per una matrice 4x4 non dovrebbe volerci tanto.
Inoltre utilizzando Laplace puoi già verificare, precalcolandoti il determinante, che ti servirà in seguito, se effettivamente l'inversa per tale matrice esiste (risparmiandoti eventuali calcoli inutili!).
P.S.: Cmq

Floris
11-05-2007, 11:51
... ( scusate avevo postato 2 volte!:) )