Principe de base : limiter l'interface publique, les fonctions qui n'ont pas besoin d'être membre n'ont pas à l'air. C'est à cause de ce principe qu'on te dit de mettre tes fonctions à l'extérieur de la classe.

Bon, maintenant, je t'ai proposé une version de la fonction orthogonal comme fonction libre, utilisant la fonction libre transpose et la fonction libre id, la fonction orthogonal que tu as proposée étant... fausse. Maintenant, c'est à toi de prendre ce que chacun a dit, décider sur l'architecture que tu veux, et tu modifies ton code en conséquence.