Il y a de cela quelques années, j’avais assisté à une présentation sur l’algèbre géométrique qui m’avait beaucoup intéressée. Voulant en apprendre davantage, je me suis procuré le livre : Geometric Algebra for Computer Science, qui m’avait séduit par son approche pratique, étant un matheux qui préfère voir les choses (cf. Borra pour les GPH qui me lisent en ce moment 😉
Je n’avais jamais eu le temps de le lire, ayant d’autres priorités de lectures pour mes cours, mais maintenant que l’école est définitivement F.I.N.I.E je peux enfin lire des manuels de mathématiques obscures pour le plaisir! (oui ce genre de personne existe pour de vrai). En ce moment je viens de finir le chapitre 2, et j’ai tenté de faire les exercices de programmation, mais comme d’habitude avec tout ce qui touche à du C++, il faut passer des heures à installer toutes les librairies et comprendre comment les «linker» comme du monde.
Sur le site web du livre, on trouve le lien pour installer le sandbox dans la section Downloads. Pour avoir toutes les libraires, il faut installer les packages suivants (tel qu’énumérés sans spécification dans le fichier user_manual.txt) :
sudo dnf install freeglut freeglut-devel antlr antlr-C++
Puis peut-être d’autres choses qui était déjà installé sur mon système, genre OpenGL puis FLTK. Donc avec un terminal, on ouvre le dossier ga_sandbox-1.0.7 puis on écrit :
./configure
make
Ce qui va récursivement construire tous les fichiers C++, partout. Le plus important en fait c’est que la librairie «libgasandbox » se compile sans erreur.
Lorsque le make s’est rendu dans les dossiers des exemples, il m’a sorti l’erreur suivant à l’exemple 1 du premier chapitre (qui est présente dans tous les makefile de tous les exemples…) :
/usr/bin/ld: /usr/lib/gcc/x86_64-redhat-linux/7/../../../../lib64/libglut.so: référence au symbole non défini «glGetFloatv»
//usr/lib64/libGL.so.1: error adding symbols: DSO missing from command line
Après quelques heures de fouilles sur internet et d’essais pathétiques de gossage dans le makefile de l’exemple 1, j’ai finalement compris comment résoudre le problème : la librairie d’OpenGL n’était pas correctement liée. Il faut modifier la ligne 87 du makefile propre à l’exemple (GLUT_LIBS = -lglut
) par : GLUT_LIBS = -lGL -lGLU -lglut
, ce qui rajoute les deux librairies d’OpenGL GL et GLU nécessaires à la compilation du programme. Donc on enregistre le makefile, on exécute la commande make
puis tadam! Ça compile enfin pour générer l’exécutable chap1ex1, que l’on peut ouvrir dans le terminal avec le classique « ./ » : ./chap1ex1
ce qui ouvre la fenêtre suivante avec les objets géométriques donnés en exemple, et la possibilité de faire tourner la vue en 3D.
Maintenant je peux enfin me concentrer à comprendre les maths et devenir un pro des espaces vectoriels à 5 dimensions! 😀